Aktuelle Isolationsstufe im Orakel


10

Wie erhalte ich die aktuelle (Standard-) Transaktionsisolationsstufe in Oracle?


Wenn Sie nach der aktuellen Isolationsstufe einer Sitzung suchen, lesen Sie diese SO-Frage: Wie können Sie sehen, welche Transaktionsisolationsstufe eine beliebige Oracle-Sitzung verwendet?
Vincent Malgrat

Suchen Sie nach der Standardisolationsstufe für Transaktionen in einer Sitzung oder nach der Isolationsstufe der aktuell laufenden Transaktion?
Leigh Riffel

Antworten:


6

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.


5

- 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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.