How can I tell if I have uncommitted work in an Oracle transaction?

后端 未结 2 1121
花落未央
花落未央 2020-12-09 05:18

Is there a way to tell if I have uncommitted work (ie DML) in a transaction? Maybe a data-dictionary view I can query?

A method to find this out both from within an

相关标签:
2条回答
  • 2020-12-09 05:47
    SELECT  *
    FROM    v$session v
    WHERE   v.AUDSID = userenv('sessionid')
        AND v.TADDR IS NOT NULL
    
    0 讨论(0)
  • 2020-12-09 05:48

    If you don't have access to v$session you can use

    select dbms_transaction.local_transaction_id from dual;
    

    This only works from within the session but doesn't need v$ privileges. If it returns a non-null, you have started a transaction. That normally means uncommitted changes, but there are exceptions. If you issued a savepoint, changed data and rolled back to the savepoint, the transaction still 'lives'. Also, using database links starts transactions, even just for selects (or they used to).

    0 讨论(0)
提交回复
热议问题