ITPub博客

首页 > 数据库 > Oracle > logmnr 恢复数据

logmnr 恢复数据

原创 Oracle 作者:wangying7737 时间:2011-01-27 09:54:32 0 删除 编辑
使用 logmnr 恢复 delete table 的数据,truncate 与 drop 的数据需要用备份恢复[@more@]用来恢复 delete 删除的数据

测试
delete zz 表 (数据5207条)

准备工作
查找当时的日志文件


首先更改恢复的表空间
exec sys.dbms_logmnr_d.set_tablespace('USERS');

1 添加日志文件
EXEC SYS.DBMS_LOGMNR.ADD_LOGFILE('/oracle/wy/redo01.log', SYS.DBMS_LOGMNR.NEW)

2 使用当前字段文件
EXEC SYS.DBMS_LOGMNR.START_LOGMNR(OPTIONS => SYS.DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG)

3 查看对zz表的操作
select operation,sql_redo,sql_undo from v$logmnr_contents
where seg_name='ZZ'

4 建立恢复临时表
create table tmp tablespace wy as
select operation,sql_redo,sql_undo from v$logmnr_contents
where seg_name='ZZ'

5 结束日志分析
exec sys.dbms_logmnr.end_logmnr

6 开始恢复
declare
mysql varchar2(4000);
num number:=0;
begin
for c_tmp in(select sql_undo from tmp where operation='DELETE') loop
mysql:= replace (c_tmp.sql_undo,';',''); --去掉sql_undo结尾的分号
execute immediate mysql;
num:= num +1;
if mod(num,1000)=0 then
commit;
end if;
end loop;
commit;
end;

7 删除临时表
drop tmp

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/748501/viewspace-1045250/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: logmnr 日志挖掘
请登录后发表评论 登录
全部评论
  • 博文量
    5
  • 访问量
    10302