次のクエリは結果を返しませんが、そうすべきであるようです。
SELECT * FROM gv$session where SID = SYS_CONTEXT('USERENV','SID');
私の11.2.0.2Standard Edition RAC環境では、上記のクエリは結果を返しませんが、次のバリエーションはすべて結果を返します。
SELECT sid FROM gv$session where SID = SYS_CONTEXT('USERENV','SID');
SELECT * FROM gv$session where SID = 256; --Your SID will likely be different.
SELECT * FROM v$session where SID = SYS_CONTEXT('USERENV','SID');
誰かがこの動作を確認および/または説明できますか?
以下の結果が得られました
SELECT SYS_CONTEXT('USERENV','SID') FROM DUAL;
-- 5276
SELECT * FROM gv$session where SID = SYS_CONTEXT('USERENV','SID');
-- No result
SELECT * FROM gv$session where SID =5276;
-- 4 results for 4 node RAC
-- 1 result matches my USERNAME,OSUSER, MACHINE and PROGRAM
-- 3 results are different from my USERNAME,OSUSER, MACHINE and PROGRAM
SELECT * FROM v$session where SID = SYS_CONTEXT('USERENV','SID');
-- 1 result
説明はできませんが、4ノードRACでクエリを実行すると、興味深い出力が得られます。
SELECT '1' AS QUERY_NUMBER,S.* FROM gv$session S where SID = SYS_CONTEXT('USERENV','SID')
UNION ALL
SELECT '2',S.* FROM gv$session S where SID = ( SELECT SYS_CONTEXT('USERENV','SID') FROM DUAL)
UNION ALL
SELECT '3',-1,S.* FROM v$session S where SID = SYS_CONTEXT('USERENV','SID');
QUERY_NUMBER = 1、行なし
QUERY_NUMBER = 2、4行(4ノードRAC)
QUERY_NUMBER = 3、1行