Воспоминания Oracle: есть ли способ получить запросы REDO SQL?

В базе данных oracle 11g таблица FLASHBACK_TRANSACTION_QUERY предоставляет UNDO_SQL столбец, в котором SQL отменяет модификацию, выполненную конкретным ранее выполненным запросом.

Однако вместо этого мне нужен REDO_SQL (исходный SQL, который был выполнен). Есть ли способ (с помощью SQL) извлечь REDO_SQL информацию из области воспоминаний оракула?


person MRalwasser    schedule 22.05.2013    source источник


Ответы (1)


Как видно из документации, функции Oracle flashback сосредоточены на данных, а не на операторах SQL. Следовательно, вы не можете обнаружить утверждения из ретроспективных данных.

Вместо этого вы можете включить функцию AUDIT в настройках базы данных (AUDIT_TRAIL), затем управляйте настройками аудита с помощью оператора AUDIT, как описано здесь.

Доступ к зарегистрированным выпискам можно получить с помощью DBA_AUDIT_TRAIL или USER_AUDIT_TRAIL представлений.

Другой способ достичь той же цели - использовать пакет DBMS_FGA. чтобы настроить политики аудита, а затем обратитесь к DBA_FGA_AUDIT_TRAIL или _ 6_ для просмотра списка выполненных операторов. Этот вариант включает функцию детального аудита и доступен только для версии Enterprise. базы данных Oracle.

Обновить

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

Это представление можно объединить в поле TRANSACTIONID с полем XID из FLASHBACK_TRANSACTION_QUERY, чтобы получить соответствующие записи ретроспективного обзора.

Помимо документации Oracle, на сайте Oracle-Base есть несколько хороших статей про аудит.

person ThinkJet    schedule 22.05.2013
comment
Можно ли проверять только зафиксированные операторы (с помощью функции Oracle AUDIT)? - person MRalwasser; 23.05.2013
comment
@MRalwasser Извините за ошибку, посмотрите обновленный ответ. Но остается одно ограничение: вы не можете определить точное выражение внутри транзакции, которое вызвало изменения в данных. - person ThinkJet; 23.05.2013