Jak uzyskać bieżący (domyślny) poziom izolacji transakcji w Oracle?
Jak uzyskać bieżący (domyślny) poziom izolacji transakcji w Oracle?
Odpowiedzi:
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.
- 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