首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

Oracle施用日志挖掘技术找回误删数据

2013-07-26 
Oracle使用日志挖掘技术找回误删数据  数据库为归档模式,要不然有点悲剧,只能基于联机日志做挖掘,当然不能

Oracle使用日志挖掘技术找回误删数据
  数据库为归档模式,要不然有点悲剧,只能基于联机日志做挖掘,当然不能挖得太深,只能找回短时间内删除的数据(也就是联机日志没有被覆盖的数据)。

1.获取数据字典:
(1)修改参数
alter system set utl_file_dir='d:\' scope=spfile;

(2)重启oracle
shutdown immediate;
startup

(3)生成字典
exec dbms_logmnr_d.build('dictionary.ora','d:\',options =>dbms_logmnr_d.store_in_flat_file);

2.插入、删除示例数据
insert into scott.emp values(8000,'wallimn','BOSS',7782,sysdate,5000,null,10);
delete from scott.emp where empno=8000;
commit;

3.日志挖掘
刚删除,分析一下联机日志就可以了,看看当前日志
select * from v$logfile;

发现2号日志为当前日志,加入分析
exec dbms_logmnr.add_logfile(logfilename=>'C:\oracle\oradata\ORADB\REDO02.LOG');
exec dbms_logmnr.start_logmnr(dictfilename=>'d:\dictionary.ora');

4.查询分析结果
select scn,timestamp,sql_redo,sql_undo from v$logmnr_contents where sql_redo like '%8000%';
可以根据sql_undo提供的信息,就可以恢复删除的数据。

5.结束挖掘
dbms_logmnr.end_logmnr;

热点排行