Как провести аудит удалений в определенной таблице с помощью Oracle? - PullRequest
1 голос
/ 04 января 2012

Я пытаюсь записать DELETE операторов в определенной таблице, используя функции аудита Oracle.Я запустил:

SQL> AUDIT DELETE TABLE BY TPMDBO BY ACCESS;

Audit succeeded.

Мне неясно, проверяет ли это удаление самой схемы таблицы (т. Е. Удаление таблицы), или проверяет удаление одной или нескольких строк в любой таблице (т.е., команда удаления).Если последнее, как мне ограничить этот аудит только таблицей с именем Foo?Спасибо!

ОБНОВЛЕНИЕ:

SQL> show parameter audit

NAME                                 TYPE        VALUE
------------------------------------ ----------- -------------
audit_file_dest                      string      /backup/audit
audit_sys_operations                 boolean     TRUE
audit_syslog_level                   string
audit_trail                          string      XML, EXTENDED

1 Ответ

2 голосов
/ 04 января 2012

Существует новая функция, называемая детализированным аудитом (FGA), которая хранит журнал SYS.FGA_LOG $ вместо SYS.AUD $.Вот руководство FGA .

BEGIN
  DBMS_FGA.ADD_POLICY(
   object_schema      => 'HR',
   object_name        => 'FOO',
   policy_name        => 'my_policy',
   policy_owner       => 'SEC_MGR',
   enable             =>  TRUE,
   statement_types    => 'DELETE',
   audit_condition    =>  'USER = ''myuser''',
   audit_trail        =>  DBMS_FGA.DB);
END;
/

Да, ваша исходная команда должна проверять операции DELETE (не DROP) для этого пользователя во всех таблицах.Изучите show parameter audit

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...