我最近将一组Oracle SQL查询移到了一个包含表函数的包中,我将返回数据流水线。
然而,我开始观察不寻常的事情。 V $ SQL统计信息(如buffer_gets,fetches,cpu_time,execution_time等)已经开始显示累积数量,并且每次执行查询时它们都会不断提高。
这是通常的行为吗?
答案 0 :(得分:2)
这是预期的行为。
涉及很多共享资源。如果您的应用程序在池中具有十几个数据库连接,所有这些都在执行相同类型的工作,那么您可以拥有同时从其中获取多个用户的SQL(例如,连接1在连接2时获取ABC的发票)正在为XYZ收发票)。 V $ SQL(或RAC环境中的GV $ SQL)将显示大多数详细信息的累计总数(USERS_EXECUTING之类的内容将是所有会话的当前值)。
它们才会被重置的唯一时间是SQL老化出共享区域的时间,通常是在一段时间内没有使用它,而另一个SQL需要资源,或者数据库关闭等罕见事件。