background image
4. 常见报错
如:在 Oracle 数据库中,会报如下信息:
Caused by: ORA-01000: 超出打开游标的最大数
Oracle 系统中,以参数 open_cursors 来限制打开的游标数,当打开游标超过这个数的
时候就会报这个错,提示超出打开游标的最大数。游标个数理论上没有上限,也不是越大越
好。
有这样一个测试显示:当这个 open_cursor 数值大了一定程度之后,会使得内存缩水,
缩水的表现就是连接数减少。
如上结论可具体测试,其测试结果如下:
分别设置为以下值,测试数据库的连接,在同样的内存配置下,与用户可以连接的数(独
占模式)有很大的区别。
open_cursors=6000000000 -------------连接数 45
open_cursors=300 ---------------------连接数超过 500.
由以上测试可知,当 open_cursors 扩大 2000 万倍之后连接数变为原来的十分之一,
因此 open_cursors 的大小对连接数的影响不大,只要不要在千万级上增加,一般的几千几
万跟几十,对连接数的影响甚微。
4.1 解决方案
按照游标的正规写法,打开游标使用完之后,就需关闭游标。
应避免游标打开过大,其可通过修改 open_cursors 大小,使其尽可能大。
4.2 检查 open_cursors 数值及修改方法