Создание глобального триггера, который прослушивает несколько таблиц - PullRequest
4 голосов
/ 19 января 2012

Я хочу создать глобальный триггер в Oracle 11g.Который может быть использован для аудита около 100 таблиц.Может ли несколько таблиц запустить один триггер.Если да, то как мне этого добиться?

1 Ответ

8 голосов
/ 19 января 2012

Я хочу создать глобальный триггер в Oracle 11g, который можно использовать для аудита около 100 таблиц

Есть ли причина, по которой вы хотите заново изобрести колесо?Почему бы не использовать встроенный аудит Oracle?

Oracle Base предоставляет некоторую базовую информацию о том, как начать аудит:

Аудит можно включить, установивстатический параметр AUDIT_TRAIL со следующими допустимыми значениями:

AUDIT_TRAIL = { none | os | db | db,extended | xml | xml,extended }

В следующем списке приводится описание каждого параметра:

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.

Включение аудита в журнале аудита базы данныхвключить аудит в БД

SQL> ALTER SYSTEM SET audit_trail=db,extended SCOPE=SPFILE;

System altered.

Завершение работы и перезапуск БД

SQL> SHUTDOWN
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> STARTUP
ORACLE instance started.

Теперь для аудита SELECTS, INSERTS, UPDATES, DELETES пользователем cubeсделать это:

CONNECT sys/password AS SYSDBA

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

Проверенные журналы могут быть вызваны с помощью запроса DBA_AUDIT_TRAIL

Далее:

...