Я использую Oracle 11g Standard Edition.
Я хотел бы записать все SQL-запросы, которые выполняются пользователями, в таблицу.
Как это можно сделать?
Я использую Oracle 11g Standard Edition.
Я хотел бы записать все SQL-запросы, которые выполняются пользователями, в таблицу.
Как это можно сделать?
Если вы используете современную версию базы данных (9i или новее), и у вас есть лицензия Enterprise Edition, вы можете использовать Fine-Graining Auditing. Это позволяет нам проверять пользовательские запросы на очень низком уровне детализации посредством определенных политик.
Чтобы захватить текст SQL и привязать переменные, вам необходимо установить параметр AUDIT_TRAIL соответствующим образом при добавлении политики FGA. Узнайте больше.
"Я использую стандарт 11g, поэтому функции аудита не поддерживаются".
Не совсем. Команда AUDIT является частью стандартной сборки Oracle, но она позволяет нам захватывать, когда данный пользователь выдает SELECT по данной таблице. Но, да, чтобы узнать, что именно они выбирают, требуется лицензия Enterprise Edition.
Также нет триггера ON SELECT, поэтому мы не можем свернуть его.
"Так можно ли использовать команду AUDIT в стандартной версии?... Но тогда консультант сказал мне, что я не могу использовать его, не платя предприятие лицензия?"
Говоря как консультант, я должен сказать, что эти парни не всегда знают, о чем они говорят.
Итак, давайте ясно:
Для БЫСТРОГО, ЛЕГКОГО ведения журнала SQL, попробуйте мой ответ на мониторинг здесь. Не для долгосрочного ведения журнала, но отлично работает, чтобы увидеть, что происходит в маленьком временном окне.: -)