Wie erhalte ich die aktuelle (Standard-) Transaktionsisolationsstufe in Oracle?
Wie erhalte ich die aktuelle (Standard-) Transaktionsisolationsstufe in Oracle?
Antworten:
Mithilfe der Abfrage aus der SO-Antwort, auf die Vincent Malgrat verwiesen hat, können Sie die Transaktionsisolationsstufe für die laufende Transaktion ermitteln:
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
JOIN v$session s ON t.addr = s.taddr AND s.sid = sys_context('USERENV', 'SID');
Wenn Sie noch nicht in einer Transaktion sind, können Sie eine mit den folgenden starten:
declare
trans_id Varchar2(100);
begin
trans_id := dbms_transaction.local_transaction_id( TRUE );
end;
/
Es scheint, als gäbe es einen einfacheren Weg. Ich weiß nicht, wie ich die Standardisolationsstufe für die Sitzung ermitteln soll, wenn Sie danach suchen.
- Ich benutze so etwas wie unten
mit q1 als (eindeutigen Namen auswählen, isdefault, Wert, decodieren (Wert, 'serialisierbar', SID, null) SID von V $ SES_OPTIMIZER_ENV wobei niedriger (Name) wie '% Isolation%' Reihenfolge nach Namen) q1 auswählen. *, vs. .status, vs.Benutzername, vs.OSUSER, vs.MASCHINE, vs.TERMINAL, vs.PROGRAMM aus q1, v $ session vs wobei q1.sid = vs.sid (+);
-- Grüße. - AZ