PID Oracle et sql

Ce script permet de trouver l’instruction sql présent dans la base de donnée à partir d’un process ID niveau OS

1) trouver le PID  niveau OS avec un TOP

SELECT
‘USERNAME : ‘ || s.username || CHR(10) ||
‘SCHEMA : ‘ || s.schemaname || CHR(10) ||
‘OSUSER : ‘ || s.osuser || CHR(10) ||
‘MODUEL : ‘ || s.program || CHR(10) ||
‘ACTION : ‘ || s.schemaname || CHR(10) ||
‘CLIENT_INFO : ‘ || s.osuser || CHR(10) ||
‘PROGRAM : ‘ || s.program || CHR(10) ||
‘SPID : ‘ || p.spid || CHR(10) ||
‘SID : ‘ || s.sid || CHR(10) ||
‘SERIAL# : ‘ || s.serial# || CHR(10) ||
‘KILL STRING : ‘ ||  » » || s.sid || ‘,’ || s.serial# ||  » » || CHR(10) ||
‘MACHINE : ‘ || s.machine || CHR(10) ||
‘TYPE : ‘ || s.type || CHR(10) ||
‘TERMINAL : ‘ || s.terminal || CHR(10) ||
‘SQL ID : ‘ || q.sql_id || CHR(10) ||
‘CHILD_NUM : ‘ || q.child_number || CHR(10) ||
‘SQL TEXT : ‘ || q.sql_text
FROM v$session s
,v$process p
,v$sql q
WHERE s.paddr = p.addr
AND p.spid = ‘&PID_FROM_OS’
AND s.sql_id = q.sql_id(+)
AND s.status = ‘ACTIVE’;

 

Puis  recupérer le sql_id  et le chid_num

SQL> SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR(‘&sql_id’,&child_num));

Resultat :

 

SQL_ID 3k8vqz6yycr3g, child number 0
————————————-
select a.table_name from dba_tables a, dba_indexes b, dba_objects c

 

Post Comment

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *