我怎么能告诉我有未提交的查询?

时间:2014-04-10 09:21:26

标签: oracle oracle-sqldeveloper

SQL Developer需要单击“提交”按钮来验证我的查询。我的问题是我已经习惯了5年的自动提交(糟糕,我知道)并且我很难记住提交然后1)想知道为什么数据不会改变,2)最终锁定表因为未完成的交易。

是否有任何迹象表明某些未经通讯的内容仍然?

我更愿意关注UI反馈,如果有的话。

2 个答案:

答案 0 :(得分:1)

试试这个:

select s.sid
      ,s.serial#
      ,s.username
      ,s.machine
      ,s.status
      ,s.lockwait
      ,t.used_ublk
      ,t.used_urec
      ,t.start_time
from v$transaction t
inner join v$session s on t.addr = s.taddr;

或者只是这个:

SELECT * FROM V$TRANSACTION WHERE STATUS='ACTIVE';

如果你有会话ID,那么你可以试试这个:

SELECT  *
FROM    v$session x
WHERE   x.AUDSID = userenv('yoursessionid')
    AND x.TADDR IS NOT NULL

答案 1 :(得分:1)

查看会话仍保持活动事务的方法之一是使用dbms_transaction Oracle包:

SQL> select dbms_transaction.local_transaction_id from dual;

LOCAL_TRANSACTION_ID                                                            
--------------------------------------------------------------------------------


SQL> update t set x = x;

3 rows updated.

SQL> select dbms_transaction.local_transaction_id from dual;

LOCAL_TRANSACTION_ID                                                            
--------------------------------------------------------------------------------
9.9.460109