Parece que você está atrás de 'auditoria'. A Oracle possui um recurso integrado chamado Fine Grain Auditing (FGA). Em poucas palavras, você pode auditar tudo ou condições específicas. O que é realmente legal é que você pode 'auditar' seleções e transações. Comando simples para começar a auditoria:
audit UPDATE on SCOTT.EMP by access;
Pense nisso como um 'gatilho' para instruções select. Por exemplo, você cria políticas:
begin
dbms_fga.add_policy (
object_schema=>'BANK',
object_name=>'ACCOUNTS',
policy_name=>'ACCOUNTS_ACCESS'
);
end;
Depois de definir a política, quando um usuário consulta a tabela da maneira usual, da seguinte maneira:
select * from bank.accounts;
a trilha de auditoria registra essa ação. Você pode ver a trilha emitindo:
select timestamp,
db_user,
os_user,
object_schema,
object_name,
sql_text
from dba_fga_audit_trail;
TIMESTAMP DB_USER OS_USER OBJECT_ OBJECT_N SQL_TEXT
--------- ------- ------- ------- -------- ----------------------
22-OCT-08 BANK ananda BANK ACCOUNTS select * from accounts