执行计划未缓存的原因有哪些,如何定位

【 使用环境 】生产环境
【 OB or 其他组件 】
【 使用版本 】 V3.2.3
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【问题现象及影响】

想知道OB中sql的执行计划未缓存的原因,如果定位

【附件】

1 个赞

计划缓存暂不支持的场景
执行计划所占内存超过 20 MB 时,不会加入计划缓存。
如果该计划为分布式执行计划且涉及多个表,不会加入计划缓存。

2 个赞

执行计划相关视图
(G)V$OB_PLAN_CACHE_STAT

记录每个计划缓存的状态,每个计划缓存在该视图中有一条记录。

(G)V$OB_PLAN_CACHE_PLAN_STAT

记录计划缓存中所有执行计划的具体信息及每个计划总的执行统计信息。

(G)V$OB_PLAN_CACHE_PLAN_EXPLAIN

记录某条 SQL 在计划缓存中的执行计划。

1 个赞

计划缓存的使用控制
计划缓存可以使用系统变量及 Hint 实现使用控制。

系统变量控制
当 ob_enable_plan_cache 设置为 TURE 时,表示 SQL 请求可以使用计划缓存;设置为 FALSE 时,表示 SQL 请求不使用计划缓存。默认为 TURE。此系统变量可被设置为 Session 级别或者 Global 级别。

Hint 控制
使用 Hint 语句 /+USE_PLAN_CACHE(NONE)/ 表示不使用计划缓存。
使用 Hint 语句 /+USE_PLAN_CACHE(DEFAULT)/ 表示使用计划缓存。

(G)V$PLAN_CACHE_STAT
(G)V$PLAN_CACHE_PLAN_STAT
(G)V$PLAN_CACHE_PLAN_EXPLAIN
视图名应该是没有ob的前缀

4.0版本是有OB前缀得,3.0版本没有

2 个赞