Bagaimana cara mendapatkan tingkat isolasi transaksi (default) saat ini di oracle?
Bagaimana cara mendapatkan tingkat isolasi transaksi (default) saat ini di oracle?
Jawaban:
Menggunakan kueri dari jawaban SO Vincent Malgrat direferensikan, berikut adalah bagaimana Anda bisa mendapatkan tingkat isolasi transaksi untuk transaksi yang sedang berlangsung:
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');
Jika Anda belum melakukan transaksi, Anda dapat memulainya dengan yang berikut:
declare
trans_id Varchar2(100);
begin
trans_id := dbms_transaction.local_transaction_id( TRUE );
end;
/
Sepertinya akan ada cara yang lebih mudah dari ini. Saya tidak tahu bagaimana cara mendapatkan tingkat isolasi standar untuk sesi ini jika itu yang Anda cari.
- Saya menggunakan sesuatu seperti di bawah ini
dengan q1 sebagai (pilih nama berbeda, isdefault, nilai, decode (nilai, 'serializable', SID, null) SID dari V $ SES_OPTIMIZER_ENV di mana lebih rendah (nama) seperti '% isolasi%' diurutkan berdasarkan nama) pilih q1. *, vs .status, vsusername, vs.OSUSER, vs.MACHINE, vs.TERMINAL, vs.PROGRAM dari q1, v $ session vs di mana q1.sid = vs.sid (+);
- Salam. - AZ