Oracle отслеживает все выборы - PullRequest
1 голос
/ 31 января 2011

Мне нужно выполнить задание, но я не знаю, как это сделать.

Вот проблема:

У меня есть около 1000 таблиц в базе данных Oracle и много процессов.

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

Я знаю, что в SELECT нет триггера, но есть ли что-нибудь еще?

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

Ответы [ 2 ]

3 голосов
/ 31 января 2011

Вы можете активировать аудит . Вы можете проверить все SELECT с помощью:

AUDIT SELECT TABLE;

Можно указать BY SESSION, чтобы в журнал аудита записывалась только одна запись для каждой таблицы, к которой обращались за сеанс.

Ваш параметр AUDIT_TRAIL должен быть установлен на DB или OS. Если установлено значение DB, контрольный журнал будет записан в таблицу SYS.AUD$.

1 голос
/ 31 января 2011

Предполагая, что вы можете сопоставить «процесс» в вашей терминологии с конкретным сеансом Oracle, вы можете отслеживать сеанс Oracle .Это покажет вам все операторы SQL, выполненные этим сеансом.

Вы также можете потенциально выполнить S QL * Net trace из того, чем является клиентский компьютер (обратите внимание, что "клиентский компьютер"в трехуровневой среде находится сервер приложений).Однако трассировка SQL * Net не так проста в работе.

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