Как найти время последнего запроса таблицы в oracle

#sql #oracle #oracle10g

#sql #Oracle #oracle10g

Вопрос:

Я хочу получить информацию о том, когда запрашивается таблица в oracle. Есть ли в oracle какой-либо журнал, в котором отображаются запросы. Я просматривал v $ sqlarea и v $ sqltext, но системный администратор не позволяет мне получить доступ к этим таблицам.

Ответ №1:

При установке по умолчанию я не знаю способа надежно получить эту информацию. Возможно, вам удастся перехватить инструкции SQL, которые недавно выполнялись в представлениях v $ sql *, но представления v $ sql * являются временными по своей природе и используются для поддержки нормальной работы базы данных. Операторы могут устаревать, поэтому это ненадежный способ аудита.

Каков правильный надежный способ получить эту информацию? Аудит Oracle. Он содержит возможность записи детализированной информации о том, как затрагиваются объекты вашей базы данных.

В этом случае вам нужно будет изучить ВЫБОР АУДИТА. После выполнения базовой конфигурации для аудита (обычно выполняемой администратором базы данных) ВЫБЕРИТЕ, можно ли настроить аудит для определенных таблиц следующим образом:

АУДИТ ВЫБОРА ДЛЯ сотрудников;

Когда пользователь ВЫБИРАЕТ из employee напрямую или через представление, запись будет записана в журнал аудита (текстовый файл или SYS.AUD $ в зависимости от конфигурации). В трассировке будут указаны имя пользователя, временная метка, имя_таблицы и некоторая другая информация, которая поможет вам определить, что пользователь делал в то время.

Вот ссылка 9i для аудита, которая дает обзор, включая информацию о ВЫБОРЕ АУДИТА: http://download.oracle.com/docs/cd/B10500_01/server.920/a96524/c25audit.htm

Имейте в виду, что мелкозернистый аудит может замедлить работу. Все, что вы проверяете, теперь имеет новый уровень активности, который должен быть завершен (запись в журнал аудита). Если у вас бизнес, вам нужно знать, кто какие данные видит, это понятно, но обязательно учитывайте последствия для производительности.