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
…