oracle数据库11gR2及以上版本, 以下哪些内置函数可以得到sql_id的历史执行计划(即AWR中的执行计划)?
A dbms_xplan.display_plan
B dbms_xplan.display_cursor
C dbms_xplan.display
D dbms_xplan.display_awr
今天答题闯关的时候遇到了这道题,它的预设答案是A,C,D。
但是在查找相关资料后,我认为只有D才符合题目要求。
dbms_xplan.display_plan:
- 这个函数主要用于显示PLAN_TABLE中的执行计划,但它并不直接关联到AWR(Automatic Workload Repository)中的历史执行计划。PLAN_TABLE通常用于存储通过EXPLAIN PLAN命令生成的执行计划,而非AWR中的历史数据。
dbms_xplan.display_cursor:
- 用于显示游标缓存中的执行计划,可以包括当前游标或历史游标的执行计划,但不直接访问AWR中的数据。
dbms_xplan.display:
- 通用的计划显示函数,可以显示PLAN_TABLE、游标缓存、AWR等来源的计划,但需要正确指定源。类似于display_plan,这个函数也主要用于显示PLAN_TABLE中的执行计划,而不是AWR中的历史数据。
dbms_xplan.display_awr:
- 这个函数专门用于从AWR报告中检索和显示特定SQL_ID的执行计划。它允许查看过去某个时间段内SQL语句的执行计划,对于性能调优和历史分析非常有用。