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

Oracle:如何确定是否有事务挂起?

发布时间:2020-12-12 14:07:00 所属栏目:百科 来源:网络整理
导读:我正在寻找一个方法,以查明是否有不受欢迎的INSERT,UPDATE或DELETE语句在当前会话。一种方法是使用当前sid检查v $ lock,但这需要对v $ lock的读取访问,如果DBA不想授予它,这是一个问题。任何其他方式(除了跟踪应用程序发出的所有数据库命令之外)? 您可
我正在寻找一个方法,以查明是否有不受欢迎的INSERT,UPDATE或DELETE语句在当前会话。一种方法是使用当前sid检查v $ lock,但这需要对v $ lock的读取访问,如果DBA不想授予它,这是一个问题。任何其他方式(除了跟踪应用程序发出的所有数据库命令之外)? 您可以检查您的会话是否在V $ TRANSACTION中有一行(显然,这需要对此视图的读取权限):
SQL> SELECT COUNT(*)
  2    FROM v$transaction t,v$session s,v$mystat m
  3   WHERE t.ses_addr = s.saddr
  4     AND s.sid = m.sid
  5     AND ROWNUM = 1;

  COUNT(*)
----------
         0

SQL> insert into a values (1);

1 row inserted

SQL> SELECT COUNT(*)
  2    FROM v$transaction t,v$mystat m
  3   WHERE t.ses_addr = s.saddr
  4     AND s.sid = m.sid
  5     AND ROWNUM = 1;

  COUNT(*)
----------
         1

SQL> commit;

Commit complete

SQL> SELECT COUNT(*)
  2    FROM v$transaction t,v$mystat m
  3   WHERE t.ses_addr = s.saddr
  4     AND s.sid = m.sid
  5     AND ROWNUM = 1;

  COUNT(*)
----------
         0

(编辑:李大同)

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

    推荐文章
      热点阅读