`

使用dbms_logmnr分析oracle日志

阅读更多

使用dbms_logmnr分析oracle日志

1.     安装LogMiner工具,以SYSDBA的身份运行以下两个脚本文件

ORACLE_HOME\rdbms\admin\dbmslm.sql;

ORACLE_HOME\rdbms\admin\dbmslmd.sql;

第一个脚本用来创建DBMS_LOGMNR包,该包用来分析日志文件。

第二个脚本用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。

 

2.     授权:

GRANT EXECUTE_CATALOG_ROLE TO USER;

 

3.     准备日志文件

查看当前在线的redo log:

Select * from v$logfile;

查看归档日志文件的路径:

Select name,value from v$parameter t where t.name like ‘%archive_dest%’;

 

4.     添加日志文件到logmnr

BEGIN

SYS.DBMS_LOGMNR.ADD_LOGFILE(‘E:\ORACLE\ORADATA\ORCL\REDO_002.LOG’,SYS.DBMS_LOGMNR.NEW);

SYS.DBMS_LOGMNR.ADD_LOGFILE(‘E:\ORACLE\ORADATA\ORCL\REDO_003.LOG’,SYS.DBMS_LOGMNR.ADDFILE);

END;

(可通过desc sys.dbms_logmnr来查看包sys.dbms_logmnr的过程和常量)

    查看已添加的日志文件

Select * from v$logmnr_logs;

5.     移除日志文件

SYS.DBMS_LOGMNR.ADD_LOGFILE(‘E:\ORACLE\ORADATA\ORCL\REDO_002.LOG’,SYS.DBMS_LOGMNR.REMOVEFILE);

 

6.     Begin a log miner session(START_LOGMNR):

SYS.DBMS_LOGMNR.START_LOGMNR(

Options => sys.dbms_logmnr.DICT_FROM_ONLINE_CATALOG);

或者

dbms_logmnr.start_logmnr(

startTime => to_date('2007-02-28 10:00:00','yyyy-mm-dd hh24:mi:ss'),

endTime => to_date('2007-02-28 15:00:00','yyyy-mm-dd hh24:mi:ss'),

DictFileName => 'G:\oracle\logs\dict.ora');

 

dbms_logmnr.start_logmnr函数的原型为:

  PROCEDURE start_logmnr(

     startScn       IN  NUMBER default 0 ,

     endScn          IN  NUMBER default 0,

     startTime      IN  DATE default '',

     endTime        IN  DATE default '',

     DictFileName  IN  VARCHAR2 default '',

     Options        IN  BINARY_INTEGER default 0 );

 

7.     查看日志内容

Select t.*  From V$LOGMNR_CONTENTS t

 

8.     Competes a log miner session(END_LOGMNR 释放内存):

BEGIN

SYS.DBMS_LOGMNR.END_LOGMNR();

    END;

 

当然也可以使用  LogMinor Viewer工具来查看,启动命令:oemapp.bat lmviewer

 

附:创建数据字典文件(data-dictionary)

    在初始化参数文件中指定数据字典文件的位置,即添加参数UTL_FILE_DIR,该参数为服务器中放置数据字典文件的目录。

    创建数据字典文件:  

SYS.DBMS_LOGMNR_D.BUILD(

dictionary_filename=>’dict.ora’,

dictionary_location=>’E:\oracle\logs’);

创建数据字典的目 : 让LogMiner引用涉及到内部数据字典中的部分时为他们实际的名字,而不是系统内部的16进制。数据字典文件是一个文本文件,使用包DBMS_LOGMNR_D来创建。如果我们要分析的数据库中的表有变化,影响到库的数据字典也发生变化,这时就需要重新创建该字典文件。另外一种情况是在分析另外一个数据库文件的重作日志时,也必须要重新生成一遍被分析数据库的数据字典文件。 在使用LogMiner工具分析redo log文件之前,可以使用DBMS_LOGMNR_D 包将数据字典导出为一个文本文件。该字典文件是可选的,但是如果没有它,LogMiner解释出来的语句中关于数据字典中的部分(如表名、列名等)和数值都将是16进制的形式,我们是无法直接理解的。

 

查看所有与logmnr相关的视图

select * from dict t where t.table_name like '%LOGMNR%'

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics