LogMiner的使用

LogMiner是用 来观看和分析oracle数据库重做日志内容的。
使用时涉 及到oracle的过程和视图如下:
 视图 用途
 v$logmnr_dictionary            显示用来决定对象ID名称的字典文件的信息
 v$logmnr_logs  在LogMiner启动时显示被分析的日志列表
 v$logmnr_contents  在LogMiner启动后可以使用这个视图,在SQL提示符下输入SQL语句来查询重做日志的内容
 过程  
 dbms_logmnr_d.build  创建一个数据字典文件
 dbms_logmnr.add_logfile  在列表中增加日志文件以供分析
 dbms_logmnr.start_logmnr  使用一个可选的字典文件和前面确定要分析的日志文件来启动LogMiner
 dbms_logmnr..end_logmnr  停止LogMiner分析

步骤一:创建数据字典文件
使用LogMiner时,创建数据字典文件是一个可选步骤,不过如果不创建,可读性很成问题。
以后是一个没有数据字典文件的日志文件:
LogMiner的使用
以下是一个有数据字典文件的日志文件:
LogMiner的使用
1、配置参数:utl_file_dir
show parameter utl_file_dir;
alter system set utl_file_dir='C:\oracle' scope=spfile;
shutdown immedate;
startup;
show parameter utl_file_dir;
2、创建一个数据字典文件:
execute dbms_logmnr_d.build(dictionary_filename => 'dictionary.ora',dictionary_location => 'C:\oracle');
执行成功后,C:\oracle下会生成一个dictionary.ora文件,可打开查看。
步骤二:产生数据库操作
  自己实验时可通过set time on 打开sql>左边的时间,将来和通过logminer读取的操作时间可以核对。
sql>set time on
17:21:20 sql>update zjw set name='test' where id=1;commit;
17:21:50 sql>drop table zjw;commit;
17:22:50 sql>select sequence# from v$Log where status ='CURRENT';
17:23:10 sql>alter system switch logfile;(如果只分析当前这个归档,只这一次切换即可)
查询到当前redo的序号后,
可相对应得到switch logfile后的归档日志文件名:如当前redo序号为6,归档目录下的O1_MF_1_6_5T15PT03_.ARC即为对应update和drop操作所在的归档。
也可以不切换,直接用下面步骤三的过程分析 redo,如上面序号为6的redo为group3,即REDO03.log
步骤三:为分析指定日志文件
使用过程来创建一个可供分析的日志文件列表,创建成功后将可在 v$logmnr_logs查询到。
select * from v$logmnr_logs;
目前为空,sqlplus下执行下面的过程后会有
begin
dbms_logmnr.add_logfile(logfilename => 'C:\oracle\ZJW\ARCHIVELOG\2010_03_17\O1_MF_1_6_5T15PT03_.ARC', options => dbms_logmnr.NEW);
     dbms_logmnr.add_logfile(logfilename => 'C:\oracle\ZJW\ARCHIVELOG\2010_03_17\O1_MF_1_7_5T15R186_.ARC', options => dbms_logmnr.ADDFILE);
     dbms_logmnr.add_logfile(logfilename => 'C:\oracle\ZJW\ARCHIVELOG\2010_03_17\O1_MF_1_8_5T170CQL_.ARC', options => dbms_logmnr.ADDFILE);
end;
或者分析redo:
begin
dbms_logmnr.add_logfile(logfilename => 'C:\oracle\data\zjw\REDO03.log', options => dbms_logmnr.NEW); 
end;

由于v$logmnr_logs为空,表示此过程未执行过,第一次执行的options应为dbms_logmnr.NEW,以后的为dbms_logmnr.ADDFILE,本实验只分析序号为6的redo的归档,所以下面2个可以先不执行。
执行成功后,查询:
select db_name,thread_sqn,filename from v$logmnr_logs;
DB_NAME   THREAD_SQN       FILENAME
--------------------------------------------------------------------------------
ZJW                             9                                        C:\oracle\ZJW\ARCHIVELOG\2010_03_18\O1_MF_1_9_5T467GMP_.ARC

步骤4:启动LogMiner
execute dbms_logmnr.start_logmnr(dictfilename => 'C:\oracle\dictionary.ora');
指定步骤1中产生的数据字典文件
步骤5:分析日志内容
v$Logmnr_contents   有大量字段。具体自行desc。
column  operation  format a10;
column  operation  format a20;
column  username  format a10;
select operation,to_char(timestamp,'yyyy-mm-dd hh24:mm:ss')   time ,username from v$Logmnr_contents where table_name='ZJW' ;

select   sql_redo,sql_undo from v$Logmnr_contents where table_name='ZJW';
步骤6:停止LogMiner
停止后,v$logmnr_contents和v$logmnr_logs都将被清空。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值