Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Lauers

Procedure para auditar todas as tabelas do banco!

Recommended Posts

Gente estou com dificuldades para fazer uma procedure para auditar todas as tabelas de uma base, mais de 10000 tabelas. Preciso saber os comandos 'SQL_TEXT'.

 

O que eu fiz:

ALTER SYSTEM SET AUDIT_TRAIL='DB_EXTENDED' SCOPE=SPFILE;

Até aí tudo bem.

 

Uso o comando:

AUDIT SELECT ON NOME_DA_TABELA BY ACCESS WHENEVER SUCCESSFUL;

E passo a saber os selects dados nessa tabela com o comando:

SELECT ACTION_NAME, OBJ_NAME, SQL_TEXT, OS_USERNAME, USERNAME, USERHOST, TIMESTAMP
FROM SYS.DBA_AUDIT_TRAIL
WHERE ACTION_NAME = 'SELECT'
AND SQL_TEXT NOT LIKE '%1 = 0'
ORDER BY EXTENDED_TIMESTAMP DESC

Mas o problema é que, como eu disse, são mais de 10000 tabelas, não da pra fazer uma por uma, mas não estou conseguindo fazer uma procedure pra fazer isso pra mim. Alguém sabe? ou até exista um modo mais simples. A minha procedure está assim:

 

create or replace procedure test_proc() is 
    v_nome_tabela varchar(20); 
    cursor c1 is 
  
     SELECT DISTINCT TABLE_NAME
     FROM ALL_TABLES
     WHERE OWNER = 'BASETESTE'

begin 

   open c1 
   loop 
      fetch c1 into v_nome_tabela; 
      exit when c1%notfound; 

      AUDIT SELECT ON v_nome_tabela BY ACCESS WHENEVER SUCCESSFUL; 

end;

 

Qualquer ajuda é bem vinda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Monte um script gerando comando do audit com base na tabela

 

 

SELECT 'AUDIT SELECT ON ' || TABLE_NAME
from SYS.USER_TABLES
where TABLE_NAME not in
(
SELECT OBJ_NAME
FROM SYS.DBA_AUDIT_TRAIL
where ACTION_NAME = 'SELECT'
and SQL_TEXT not like '%1 = 0'
)

gera o script, limpa algumas tabelas se for o caso e roda o bichinho, deve resolver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

1) ou faça uma procedure, chame o select num cursor e rode via

execute immediate.

 

2) programas gerenciadores talvez permitam dar este grant em blobo, não sei, nunca fiz.

 

Limpo, limpo e fazer um a um ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.