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

Come puoi vedere quale livello di isolamento della transazione sta usando una sessione di Oracle arbitraria

Puoi testare il bit 28 nel flag colonna in v$transaction [1] .

SELECT s.sid, s.serial#,
  CASE BITAND(t.flag, POWER(2, 28))
    WHEN 0 THEN 'READ COMMITTED'
    ELSE 'SERIALIZABLE'
  END AS isolation_level
FROM v$transaction t, v$session s
WHERE t.addr = s.taddr
  AND s.sid = :sid
  AND s.serial# = :serial;

Ricorda solo che v$transaction elenca solo le transazioni attive [2] ; ad esempio, devi emettere un insert/update/delete/merge o utilizzare "for update"[3] .