创建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
A 正确:创建 Outline 后,执行去掉 Hint 的 SQL,再从 GV$OB_PLAN_CACHE_PLAN_STATS 视图中查看 OUTLINE_ID,若该字段显示了你创建的 Outline ID,说明 Outline 已成功生效。
其余选项错误
B 错误:仅通过 EXPLAIN 看执行计划是否符合预期,无法 100% 确认 Outline 是否生效,因为优化器也可能自动生成相同的执行计划。
C 错误:Outline 是针对 “去掉 Hint 的 SQL” 生效的,执行绑定了 Hint 的 SQL 时,不会走 Outline 逻辑,因此无法验证。
D 错误:DBA_OB_OUTLINES 视图中状态为 VALID 仅表示 Outline 对象本身合法,不代表 SQL 执行时一定会被使用(比如匹配不上、被其他规则覆盖)。