本期将为大家分享“ORA-6544 [pevm_peruws_callback-1] [1000]”报错的问题解决方案。
关键字1:ORA-01000
关键字2:maximum open
cursors exceeded
关键字3:ORA-6544 [pevm_peruws_callback-1] [1000]
open_cursors动态参数限制每个会话最大的游标数。数据库alert告警日志会出现“ORA-6544 [pevm_peruws_callback-1] [1000]”的报错信息,相关的调用堆栈以“pevm_peruws_callback”结尾,显示内部错误[1000]。由于达到open_cursors最大值限制而生成ORA-6544 错误,查看对应的错误定义:
$ oerr ORA 100001000, 00000, "maximum open cursors exceeded"
问题排查
查找特定会话已打开最大游标数SELECT max(a.value) as highest_open_cur,p.value as max_open_curFROM v$sesstat a, v$statname b, v$parameter pWHERE a.statistic# = b.statistic#and b.name = 'opened cursors current'and p.name= 'open_cursors'group by p.value;查找哪些会话打开的游标数最多,导致ORA-01000。col username for a30select a.value, s.username, s.sid, s.serial# from v$sesstat a, v$statname b, v$session s where a.statistic# = b.statistic#and s.sid=a.sid and b.name = 'opened cursors current'and s.username is not null and a.value>50;查找哪些SQL语句占用游标数select sid ,sql_text, user_name, sql_id,count(*) as "OPEN CURSORS"from v$open_cursorwhere sid in (177)group by sid ,sql_text, user_name,sql_id;SELECT s.machine, oc.user_name, oc.sql_text,count(1)FROM v$open_cursor oc,v$session sWHERE oc.sid = s.sid and user_name != 'SYS'GROUP BY user_name,sql_text, machineHAVING COUNT(1) > 5ORDER BY count(1) DESC;
SQL> show parameter open_cursorSQL> alter system set open_cursors = 1000 scope=both;
文章转载自数据库运维之道,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




