- Este tópico contém 8 respostas, 4 vozes e foi atualizado pela última vez 13 anos atrás por fabiogalera.
-
AutorPosts
-
3 de outubro de 2011 às 6:52 pm #101126airoospParticipante
Bom dia,
Alguém sabe se é possível obter informações sobre a execução de procedures no banco Oracle. Por exemplo, qual o usuário que executou uma determinada procedure isto é, data e hora.
Banco 9i.
Obrigado.
Airton
4 de outubro de 2011 às 12:58 am #101134vieriParticipanteOs comandos abaixo falam por mim.
============================
LOGMINER
alter session set nls_date_format=’yyyy-mm-dd hh24:mi:ss’;
begin
dbms_logmnr.start_logmnr(
startTime => ‘2007-04-16 00:00:00’,
endTime => ‘2007-04-20 00:00:00′,
options => dbms_logmnr.DICT_FROM_ONLINE_CATALOG + dbms_logmnr.CONTINUOUS_MINE);
end;
/select timestamp, username, session_info, sql_redo, info
from v$logmnr_contents
where operation=’DDL’;select xid, substr(sql_redo,1,100)
from v$logmnr_contents
where operation=’DDL’ and lower(sql_redo) like ‘create%procedure%’;select sql_undo from v$logmnr_contents where xid=’ 07002100D8850600′ and table_name=’SOURCE$’ and operation=’DELETE’;
set pagesize 1000 linesize 150 heading off feedback off verify off trimspool on trimout on
undef xid
select timestamp from v$logmnr_contents where xid=’&&xid’ and operation=’DDL’;
column txt format a150
select REGEXP_REPLACE(
REGEXP_REPLACE(sql_undo,
‘insert into “SYS”.”SOURCE$”(“OBJ#”,”LINE”,”SOURCE”) values (”[0-9]+”,”[0-9]+”,”’,”
),”’);$’,”
) txt
from v$logmnr_contents where xid=’&&xid’ and table_name=’SOURCE$’ and operation=’DELETE’;adapte pro seu problema.
5 de dezembro de 2011 às 8:22 pm #102027airoospParticipanteBoa tarde,
Fiz a pesquisa usando o exemplo que você passou mas não consegui localizar a procedure.
Há alguma outra forma de obter essa informação?
Obrigado.
Airton
8 de dezembro de 2011 às 9:28 pm #102067msantinoParticipantePelo que eu entendi, os comandos do @vieri são voltados a quem CRIOU uma procedure e não a executou.
Talvez anterando os parâmetros dos filtros consiga, mas eu não sei dizer se tais execuções são logadas nos mesmos lugares. Isto é, se de fato elas são logadas…
8 de dezembro de 2011 às 11:59 pm #102070fabiogaleraParticipanteQue eu saiba, o logminer não verifica quem executou a procedure.
O único jeito que eu conheço é através de AUDIT.
15 de dezembro de 2011 às 11:54 pm #102208airoospParticipanteBoa tarde,
Encontrei uma solução. O que fiz foi criar uma tabela de log e no corpo da procedure inclui a query abaixo que trás informações sobre a sessão do banco e o resultado grava na tabela.
select distinct substr(a.username,1,20),
substr(a.module,1,20),
substr(a.osuser,1,8),
substr(a.program,1,100),
substr(a.machine,1,30),
a.sid,
a.serial#,
b.profile
into v_usuario, v_modulo, v_osuser, v_programa, v_node, v_sid_banco, v_serial, v_perfil
FROM sys.v_$session a, dba_users b
WHERE a.audsid = (select userenv(‘sessionid’) from dual)
and a.username = b.username
and rownum = 1;Esta query encontrei na internet e funcionou.
Se alguém tiver alguma sugestão e/ou ver algum problema nesta solução e quiser ajudar agradeço.
Banco 9i.
Obrigado.
Airton
16 de dezembro de 2011 às 12:31 am #102210fabiogaleraParticipanteSim.
AUDIT EXECUTE PROCEDURE ON owner.procedure_name BY ACCESS WHENEVER SUCCESSFUL;
Verifique se a auditoria esta ligada
show parameter audit
Precisa estar em DB
16 de dezembro de 2011 às 3:40 pm #102212airoospParticipanteFabio,
Verifiquei a informação que você pediu.
audit_sys_operations FALSE
audit_trail NONE
transaction_auditing TRUESe deixar a auditoria ligada, poderá gerar lentidão no banco?
Obrigado.
Airton
16 de dezembro de 2011 às 11:05 pm #102241fabiogaleraParticipanteOlha, você ativando isso não irá fazer com que seu Banco fique lento, mas sim, praticamente tudo tem degradação de performance. Você passará a auditar todas as execuções da PROCEDURE, lógicamente irá ter degradação.
Agora, em números não sei dizer, talvez 0,1% =)
Antes de ativar o AUDIT TRAIL, verifique o que esta sendo auditado na Base de Dados, a nível de usuários, objetos, etc.
-
AutorPosts
- Você deve fazer login para responder a este tópico.