如果有同事误删除数据了,可以用logmnr挖掘归档日志,生成回滚sql,快速恢复数据,比用整个库的备份恢复要快得多。
一 操作步骤
1.1 创建目录
su - oracle
mkdir logmnr
create directory logmnr_dir as '/home/oracle/logmnr';
1.2 建立数据字典分析文件
execute dbms_logmnr_d.build(dictionary_filename =>'dict.ora',dictionary_location =>'LOGMNR_DIR');
1.3 添加日志分析
exec dbms_logmnr.add_logfile(logfilename=>'/data/app/oracle/arch/1_772_1164727119.dbf',options=>dbms_logmnr.new);
exec dbms_logmnr.add_logfile(logfilename=>'/data/app/oracle/arch/1_773_1164727119.dbf');
#注意,只分析第一个日志文件的时候加,options=>dbms_logmnr.new,后面的文件不要加这个,否则会少数据。
1.4 启动LOGMNR开始分析
exec DBMS_LOGMNR.START_LOGMNR(OPTIONS=>DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);
create table scott.t8 parallel(degree 8) as select * from v$logmnr_contents;
1.5 查看sql与回滚sql
select timestamp,table_name,operation,sql_redo,sql_undo from scott.t5 where table_name='T1';
示例:
1.6 跟开发沟通确认回滚sql没问题后,执行回滚sql
1.7 结束分析
execute dbms_logmnr.end_logmnr;