• 探查“ORA-01000:超出最多允许打开的游标数”


    摘录自 http://blog.csdn.net/sunkk/article/details/3936759

    oracle 使用 OPEN_CURSORS 参数指定一个会话一次最多可以打开的游标的数量。超过此数量时,Oracle 将报告 orA-01000 错误。

    应用程序可以抛出此异常,比如记录日志,打印至界面,提示用户。

    采用如下三步可以排查清楚原因:

    1、show parameter open_cursors; 

    oracle 使用 init.ora 中的初始化参数 OPEN_CURSORS 指定一个会话一次最多可以拥有的游标数。缺省值为 300。

    2、SQL> select o.sid, osuser, machine, count(*) num_curs,s.program
      from v$open_cursor o, v$session s
      where user_name = 'SCOTT' and o.sid=s.sid
      group by o.sid, osuser, machine, s.program
      order by num_curs desc;

    可获知哪些应用程序打开了游标。

    3、SQL> select q.sql_text
      from v$open_cursor o, v$sql q
      where q.hash_value=o.hash_value and o.sid = 217;

    其中o.sid可以从第二步中获得,填写自己关注的应用程序的sid。

    同一个应用程序,如果有两个会话,则有两个sid。

    通过此步可获知是哪个应用程序的那一个sql语句打开了游标,未关闭游标。

    结果将显示正在连接上执行的查询。它提供了一个入手点,让您可以反向跟踪到打开游标的来源。

  • 相关阅读:
    浏览器为何禁止跨域(同源策略)
    viewPager
    How to remove focus without setting focus to another control?
    android ANR
    解决Ubuntu系统中文乱码显示问题
    USB 3.0规范中译本 第6章 物理层
    库&框架-----CDN网络引用总结
    18_如何排错
    17_今日回顾
    16_sql注入的原理及处理
  • 原文地址:https://www.cnblogs.com/chncongblog/p/3245728.html
Copyright © 2020-2023  润新知