Oracleの現在の分離レベル


10

Oracleで現在の(デフォルト)トランザクション分離レベルを取得するにはどうすればよいですか?



セッション内のトランザクションのデフォルトの分離レベル、または進行中の現在のトランザクションの分離レベルを探していますか?
リーリフェル

回答:


6

参照されているSOの回答Vincent Malgratからのクエリを使用して、進行中のトランザクションのトランザクション分離レベルを取得する方法を次に示します。

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として(個別の名前を選択、isdefault、value、decode(value、 'serializable'、SID、null)SID V $ SES_OPTIMIZER_ENV where where(name)like '%isolation%' order by name)select q1。*、vs .status、vs.username、vs.OSUSER、vs.MACHINE、vs.TERMINAL、vs.PROGRAM from q1、v $ session vs where q1.sid = vs.sid(+);

-よろしく。-AZ

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.