ITPub博客

首页 > 数据库 > Oracle > 一次ORA-01000游标异常故障处理

一次ORA-01000游标异常故障处理

原创 Oracle 作者:兰在晨 时间:2015-09-22 10:03:26 0 删除 编辑
某日上午,公司业务组过来说前台页面提示出游标无法打开的错误。于是产看oracle alert日志,看到很多ORA-01000的错误信息。于是赶紧连上数据库执行了一下查询操作:
select 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
order by 1 desc ;
查询结果表明有5个会话的cursor已经达到了500,于是查看系统cursor相关参数的设置
SQL> show parameter cursor
NAME                                 TYPE        VALUE
------------------------------------ ----------- --------
cursor_sharing                       string      EXACT
cursor_space_for_time                boolean     FALSE
open_cursors                         integer     500
session_cached_cursors               integer     50
最初简单的认为open_cursors参数设置太小于是将该参数进行了修改:
SQL> alter system set open_cursors=1000 scope=both;
System altered.
SQL> show parameter cursor
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------
cursor_sharing                       string      EXACT
cursor_space_for_time                boolean     FALSE
open_cursors                         integer     1000
session_cached_cursors               integer     50
但是很快1个多小时之后同样的问题又出现了,在alert日志中很快又出现了ora-01000错误。由于业务系统破一直很稳定,很显然是由于cursors
没有正常关闭导致。于是询问业务人员得知昨天夜里进行过程序发布,但是这次发布在多台db server上都做了。其他db server 均没有出现这个情况。
首先这个问题应该很明确是由于cursor没有正常关闭造成,应该找出导致游标没有正常关闭的sql语句。于是对数据库在发生ora-01000到现在的时间
生成了一份AWR。直接查看topsql ordered byt parse calls部分

查看这条sql的文本看到如下信息:
DECLARE
    IP varchar2(15);
    qry varchar2(4000);
    v_theCursor   INTEGER DEFAULT dbms_sql.open_cursor;
    v_columnValue VARCHAR2(4000);
    v_status      INTEGER;
    v_descTbl dbms_sql.desc_tab;
其余部分省略。。。。


到目前来看问题已经很明确由于开发的一个trigger的代码中显示调用了open_cursor却没有关闭造成ora-01000的原因。然后禁用该trigger问题ora-01000没有继续出现。
仅此记录。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26723566/viewspace-1805857/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2012-06-04

  • 博文量
    58
  • 访问量
    222328