Oracle11g使用logmnr(logminer)分析online log and archive log
我们在执行delete,insert,update的语句时,有时间会误操作,将数据更新错误,有时数据错误后,想知道是什么语句和什么时间执行了什么样的sql,这样就需要从历史的日志中将执行过的sql抓取出来进行分析,在oracle中logmnr是非常方便的可以从日志文件中提取对应的执行sql列表;
为了分析online log和archive log我们首先需要知道这些日志文件的存在物理路径,这时可以通过查询v$logfile来获取到online日志的路径和文件名对应sql: 查询v$archived_log表可以知道归档日志的路径及文件名: select * from v$archived_log; 查到online log的文件和archived log文件后,即可登录sqlplus 进行日志的分析了,分析共以下几步: (1) 操作系统命令提示符下执行: sqlplus /nolog (2) sqlplus命令符下执行: (3)exec dbms_logmnr.add_logfile(logfilename=>'&logPathFile',options=>dbms_logmnr.new); --将日志文件加到logmnr中,注意logmnr是基于session的,因此如果退出当前登陆用户,则对应的分析结果丢失,需要重新执行一遍操作; (4)exec dbms_logmnr.add_logfile(logfilename=>'&logPathFile',options=>dbms_logmnr.addfile); --继续往logmnr中添加日志文件,原来我想试一下这个add_logfile是否支持*添加批量文件呢,结果不好使. (5) exec dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog); --开始执行分析 (6) select timestamp,sql_redo,sql_undo from v$logmnr_contents where username='SCOTT'and table_name='T_TEST'; --查询v$logmnr_contents来查询分析结果; (7) exec dbms_logmnr.end_logmnr; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |