web-dev-qa-db-ja.com

gv $ sessionとは異なる結果

次のクエリは結果を返しませんが、そうすべきであるようです。

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');

誰かがこの動作を確認および/または説明できますか?

2
Leigh Riffel

以下の結果が得られました

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行

3
Atilla Ozgur