首先需要初始化参数utl_file_dir
但这个参数不能使用alter system命令只在内存中动态地改变这个参数,必须修改初始化参数文件
alter system set utl_file_dir ='D:/oracle/admin/tx431/cdump/' scope=spfile;
如果在执行dbms_logmnr_d.build过程时,没有设置utl_file_dir,或者dictionary_location的值与 utl_file_dir 不相同,都会出现错误提示。
关闭数据库。重新启动数据库,使设置生效。
然后提取数据字典文件
execute sys.dbms_logmnr_d.build('logc.ora','D:/oracle/admin/tx431/cdump/');
后面的路径要和 utl_file_dir 相同
创建一个新的要分析的重做日志的列表,并向其中添加第一个重做日志文件
execute dbms_logmnr.add_logfile('D:/ORACLE/ORADATA/TX431/REDO01.LOG',options=>sys.dbms_logmnr.NEW);
根据需要,添加新的要分析的重做日志文件
execute dbms_logmnr.add_logfile('D:/ORACLE/ORADATA/TX431/REDO02.LOG',options=>sys.dbms_logmnr.ADDFILE);
execute dbms_logmnr.add_logfile('D:/ORACLE/ORADATA/TX431/REDO03.LOG',options=>sys.dbms_logmnr.ADDFILE);
也可以根据需要,从重做日志文件列表中删除重做日志文件,
excute dbms_logmnr.add_logfile('D:/ORACLE/ORADATA/TX431/REDO03.LOG'
,options=>dbms_logmnr.removefile);
启动logminer会话
execute dbms_logmnr.start_logmnr(dictfilename=>'D:/oracle/admin/tx431/cdump/logc.ora');
执行上面的过程后,logminer 会将重做日志文件的分析结果保存到v$logmnr_contents视图中,可以用desc v$logmnr_contents查看该视图包含的内容
select scn,operation,sql_redo,sql_undo from v$logmnr_contents where seg_name='ta_pdt_type';
一个是 sql_redo,另一个是sql_undo
一个是插入,另一就是删除
select log_id,filename,db_id,db_name from v$logmnr_logs;