oracle日志挖掘与定点恢复

 数据备份

alter database begin backup;

cp /oracle/app/oradata/TEST/*.dbf /home/oracle/bak/

alter database end backup;

修改数据的存储目录

alter system set utl_file_dir='/home/oracle/logminer' scope=spfile;

因为修改了参数文件 所以 要重新启动数据库

创建存储数据字典文件的文件

execute dbms_logmnr_d.build('shwdict.ora','/home/oracle/logminer');

select * from v$log 查看当前用的是哪个日志

execute dbms_logmnr.add_logfile('/oracle/app/oradata/TEST/redo01.log',dbms_logmnr.new);

然后就可以进行数据的挖掘了

exec dbms_logmnr.start_logmnr (dictfilename=>'/home/oracle/logminer/shwdict.ora');

这里将挖掘出来的数据保存到刚才建好的文件中

修改时间的显示格式

alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; 

select SCN,TIMESTAMP,SQL_REDO from v$LOGMNR_CONTENTS where SQL_REDO like '%drop%';

通过模糊查询 找出数据内的scn号 时间 和执行了什么想的sql语句

数据恢复

关闭数据库 

将备份的数据还原

startup mount 进入mount状态

alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

recover database until time '2013-04-16 21:24:30';

这里的时间 就是通过数据挖掘得到的执行误删除时的时间 记得将时间往前提前几秒钟

alter database open resetlogs;

时间点还原 必须要resetlog 

启动数据库后 会发现 被误删除的数据已经恢复

你可能感兴趣的:(oracle,恢复,日志挖掘)