加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ORA-01000:超出打开游标的最大数问题的分析和解决

(2019-06-29 11:55:15)
标签:

open_cursors

ora-01000

游标

spfile

scope

分类: 数据库
1. 异常日志
程序日志出现异常信息:java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01000: 超出打开游标的最大数
ORA-00604: 递归 SQL 级别 1 出现错误
ORA-01000: 超出打开游标的最大数
2. 查看参数open_cursors和session_cached_cursor
 show parameter open_cursors;
 show parameter session_cached_cursors;
3. 查看是否需要调整参数
--查看最大使用数量
SELECT MAX(A.VALUE) AS HIGHEST_OPEN_CUR, P.VALUE AS MAX_OPEN_CUR
FROM V$SESSTAT A, V$STATNAME B, V$PARAMETER P
WHERE A.STATISTIC# = B.STATISTIC#
AND B.NAME = 'opened cursors current'
AND P.NAME = 'open_cursors'
GROUP BY P.VALUE;
--查看使用率
SELECT 'session_cached_cursors' PARAMETER,
        LPAD(VALUE, 5) VALUE,
        DECODE(VALUE, 0, ' n/a', TO_CHAR(100 * USED / VALUE, '990') || '%') USAGE
    FROM (SELECT MAX(S.VALUE) USED
           FROM V$STATNAME N, V$SESSTAT S
          WHERE N.NAME = 'session cursor cache count'
             AND S.STATISTIC# = N.STATISTIC#),
        (SELECT VALUE FROM V$PARAMETER WHERE NAME = 'session_cached_cursors')
  UNION ALL
  SELECT 'open_cursors',
         LPAD(VALUE, 5),
         TO_CHAR(100 * USED / VALUE, '990') || '%'
    FROM (SELECT MAX(SUM(S.VALUE)) USED
            FROM V$STATNAME N, V$SESSTAT S
           WHERE N.NAME IN
                 ('opened cursors current', 'session cursor cache count')
             AND S.STATISTIC# = N.STATISTIC#
           GROUP BY S.SID),
         (SELECT VALUE FROM V$PARAMETER WHERE NAME = 'open_cursors');
session_cached_cursors使用率100%时可调大,open_cursors使用率接近100%可调大
4. 调整参数
 alter system set open_cursors=1000 scope=both;--
 alter system set session_cached_cursors=100 scope=spfile;
5. 关于scope
  scope=both
  scope=spfile
  Oracle spfile就是动态参数文件,里面设置了Oracle 的各种参数。所谓的动态,就是说你可以在不关闭数据库的情况下,更改数据库参数,记录在spfile里面。更改参数的时候,有3种scope选项,scope就是范围。
  scope=spfile 仅仅更改spfile里面的记载,不更改内存,也就是不立即生效,而是等下次数据库启动生效,有一些参数只允许用这种方法更改。
  scope=memory 仅仅更改内存,不改spfile。也就是下次启动就失效了
  scope=both 内存和spfile都更改,不指定scope参数,等同于scope=both。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有