Oracle 如何判断我有未限制的查询?

Oracle 如何判断我有未限制的查询?,oracle,oracle-sqldeveloper,Oracle,Oracle Sqldeveloper,到目前为止,SQL Developer需要单击“提交”按钮来验证我的查询。我的问题是,我已经习惯了5年的自动提交(糟糕,我知道),我很难记住提交,然后1)想知道为什么数据不会更改,2)因为未完成的事务而锁定表 是否有任何迹象表明UI中仍然存在未限制的内容 如果有任何UI反馈,我更愿意关注它。试试以下方法: select s.sid ,s.serial# ,s.username ,s.machine ,s.status ,s.lockwa

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

是否有任何迹象表明UI中仍然存在未限制的内容

如果有任何UI反馈,我更愿意关注它。

试试以下方法:

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

查看会话仍保持活动事务的方法之一是使用dbms_事务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       

你可以检查它是否应该是
userenv('SID')
,以获取当前会话id?@a_horse_和\u no_name:-是的,先生,可以。但是我把它做成了通用的,这样如果OP想要检查其他会话,那么它也可以工作。我是否遗漏了什么?我与PLSQL developer合作,当没有未完成的更改时,PLSQL developer有一个灰色的提交按钮,当有未完成的更改时,它有一个活动按钮。SQL开发人员的“提交”按钮似乎一直处于打开状态。@Rene:我希望可以选择我的工具,但在这种情况下,我不能。。。不过很高兴知道。