Oracle'de mevcut izolasyon seviyesi


10

Mevcut (varsayılan) işlem yalıtım düzeyini kehanette nasıl alabilirim?


Bir oturumun geçerli yalıtım düzeyini arıyorsanız şu SO sorusuna bakın: Rasgele bir kehanet oturumunun hangi işlem yalıtım düzeyini kullandığını nasıl görebilirsiniz.
Vincent Malgrat

Bir oturumdaki işlemler için varsayılan yalıtım düzeyini mi yoksa devam etmekte olan geçerli işlemin yalıtım düzeyini mi arıyorsunuz?
Leigh Riffel

Yanıtlar:


6

Başvuruda bulunan SO yanıtı Vincent Malgrat'tan gelen sorguyu kullanarak, devam etmekte olan işlem için işlem yalıtım düzeyini nasıl elde edebileceğiniz aşağıda açıklanmıştır:

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

Zaten bir işlemde değilseniz, aşağıdakilerle bir işlem başlatabilirsiniz:

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

Bundan daha kolay bir yol olacak gibi görünüyor. Aradığın şey buysa, oturum için varsayılan yalıtım düzeyini nasıl alacağımı bilmiyorum.


5

- Aşağıdaki gibi bir şey kullanıyorum

q1 ile (ayrı ad, isdefault, değer, kod çözme (değer, 'serileştirilebilir', SID, null) SID değerinden V $ SES_OPTIMIZER_ENV, burada '% isolation%' adıyla sipariş gibi) q1'i seçin. *, vs .status, vs.username, vs.OSUSER, vs.MACHINE, vs.TERMINAL, vs.PROGRAM q1, v $ session vs burada q1.sid = vs.sid (+);

-- Saygılarımızla. - AZ

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.