通过dbms_logmnr 和 dbms_LOGMNR_D 可以分析重做日志和归档日志所记载的事务的变化,
最终确定误操作的时间,跟踪用户操作,跟踪事务并还原dml操作;
– 1,add_logfile
/*
该过程为分析列表增加或删除日志文件;
或者建立日志分析列表;
options –{
dbms_logmnr.new 建立日志分析列表
dbms_logmnr.addfile 添加日志文件
dbms_logmnr.removefile 删除日志文件
}
*/
dbms_logmnr.add_logfile(LogFileName => ,Options => binary_integer);
– 2,start_loginmnr
/*
该过程为开始logMiner会话;
*/
dbms_logmnr.start_logmnr(
startScn => ,
endScn => ,
startTime => ,
endTime => ,
DictFileName => ,
Options =>
);
– 3,end_loginmnr
/*
该过程为结束logMiner会话;
*/
dbms_logmnr.end_logmnr;
– 4,mine_value
/*
该函数返回要摘取得列信息;在logMiner会话启动之后调用;
*/
dbms_logmnr.mine_value(
sql_redo_undo => ,
column_name =>
);
– 5,column_present
/*
该函数(number) 确定列是否存在数据的redo或undo部分;
*/
dbms_logmnr.column_present(sql_redo_undo => ,column_name => );
– 6,remove_logfile
/*
该过程用于删除日志文件;
*/
dbms_logmnr.remove_logfile(LogFileName => );
–7 build
/*
用于建立字典文件
*/
dbms_logmnr_d.build(dictionary_filename => ,dictionary_location => ,options => );
–8 set_tablespace
/*
用于改变logminer表所在的表空间;
*/
dbms_logmnr_d.set_tablespace(new_tablespace => );
/*
使用logminer实例
在logminer之间建立temp表 ,然后执行dml操作和日志切换操作,生成归档日志;
*/
create table temp (
cola number(10),
colb varchar2(100)
);
alter system switch logfile;
insert into temp values(1,’abc’);
update temp set cola = 2;
commit;
alter system switch logfile;
delete from temp;
alter system switch logfile;