Поточний рівень ізоляції в оракулі


10

Як отримати поточний рівень ізоляції транзакцій (за замовчуванням) в oracle?


Якщо ви шукаєте поточний рівень ізоляції сеансу, перегляньте це питання ТА: Як ви можете бачити, на якому рівні ізоляції транзакцій використовується довільна сесія oracle.
Вінсент Малграт

Ви шукаєте рівень ізоляції за замовчуванням для трансакцій у сеансі чи рівень ізоляції поточної транзакції, що проводиться?
Лей Ріффер

Відповіді:


6

Використовуючи запит з відповіді на відповідь SO Вінсента Малграта, ось як можна отримати рівень ізоляції транзакцій для транзакції, що виконується:

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

Якщо ви ще не здійснюєте транзакцію, її можна розпочати з наступного:

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

Здається, був би простіший спосіб, ніж цей. Я не знаю, як отримати рівень ізоляції за замовчуванням для сеансу, якщо це те, що ви шукаєте.


5

- Я використовую щось подібне нижче

з q1 як (виберіть окреме ім'я, значення за замовчуванням, значення, декодування (значення, "серіалізація", SID, нуль) SID від V $ SES_OPTIMIZER_ENV, де нижнє (ім'я), наприклад, "% ізоляція%", порядок на ім'я), виберіть q1. *, vs .status, vs.username, vs.OSUSER, vs.MACHINE, vs.TERMINAL, vs.PROGRAM від q1, v $ сеанс vs, де q1.sid = vs.sid (+);

- З повагою - AZ

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.