Oracle Logminer не может найти повторные записи
Я обновил несколько строк в таблице "HR"."AAA". Теперь я хочу вернуть таблицу HR.AAA в предыдущее состояние, используя LogMiner.
Я делаю следующее:
begin
dbms_logmnr_d.build('dictionary.ora','C:\oracle\product\10.2.0\oradata\ORCL\UTL');
end;
Я проверил и до и после обновления таблицы, текущий файл журнала был:"C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG"
begin
dbms_logmnr.add_logfile('C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG',options=> dbms_logmnr.new);
end;
begin
dbms_logmnr.start_logmnr (DictFileName =>'C:\oracle\product\10.2.0\oradata\ORCL\UTL\dictionary.ora', options => dbms_logmnr.print_pretty_sql);
end;
select * from v$logmnr_contents
where username='HR'
И на выходе ничего нет. Я не могу найти изменения, сделанные в схеме HR... Можете ли вы сказать мне, почему?
2 ответа
Я нашел решение:):):)
Я просмотрел содержимое представления v$logmnr_contents и нашел в столбце INFO значение "In Memory Undo is unsupported". Эта строка соответствовала строке, в которой должно быть размещено мое обновление (я рассматривал столбец метки времени, я имею в виду метку времени, соответствующую времени, когда я обновлял таблицу). После поиска в Google я нашел следующее утверждение:
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SQL> ALTER SYSTEM SWITCH LOGFILE;
Теперь я вижу мой REDO (счастливый)
Это происходит из-за In Memory Undo, новой функции, появившейся в Oracle 10g. Вы можете проверить статью для получения дополнительной информации. http://www.freelists.org/post/oracle-l/First-17-updated-records-disappeared-from-REDOLOG-files,2