Opa, explica aí : se vc quiser saber se um dado PL/SQL está sendo usado NESTE 
MOMENTO, ie, se ele está sendo executado por alguém NESTE MOMENTO, vc pode usar 
o script abaixo...
 Já se o que vc quer é saber se um dado stored PL/SQL que está gravado no banco 
foi no passado recente utilizado ou não pela Aplicação (digamos, vc não tem uma 
Documentação confiável e quer saber se o tal PL/SQL pode ser apagado do banco 
sem prejuízo para a Aplicação), essa informação NÃO é registrada no database : 
vc poderia neste caso varrer os fontes da Aplicação , ou (se não for exigida 
uma Precisão / Garantia maior) , a Possibilidade é vc ativar algum tipo de 
Auditoria que registre daí pra frente as execuções dos PL/SQLs ou talvez 
consultar as V$ de caches do banco...
 O script para listar PL/SQLs em execução no momento é :
 break on sid skip 1
prompt **** Currently Executing Packages ****
SELECT /*+ RULE */
  substr(DECODE(o.kglobtyp,
    7, 'PROCEDURE', 8, 'FUNCTION', 9, 'PACKAGE', 12, 'TRIGGER', 13,
'CLASS'),1,15)  "TYPE",
  substr(o.kglnaown,1,30)  "OWNER",
  substr(o.kglnaobj,1,30)  "NAME",
  s.indx  "SID",
  s.ksuseser  "SERIAL"
FROM
  sys.X_$KGLOB  o,
  sys.X_$KGLPN  p,
  sys.X_$KSUSE  s
WHERE
  o.inst_id = USERENV('Instance') AND
  p.inst_id = USERENV('Instance') AND
  s.inst_id = USERENV('Instance') AND
  o.kglhdpmd = 2 AND
  o.kglobtyp IN (7, 8, 9, 12, 13) AND
  p.kglpnhdl = o.kglhdadr AND
  s.addr = p.kglpnses
ORDER BY 4, 2, 1
/
 
[]s
   Chiappa

  • [oracle_... Cristiano Vasconcelos Barbosa cvasconcel...@gmail.com [oracle_br]
    • [or... ederson200...@yahoo.com.br [oracle_br]
    • [or... jlchia...@yahoo.com.br [oracle_br]

Responder a