创建Outline后,如何判断Outline是否生效?
A. 执行去掉Hint的SQL,从系统视图GV$OB_PLAN_CACHE_PLAN_STATS中查看OUTLINE_ID
B. 对去掉Hint的SQL执行EXPLAIN,如果显示的执行计划符合预期
C. 执行绑定的SQL,从Plan Cache中判断SQL是否通过绑定的Outline生成了新执行计划
D. 查询DBA_OB_OUTLINES视图,如果状态为VALID则说明生效
创建Outline后,如何判断Outline是否生效?
A. 执行去掉Hint的SQL,从系统视图GV$OB_PLAN_CACHE_PLAN_STATS中查看OUTLINE_ID
B. 对去掉Hint的SQL执行EXPLAIN,如果显示的执行计划符合预期
C. 执行绑定的SQL,从Plan Cache中判断SQL是否通过绑定的Outline生成了新执行计划
D. 查询DBA_OB_OUTLINES视图,如果状态为VALID则说明生效
答案:A B C
解析:这三个都是验证 Outline 生效的标准方法。
D 错误
DBA_OB_OUTLINES 中 STATUS=VALID 只表示Outline 创建成功、状态合法,不代表已经被 SQL 命中生效。
很多 Outline 状态是 VALID,但从未被任何 SQL 使用。
答案:A B C
答案:A B C
创建Outline后,可以通过以下几种方法判断Outline是否生效:
A. 执行去掉Hint的SQL,从系统视图GV$OB_PLAN_CACHE_PLAN_STATS中查看OUTLINE_ID,如果存在对应的OUTLINE_ID,说明Outline已生效。
B. 对去掉Hint的SQL执行EXPLAIN,如果显示的执行计划符合预期,也说明Outline生效。
C. 执行绑定的SQL,从Plan Cache中判断SQL是否通过绑定的Outline生成了新执行计划,如果生成的新计划与绑定的Outline一致,说明Outline生效。
D. 查询DBA_OB_OUTLINES视图,如果状态为VALID则说明Outline生效。
详情请参考:
答案选什么?