2020-11-21 14:00开始,启动VMware虚拟机(WIN2003+Oracle10+NC56),在客户端连做了5个采购订单、到货、采购入库、单品核价,每个订单到货数量120个,带批次管理的。只是单机使用竟然出现了ORA-01000超出打开游标的最大数错误!!!等了几分钟再操作,又可以了。
上网查了一下ORACLE的游标问题排查方法:
1、检查数据的游标数(在sqlplus下):
SQL> show parameter open_cursors;
我虚拟机里是300;可能有点小了。
2. 获取打开的游标数。
1 /* Formatted on 2020/11/22 09:14:56 (QP5 v5.326) */ 2 SELECT s.USERNAME, 3 S.sid, 4 s.SERIAL#, 5 p.SPID, 6 osuser, 7 machine, 8 COUNT (*) num_curs 9 FROM v$open_cursor o, v$session s, v$process p 10 WHERE o.sid = s.sid AND p.ADDR = s.PADDR 11 GROUP BY s.USERNAME, 12 S.sid, 13 s.SERIAL#, 14 p.SPID, 15 osuser, 16 machine 17 ORDER BY num_curs DESC;
检查发现用户giant下有一个sid使用的游标特别多;
3、使用在以上查询结果中找到的 SID ,查询打开最多游标的用户,看看在干什么!运行下面的查询(其中o.sid从上面的查询得到):
/* Formatted on 2020/11/22 09:16:38 (QP5 v5.326) */ SELECT o.USER_NAME, q.sql_text FROM v$open_cursor o, v$sql q WHERE q.hash_value = o.hash_value AND o.sid = 138;
把客户端退了,然后什么没有操作,半个小时后游标开的还是那么多!!!对NC比较无语。
另记:
2020-11-22,再做一个测试,因为我的游标是300,直接设置一次性到货数360,一个采购入库操作(先自动取数OK,保存OK,签字时,就出下面错误了!!!)
不太清楚是NC的BUG,还是因为游标设置的问题?