Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!
Carregando comentários...