Làm thế nào để có được mức cô lập giao dịch (mặc định) hiện tại trong orory?
Làm thế nào để có được mức cô lập giao dịch (mặc định) hiện tại trong orory?
Câu trả lời:
Sử dụng truy vấn từ câu trả lời SO được Vincent Malgrat tham chiếu, đây là cách bạn có thể nhận được mức cô lập giao dịch cho giao dịch đang diễn ra:
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');
Nếu bạn chưa có giao dịch, bạn có thể bắt đầu một giao dịch sau:
declare
trans_id Varchar2(100);
begin
trans_id := dbms_transaction.local_transaction_id( TRUE );
end;
/
Có vẻ như sẽ có một cách dễ dàng hơn thế này. Tôi không biết làm thế nào để có được mức cô lập mặc định cho phiên nếu đó là điều bạn đang tìm kiếm.
- Tôi đang sử dụng một cái gì đó như dưới đây
với q1 là (chọn tên riêng, isdefault, value, decode (value, 'serializable', SID, null) SID từ V $ SES_OPTIMIZER_ENV trong đó (tên) như '% cô lập%' theo tên) chọn q1. *, vs. .status, vs.username, vs.OSUSER, vs.MACHINE, vs.TERMINAL, vs.PROGRAM từ q1, v $ session so với nơi q1.sid = vs.sid (+);
-- Trân trọng. - AZ