LogMiner是用 来观看和分析oracle数据库重做日志内容的。
使用时涉 及到oracle的过程和视图如下:
使用时涉 及到oracle的过程和视图如下:
| 用途 |
| |
| |
| |
| |
| |
| |
| |
| |
步骤一:创建数据字典文件
使用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文件,可打开查看。
步骤二:产生数据库操作
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);
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
--------------------------------------------------------------------------------
ZJW
步骤4:启动LogMiner
execute dbms_logmnr.start_logmnr(dictfilename => 'C:\oracle\dictionary.ora');
指定步骤1中产生的数据字典文件
步骤5:分析日志内容
v$Logmnr_contents
column operation format a10;
column operation format a20;
column username format a10;
select operation,to_char(timestamp,'yyyy-mm-dd hh24:mm:ss')
select
步骤6:停止LogMiner
停止后,v$logmnr_contents和v$logmnr_logs都将被清空。