构建sql执行计划历史记录

时间:2015-06-08 20:32:03

标签: oracle oracle11g sql-execution-plan

使用Oracle 11.2。

是否有标准方法来构建执行计划历史记录,例如执行计划可能如何更改时间?我想跟踪dba_hist_sql_plan中的变化(计划在我们的环境中保存了10天)。但是所有计划都存储在dba_hist_sql_plan中还是依赖于awr配置?或者是否有一种标准的方法(可能没有dba_hist_sql_plan)。 我对甲骨文很陌生,所以每个想法都受到欢迎。

1 个答案:

答案 0 :(得分:1)

并非所有计划都存储在AWR中。但是,一般而言,您感兴趣的所有计划都是。很少有人对跟踪特定快照窗口中不占用大量资源的查询的查询计划的更改感兴趣。他们通常只对顶级资源消费者的行为感兴趣。您可以调整AWR使用每个快照捕获的前N个查询中的N.

如果您正在查看单个数据库,最简单的选择是在您可能需要数据时将数据保留在AWR中。如果您希望数据超过10天,最简单的选择是提高AWR保留率。 AWR数据不占用太多磁盘空间,因此通常更容易让Oracle保留更多数据而不是自己编写任何内容。

有时,人们会配置从许多单个数据库中获取AWR数据并将其写入单个中央数据库的复制过程。这需要大量的设置,但它可以更容易地跨数据库比较信息(比较dev / test / staging / production环境之间的数据或比较多个客户端特定的实例)。