nbsp;
exec sys.dbms_logmnr.add_logfile(logfilename=gt;'/arch/db1_1_4038.arc');nbsp;nbsp;nbsp;
exec sys.dbms_logmnr.add_logfile(logfilename=gt;'/arch/db1_1_4039.arc');nbsp;nbsp;nbsp;
nbsp;nbsp;
exec sys.dbms_logmnr.start_logmnr(options=gt;sys.dbms_logmnr.dict_from_online_catalog);nbsp;nbsp;nbsp;
nbsp;nbsp;
col sql_redo for a50nbsp;nbsp;nbsp;
nbsp;nbsp;
select scn,timestamp,username,sql_redo from v$logmnr_contentsnbsp;nbsp;nbsp;
where operation='UPDATE' and upper(sql_redo) like '%TBL_FORM_FORM%'nbsp;nbsp;
and sql_redo like '%SGS0900021BNc10%'nbsp; --这个值是UPDATE时某一列被更新后的值,用在这里便于查找。nbsp;nbsp;nbsp;
order by scn,timestamp;nbsp;nbsp;nbsp;
exec sys.dbms_logmnr.end_logmnr;nbsp;
exec sys.dbms_logmnr.add_logfile(logfilename=gt;'/arch/db1_1_4038.arc');
exec sys.dbms_logmnr.add_logfile(logfilename=gt;'/arch/db1_1_4039.arc');
exec sys.dbms_logmnr.start_logmnr(options=gt;sys.dbms_logmnr.dict_from_online_catalog);
col sql_redo for a50
select scn,timestamp,username,sql_redo from v$logmnr_contents
where operation='UPDATE' and upper(sql_redo) like '%TBL_FORM_FORM%'
and sql_redo like '%SGS0900021BNc10%'nbsp; --这个值是UPDATE时某一列被更新后的值,用在这里便于查找。
order by scn,timestamp;
exec sys.dbms_logmnr.end_logmnr;
很不幸的是,没有找着需要的数据。再往后找了几个日志,也没找着。
如果一直找下去,显然会消耗比较长的时间,业务也已经停止了。不过可以用一种简单的方法来查找数据被错误更新发生的时间:一个比较大的表,通常段头后面的那个块,也就是存储那个表的数据的第1个块,通常是很少更新的,至少当时恢复的那个表是这样一种情况。我们可以通过数据块中ITL上的事务SCN来满足我们的要求。
(编辑:成都站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|