【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
1.生产环境 企业版3.2.4
2.问题:
生产上,报open_cursors超过数量限制
功能:使用prestatement批量插入数据
语句:
for (i=1;i<=100;i++)
insert into t1;
batchsave()
3.问题点
同时打开的游标只有一个,为什么会报超过游标数。
查询ob文档.open_cursors 是session打开的游标、ps句柄,但不清楚是二者之和,还是二者是同样的设定值。
官方文档:
https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000442612?back=kb
当单 session 上 PS 句柄数量超过 open_cursors
时,OceanBase 数据库日志中会有 WARN 级别报错:exceeds the maximum number of ps handles allowed to open on the session(ret=-5930......)
。(由于借用了 open_cursors
控制,所以错误码还是 -5930:maximum open cursors exceeded。)
注意
-
open_cursors
不是单 session 上cursor
与PS
句柄数量总和的上限,
cursor与
PS 句柄的数量上限是各自独立统计、控制的(如 open_cursors=100,则单 session 上
cursor与
PS句柄`各自都可打开100个)。 - open_cursors = 0 代表不设限制,可以作为一种应急的手段。
- 升级上来的集群,
open_cursors
将保持原来的设置,因此请在升级前评估集群单 session 上的PS
量和cursor
量。