Oracle
 sql >> Database >  >> RDS >> Oracle

Come posso sapere se ho un lavoro non impegnato in una transazione Oracle?

Se non hai accesso a v$session puoi usare

select dbms_transaction.local_transaction_id from dual;

Funziona solo dall'interno della sessione ma non richiede i privilegi v$. Se restituisce un valore non nullo, hai avviato una transazione. Ciò normalmente significa modifiche non vincolate, ma ci sono delle eccezioni. Se hai emesso un punto di salvataggio, modificato i dati e ripristinato il punto di salvataggio, la transazione è ancora "vive". Inoltre, l'utilizzo dei collegamenti al database avvia le transazioni, anche solo per le selezioni (o lo facevano prima).