加入收藏 | 设为首页 | 会员中心 | 我要投稿 东莞站长网 (https://www.0769zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

oracle – 麻烦射击ora-29471

发布时间:2021-04-01 23:50:51 所属栏目:站长百科 来源:网络整理
导读:某些会话导致ORA-29471,因为dbms_sql无法用于这些会话.我们在应用程序中遇到此错误的记录很少. 如何解决这个问题? 我们如何识别特定会话无法访问DBMS_SQL?我们在会话级别有任何属性/标志吗? 下面的链接提供了一种在本地重现此问题的方法. Reproduce 解决

某些会话导致ORA-29471,因为dbms_sql无法用于这些会话.我们在应用程序中遇到此错误的记录很少.

如何解决这个问题?
我们如何识别特定会话无法访问DBMS_SQL?我们在会话级别有任何属性/标志吗?

下面的链接提供了一种在本地重现此问题的方法.
Reproduce

解决方法

错误发生在运行时.你可能无法猜测它会在它发生之前发生.也许您的解决方案是使用要打开dbms_sql.is_open(c_id)的游标ID进行单个块检查.

但如果这是你正在寻找的,这里是如何找到打开的游标列表:

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'
;

您还可以访问v $open_cursor来计算它们:

SELECT *
  FROM v$open_cursor oc,v$session s
 WHERE oc.sid = s.sid
order by 3,2;

希望这可以帮助您调整一些东西来检查是否使用了预期的光标.

(编辑:东莞站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!