1

我更新了 "HR"."AAA" 表中的几行。现在我想使用 LogMiner 将 HR.AAA 表返回到之前的状态。

我执行以下操作:

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 架构所做的更改...你能告诉我为什么吗?

4

2 回答 2

2

我找到了解决方案:):):)

我查看了视图 v$logmnr_contents 的内容,并在 INFO 列中找到了“不支持在内存中撤消”值。这一行对应于我的更新应该放置的行(我考虑了时间戳列,我的意思是时间戳对应于我更新表的时间)。谷歌搜索后,我发现以下语句:

SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
SQL> ALTER SYSTEM SWITCH LOGFILE;    

现在我可以看到我的重做(开心)

于 2011-07-10T10:32:17.083 回答
2

此行为是由于 In Memory Undo,这是从 Oracle 10g 引入的新特性。您可以查看文章以获取更多信息。 http://www.freelists.org/post/oracle-l/First-17-updated-records-disappeared-from-REDOLOG-files,2

于 2011-07-11T04:34:45.503 回答