Aktualny poziom izolacji w wyroczni

Odpowiedzi:

6

Korzystając z zapytania z odpowiedzi SO, do której odnosi się Vincent Malgrat, oto jak uzyskać poziom izolacji transakcji w toku:

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');

Jeśli nie jesteś jeszcze w transakcji, możesz rozpocząć jedną z następujących czynności:

declare 
   trans_id Varchar2(100);
begin
   trans_id := dbms_transaction.local_transaction_id( TRUE );
end;
/

Wydaje się, że byłby łatwiejszy sposób niż ten. Nie wiem, jak uzyskać domyślny poziom izolacji dla sesji, jeśli tego właśnie szukasz.

Leigh Riffel
źródło
5

- Używam czegoś takiego jak poniżej

z q1 as (wybierz odrębną nazwę, isdefault, wartość, dekoduj (wartość, „szeregowalny”, SID, null) SID z V $ SES_OPTIMIZER_ENV gdzie niższe (nazwa) jak „% izolacji%” porządek według nazwy) wybierz q1. *, vs .status, vs.nazwa użytkownika, vs.OSUSER, vs.MACHINE, vs.TERMINAL, w. PROGRAM z q1, v $ sesja vs. gdzie q1.sid = vs.sid (+);

-- Pozdrowienia. - AZ

użytkownik33489
źródło