Mini auditoria

Dúvidas, dicas e atualizações sobre o Treinamento DBA Júnior.
Post Reply
gcomenale

Mini auditoria

Post by gcomenale » Mon Nov 16, 2015 12:25 pm

Portilho,

Estou querendo criar uma "auditoria" do sqlplus de um servidor. A intenção é seguinte:
Sempre que um DBA chamar um alias (s, sql, etc) eu crio um log de tudo o que ele fizer:

#Alias
alias s='rlwrap sqlplus "/ as sysdba"' >> /home/oracle/.audit/sqlplus/sqlplus_$(date +%d_%m_%Y_%H_%M_%S).log

Porém, esse cara não está funcionando, sempre que eu o chamo ele fica com a sessão do sqlplus presa e não retorna o prompt para o DBA.
Se eu altero as aspas simples do alias para o final do comando ele retorna o prompt para o DBA, mas não cria o arquivo.

Existe alguma forma de criar isso?
Eu pensei em usar um spool para toda sessão que logar como DBA, mas se o user abrir outro spool ele mata o meu spool inicial, pois não é possível criar vários spools aninhados...

Alguma ideia?

portilho
Site Admin
Posts: 482
Joined: Wed May 29, 2013 8:51 am

Re: Mini auditoria

Post by portilho » Wed Nov 18, 2015 2:11 pm

Você pode colocar no glogin.sql para ser criado um SPOOL, com o SID e SERIAL# no nome do arquivo.

Code: Select all

set termout off
define new_prompt='nolog'
column new_prompt new_value new_prompt
select 'SQL('||t.username||'@'||global_name||','||'sid='||sid||',serial#='||serial#||')' new_prompt
from v$session,user_users t, global_name where AUDSID = USERENV('SESSIONID');
set sqlprompt "&new_prompt>"
set termout on
SPOOL "/home/oracle/&new_prompt>"

Post Reply