Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Criando um gatilho global que escuta várias tabelas


Existe uma razão para você querer reinventar a roda? Por que não fazer uso da auditoria integrada da Oracle?

Base Oracle fornece algumas informações básicas sobre como começar a auditoria:
AUDIT_TRAIL = { none | os | db | db,extended | xml | xml,extended }

A lista a seguir fornece uma descrição de cada configuração:
none or false - Auditing is disabled.
db or true - Auditing is enabled, with all audit records stored in the database audit trial (SYS.AUD$).
db,extended - As db, but the SQL_BIND and SQL_TEXT columns are also populated.
xml- Auditing is enabled, with all audit records stored as XML format OS files.
xml,extended - As xml, but the SQL_BIND and SQL_TEXT columns are also populated.
os- Auditing is enabled, with all audit records directed to the operating system's audit trail.

Para habilitar a auditoria na trilha de auditoria do banco de dados, habilite a auditoria no db
SQL> ALTER SYSTEM SET audit_trail=db,extended SCOPE=SPFILE;

System altered.

Desligue e reinicie o db
SQL> SHUTDOWN
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP
ORACLE instance started.

Agora para auditar SELECTS , INSERTS , UPDATES , DELETES pelo usuário cube fazem isto:
CONNECT sys/password AS SYSDBA

AUDIT ALL BY cube BY ACCESS;
AUDIT SELECT TABLE, UPDATE TABLE, INSERT TABLE, DELETE TABLE BY cube BY ACCESS;

Os logs auditados podem ser acessados ​​consultando DBA_AUDIT_TRAIL

Leitura adicional: