Oracle
 sql >> Database >  >> RDS >> Oracle

C'è un modo per ottenere informazioni sulla sessione corrente da gv$session in Oracle?

Prova questo:

SELECT SID, SERIAL#
FROM V$SESSION
WHERE AUDSID = Sys_Context('USERENV', 'SESSIONID');

Poiché sei interessato alla sessione corrente, la sessione corrente deve essere sull'istanza locale (per definizione), quindi usa V$SESSION invece di GV$SESSION . Inoltre, tutto ciò di cui hai bisogno è AUDSID per identificare in modo univoco la tua sessione.

Se hai qualche motivo davvero è necessario utilizzare GV$SESSION (non riesco a immaginare perché sarebbe), potresti invece farlo:

SELECT SID, SERIAL#
    FROM GV$SESSION
    WHERE AUDSID = Sys_Context('USERENV', 'SESSIONID')
      AND INST_ID = USERENV('Instance');

Inoltre, un modo alternativo per ottenere il SID della sessione corrente è:

select sid from v$mystat where rownum=1;

Spero di esserti stato d'aiuto.