今天主要介绍利用LogMiner 工具结合日志去做数据恢复。
LogMiner 是Oracle公司从产品8i以后提供的一个实际非常有用的分析工具,使用该工具可以轻松获得Oracle 重做日志文件(归档日志文件)中的具体内容,LogMiner分析工具实际上是由一组PL/SQL包和一些动态视图组成,它作为Oracle数据库的一部分来发布,是oracle公司提供的一个完全免费的工具。
日志文件中存放着所有进行数据库恢复的数据,记录了针对数据库结构的每一个变化,也就是对数据库操作的所有DML语句。
一、开启归档日志
1、oracle需要 启动到mount状态
mkdir -p /data/arch ---要修改的归档路径
archive log list; ---查看oracle归档
shutdowm immediate;
startup mount; ---oracle需要 启动到mount状态
alter database archivelog;
alter system setlog_archive_dest_1='location=/data/arch'; ---归档路径修改为 指定路径
alter database open;
2、安装dbms包
SQL> @?/rdbms/admin/dbmslmd.sql
SQL> @?/rdbms/admin/dbmslm.sql
SQL> @?/rdbms/admin/dbmslms.sql
3、查看utl_file_dir参数
SQL> show parameter utl_file_dir
如无路径,须添加路径
SQL> alter system set utl_file_dir='/dblog' scope=spfile;
SQL> shut immediate;
SQL> startup
4、手动切换日志
alter system switch logfile;
5、查看日志文件和归档文件路径
select * from v$logfile;
select name from v$archived_log;
二、日志挖掘
1、创建日志挖掘的字典
execute dbms_logmnr_d.build(dictionary_filename=>'log.ora',dictionary_location=>'/dblog',options=>dbms_logmnr_d.store_in_flat_file);
2、添加归档日志
第一个归档日志为new,后面的直接add
exec dbms_logmnr.add_logfile('/data/arch/1_4_1127298192.dbf',dbms_logmnr.new);
exec dbms_logmnr.add_logfile('/data/arch/1_5_1127298192.dbf',dbms_logmnr.addfile);
exec dbms_logmnr.add_logfile('/data/arch/1_6_1127298192.dbf',dbms_logmnr.addfile);
3、开启日志挖掘
exec dbms_logmnr.start_logmnr(dictfilename=>'/dblog/log.ora');
4、查看日志挖掘记录,建议使用spool
spool /home/oracle/1.sql
select scn,to_char(timestamp,'yyyy-mm-dd hh24:mi:ss'),sql_redo from v$logmnr_contents where seg_name='表' and seg_owner='用户;
spool off
5、关闭日志挖掘
exec dbms_logmnr.end_logmnr;
6、查看/home/oracle/1.sql,寻找删除的语句。