sql 留在 V$SQLAREA 的标准是什么?

Mel*_*ara 2 oracle-10g

我需要从 SQL 结果中获取详细信息,但是在运行 SQL 5 分钟后,它不再在v$sql和下V$sqlarea。Oracle 在这些视图中保留查询的标准是什么?

Mat*_*Mat 6

v$sql并且v$sqlarea是对库缓存中 SQL 区域的视图(它是共享池的一部分,在 SGA 中)。

您在这些视图中看到的是缓存中的解析/“编译”语句。当一条新语句出现时,Oracle 会检查它是否已经在该缓存中。如果是,它会重新使用它(称为软解析)。(请参阅SQL 共享标准。)如果没有,它必须进行完整解析并在缓存中找到空间来存储它(硬解析)。如果缓存中没有剩余空间,则旧语句将过时。

语句在缓存中停留的时间取决于缓存的大小以及数据库的使用方式。如果您有“很少”不同的查询并在任何地方使用绑定变量,并且有足够大的库缓存,那么在“预热”之后它应该大部分是静态的。
如果您根本不使用绑定并且有许多不同的查询,或者只是有一个非常小的库缓存,它会非常快地回收。

有关更多详细信息,请参阅调优指南的内存配置和使用部分中的配置和使用共享池和大池,尤其是库缓存概念和以下部分。