Vol*_*lov 5 oracle session oracle-rac
有什么方法可以唯一标识当前会话 GV$SESSION在Oracle中,?
我遇到的问题是,在Oracle RAC配置的情况下,以下查询可能返回多个行:
SELECT SID, SERIAL#
FROM GV$SESSION
WHERE AUDSID = Sys_Context('USERENV', 'SESSIONID')
AND SID = Sys_Context('USERENV', 'SID');
Run Code Online (Sandbox Code Playgroud)
使用V$MYSTAT不是一种选择任一,因为V$MYSTAT可能不为当前会话访问的(例如,当统计量是禁用)。
尝试这个:
SELECT SID, SERIAL#
FROM V$SESSION
WHERE AUDSID = Sys_Context('USERENV', 'SESSIONID');
Run Code Online (Sandbox Code Playgroud)
由于您对当前会话感兴趣,因此当前会话必须位于本地实例上(根据定义),因此请使用V$SESSION代替GV$SESSION。另外,您需要的是AUDSID要做的唯一地标识您的会话。
如果您有某些确实需要使用的原因GV$SESSION(无法想象为什么会这样),则可以这样做:
SELECT SID, SERIAL#
FROM GV$SESSION
WHERE AUDSID = Sys_Context('USERENV', 'SESSIONID')
AND INST_ID = USERENV('Instance');
Run Code Online (Sandbox Code Playgroud)
另外,获取SID当前会话的另一种方法是:
select sid from v$mystat where rownum=1;
Run Code Online (Sandbox Code Playgroud)
希望能有所帮助。
| 归档时间: |
|
| 查看次数: |
14877 次 |
| 最近记录: |