Je veux savoir quelle est ma session au niveau de v$session et à quel processus OS elle correspond
La requête à passer est la suivante :
set pages 0 lines 230 newp none emb on
col machine for a25
select v.SID, v.USERNAME, v.MACHINE, v.PROGRAM, v.TERMINAL, SPID "OS PID", v.process
from v$session v inner join v$process p on v.paddr=p.addr
where v.AUDSID=USERENV('SESSIONID')
and v.MACHINE=SYS_CONTEXT('USERENV','HOST')
and v.TERMINAL=USERENV('TERMINAL')
/
Son résultat :
SID USERNAME MACHINE
---------- ------------------------------ -------------------------
633 SYS srvorcl.ojo.fr
PROGRAM TERMINAL
------------------------------------------------ ------------------------------
sqlplus@srvorcl.ojo (TNS V1-V3) pts/2
OS PID PROCESS
------------------------ ------------------------
147476 147469
On a OS PID qui correspond à l’identifiant du process de connexion de SQLPLUS à la base de données et process qui correspond l’indentifiant du process sqlplus
ps -edf | grep 147476 | grep -v grep oracle 147476 147469 0 15:12 ? 00:00:00 oracleTECH (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) ps -edf | grep 147469 | grep -v grep oracle 147469 197784 0 15:12 pts/2 00:00:00 sqlplus oracle 147476 147469 0 15:12 ? 00:00:00 oracleORCL (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))
Pour tuer la connexion sans tuer sqlplus (et se retrouver en mode nolog) c’est le process 147476 qu’il faut tuer.
C’était pourtant pas si compliqué
