问题描述
SQL PL 执行报错。
maximum open cursors exceeded。
问题原因
租户级配置项 open_cursors 控制每个 session 可以打开的 cursor 数量。
在 OceanBase 数据库 V3.2.4 版本之前,
open_cursors只包含打开的 cursor,open_cursors不包含打开的 PS(prepare statement)个数。在 OceanBase 数据库 V3.2.4 版本,
open_cursors还包含打开的 PS(prepare statement)个数。
适用版本
OceanBase 数据库 V2.x 和 V3.x 版本。
解决方法
分析业务代码,确认是否存在长会话情况下,未正常关闭 ps 或 ps cursor 的情况。
可以通过以下 SQL 来查询当前系统中 session 的 sql open cursor 个数。
obclient > select * from gv$sesstat where CON_ID='1003' and `STATISTIC#` ='113' and value >0;