---
title: "Действия пользователей в Oracle. Часть 2"
description: "1. Введение. В первой части мы активировали аудит Oracle и отследили таблицы, с которыми работал пол..."
author: "friday"
published: "2011-09-12T00:46:29+00:00"
modified: "2011-09-12T00:46:29+00:00"
locale: "ru"
canonical_url: "https://yvision.kz/post/deystviya-polzovateley-v-oracle-chast-2-191641"
markdown_url: "https://yvision.kz/post/deystviya-polzovateley-v-oracle-chast-2-191641/markdown"
site_name: "Yvision.kz"
---

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

> 1. Введение. В первой части мы активировали аудит Oracle и отследили таблицы, с которыми работал пол...

**1. Введение.**

В первой части мы активировали аудит Oracle и отследили таблицы, с которыми работал пользователь. Но традиционный аудит Oracle позволяет отследить только «глобальные» действия пользователей, то есть действия над объектами. Действия с данными отследить сложнее. Включив аудит на оператор **SELECT **мы увидим, что пользователь выбрал данные из таблицы, но мы не узнаем что именно он выбрал. Для операторов **INSERT**, **UPDATE **или **DELETE **можно воспользоваться триггером или утилитой **Oracle LogMiner**. Но оператор SELECT не изменяет данные, соответственно не вызывает триггер и не фиксируется в архив-логах. Для этих целей можно использовать детальный аудит (**FGA**, fine-grained auditing).

Рассмотрим конкретные примеры. Допустим имеется таблица **TABLE1 **в схеме пользователя **SCHEMA1**.

**2. Активация аудита.**

Для активации аудита необходимо для этой таблицы создать правило:

**begin**

**dbms_fga.add_policy (**

**object_schema=>'SCHEMA1',**

**object_name=>'TABLE1',**

**policy_name=>'POLICY1'**

**);**

**end;**

 

Теперь, если пользователь выполнит любой запрос к таблице **SCHEMA1.TABLE1**, это действие зафиксируется в журнале аудита. Его можно будет просмотреть с помощью запроса

**SQL> select timestamp, sql_text from dba_fga_audit_trail where os_user='v';**

*TIMESTAMP SQL_TEXT*

*--------------- --------------------------------------------------------------------------------*

*12-SEP-11 select count(*) from sapast.usr02*

 

**3. Управление правилами FGA**

Для отключения правила следует выполнить **dbms_fga.disable_policy**:

**begin**

**dbms_fga.disable_policy (**

**object_schema => 'SCHEMA1',**

**object_name => 'TABLE1',**

**policy_name => 'POLICY1'**

**);**

**end;**

 

Соответственно включение правило осуществляется командой **dbms_fga.enable_policy**.

Команда **dbms_fga.drop_policy** удалит правило

**begin**

**dbms_fga.drop_policy (**

**object_schema => 'SCHEMA1',**

**object_name => 'TABLE1',**

**policy_name => 'POLICY1'**

**);**

**end;**

 

**4. Заключение.**

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

---

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