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é