我使用logminer从archivelog获取更改数据,但获取无效的rowid'AAAAAAAAAAAAAAAAAA'。怎么会发生这种情况。它只是一个插入操作。
复制目录
begin
sys.dbms_logmnr_d.build(options => dbms_logmnr_d.STORE_IN_REDO_LOGS);
end;
/
添加日志文件
begin
sys.dbms_logmnr.add_logfile(LogFileName => '/arch/archlog/SZO1ABS9/ARC0000286133_0846017616.0001',
Options => sys.dbms_logmnr.NEW);
end;
/
启动logmnr
begin
sys.dbms_logmnr.start_logmnr(Options => sys.dbms_logmnr.DICT_FROM_REDO_LOGS +
sys.dbms_logmnr.COMMITTED_DATA_ONLY);
end;
/
select scn,start_scn,commit_scn,timestamp,operation,row_id,sql_redo,sql_undo from v$logmnr_contents
where row_id = 'AAAAAAAAAAAAAAAAAA' and scn = '7590067871061';
答案 0 :(得分:0)
我确定您现在已经解决了这个问题,但是最近不得不处理相同的问题。
我不确定是什么根本原因,但我想出了两种方法来解决它。
在后处理过程中,我通过发出新查询以通过MINE_VALUE获取表的pkey值来固定了这些rowid,然后可以使用该查询通过其pkey查询表中的rowid。
如果启用了闪回,则显然已经解决了此修复程序。如果您在FLASHBACK_TRANSACTION_QUERY或表中的版本查询中查看同一笔交易,则会看到正确的ROWID且没有“ AAAA ..”。