LogMiner工具分析归档日志,从而做数据恢复。
设置数据库的当前时间格式:
SQL>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
查询数据库当前系统时间:
切换当前重做日志已生成归档日志:
sqlplus下切换sys用户:SQL>conn /as sysdba
重做日志生成归档日志:
SQL>alter system switch logfile;
查看数据库归档日志序号:视图v$log_history可以产看归档日志信息,其中sequence#为归档日志序列号,first_time为归档日志开始时间。
SQL>select sequence#,first_time from v$log_history order by first_time desc;
如何确定要分析的日志文件:对比检查检查点之前和之后的两个归档日志文件。
归档日志一般在$ORACLE_HOME/flash_recovery_area/ORACLE_SID/archivelog目录下。
查看需要分析哪些归档日志,sys用户登录pl/sql developer进行查询:
SQL>select t.first_time,t.namefrom v$archived_log torderby t.first_time desc
对比上表找出检查时间点前后的俩个归档日志进行对比分析。
使用LogMiner工具分析数据:
Sys用户登录sqlplus下输入:
SQL>execute dbms_logmnr.add_logfile(logfilename=>’右归档日志路径’,
options=>dbms_logmnr.new);
SQL>execute dbms_logmnr.add_logfile(logfilename=>’左归档日志路径’,
options=>dbms_logmnr.addfile);
启动logminer工具:
SQL>execute dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);
把分析数据放入表中并授权给普通用户:
SQL>create table logminer_01
As
Select * from v$logmnr_contents;
把logminer_01表的查询授权给用户:
SQL>grant select on logminer_01 to scott;
结束logminer分析:
SQL>execute dbms_logmnr.end_logmnr;
查看分析日志的结果:
SQL>select t.timestamp,t.sql_redo,t.sql_undo
from sys.logminer_01 t
where t.seg_owner='SCOTT'and t.sql_undo isnotnull;
查询结果中slq_redo就是刚才进行的操作,若想取消刚才的增删改操作,就执行相应的sql_undo下的SQL语句即可。