Действия пользователей в Oracle

friday 2011 M09 8
3316
0
0
0

Имеется какая-то программа. Она хранит данные в Oracle. Нет информации о структуре таблиц и связи между ними. В программе проводят какие-то действия и надо отследить - в какие таблицы записываются...

Имеется какая-то программа. Она хранит данные в Oracle. Нет информации о структуре таблиц и связи между ними. В программе проводят какие-то действия и надо отследить - в какие таблицы записываются данные.

Пришлось активировать аудит в Oracle.

1. Включаем аудит

Для этого смотрим параметры audit_trail и audit_sys_operations.

SQL> SHOW PARAMETERS audit_trail;

NAME                                   TYPE       VALUE
------------------------------------ ----------- ----------------------------
audit_trail                             string      NONE

Эти параметры по умолчанию выключены. Включение аудита осуществляем присвоением параметру audit_trail значение DB.

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

System altered.

Теперь необходимо перезагрузить инстанию Oracle.

SQL> shutdown immediate;

SQL> startup;

После перезагрузки убеждаемся, что этот параметр включён.

SQL> SHOW PARAMETERS audit_trail;

NAME                                   TYPE       VALUE
------------------------------------ ----------- ------------------------------
audit_trail                             string      DB

Значение правильно. Теперь приступаем к настройке аудита.

 

2. Настройка аудита

Настройка аудита заключается во включении/выключении протоколирования выполняемых операций.

Нам нужно включить аудит на конкретного пользователя:
SQL> AUDIT insert table, update table, delete table BY user1;

Audit succeeded.

Проверим список команд для пользователей:

SQL> SELECT user_name, audit_option FROM dba_stmt_audit_opts;

USER_NAME                    AUDIT_OPTION
------------------------------ ----------------------------------------
TEST                             INSERT TABLE
TEST                             UPDATE TABLE
TEST                             DELETE TABLE

Кроме того можно включить аудит на какую-то таблицу

SQL> AUDIT select, insert, update, delete ON schema1.table1;

Audit succeeded.

Список команд для объектов можно посмотреть в таблице dba_obj_audit_opts.

Выключение аудита выполняется командой NOAUDIT.

SQL> NOAUDIT select, insert, update, delete ON schema1.table1;

Noaudit succeeded.

Конечно есть и другие возможности аудита, на для наших целей достаточно его включение для конкретного пользователя. После настройки аудита проделываем в программе нужные действия и, по завершению, проводим анализ аудита.

3. Анализ аудита

Данные аудита просматриваются в таблицах DBA_AUDIT_%. Так как нас интересуют таблицы, в которых изменяются данные, мы обращаемся к таблице dba_audit_object

SQL> select distinct owner,obj_name from dba_audit_object;

OWNER                           OBJ_NAME
------------------------------  ----------------------------------
SCHEMA1                         TABLE1
SCHEMA1                         TABLE2

Этот запрос покажет к каким таблицам обращался пользователь.

К сожалению самих текстов запросов мы не получим. Для этих целей используется детальный аудит FGA.

Оцените пост

0