---
title: "Действия пользователей в Oracle"
description: "Имеется какая-то программа. Она хранит данные в Oracle. Нет информации о структуре таблиц и связи ме..."
author: "friday"
published: "2011-09-08T23:22:09+00:00"
modified: "2011-09-08T23:37:19+00:00"
locale: "ru"
canonical_url: "https://yvision.kz/post/deystviya-polzovateley-v-oracle-191097"
markdown_url: "https://yvision.kz/post/deystviya-polzovateley-v-oracle-191097/markdown"
site_name: "Yvision.kz"
---

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

> Имеется какая-то программа. Она хранит данные в 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.

---

Source: [https://yvision.kz/post/deystviya-polzovateley-v-oracle-191097](https://yvision.kz/post/deystviya-polzovateley-v-oracle-191097)