首批通过分布式安全可靠测评,为关键业务系统打造
匿名块 LOOP 调用硬解析导致业务批处理积压
更新时间:2026-05-15 09:06
适用版本
OceanBase 数据库 V2.x、V3.x 版本。
问题现象
匿名块子 SQL 中存在 LOOP 调用导致业务表内存库同步物理库积压。
问题原因
比较匿名块执行总耗时和函数调用耗时发现存在较大差距,get_plan_cache 占用大量耗时时间。

原生 Oracle 数据库中匿名块函数每次调用 LOOP 都会复用匿名块执行计划,而 OceanBase 数据库 Oracle 模式中匿名块函数每次调用 LOOP 都会触发一次匿名块硬解析,导致 get_plan_cache 过程占用大量耗时。
解决方法
通过修改匿名块为存储过程进行规避。