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.