ITPub博客

首页 > 数据库 > Oracle > 如和使用oracle的LogMiner工具

如和使用oracle的LogMiner工具

原创 Oracle 作者:yuantong 时间:2005-02-28 13:20:01 0 删除 编辑

LogminerDBMS_LOGMNRDBMS_LOGMNR_Dpackage,可以用来分析Oracle的重做日志文件。Logmineroracle8i开始提供的工具。

我们可以使用logminer分析其它instance(版本可不一致)的重做日志文件,但是必须遵循以下要求:

1.      LogMiner日志分析工具仅能够分析Oracle 8以后的产品

2.      LogMiner必须使用被分析数据库实例产生的字典文件,且安装LogMiner数据库的字符集必须和被分析数据库的字符集相同

3.      被分析数据库平台必须和当前LogMiner所在数据库平台一样,且block size相同。


使用logminer

1.      安装logminer

要安装LogMiner工具,必须首先要运行下面这样两个脚本,
$ORACLE_HOME/rdbms/admin/dbmslm.sql
$ORACLE_HOME/rdbms/admin/dbmslmd.sql.
这两个脚本必须均以SYS用户身份运行。

2.      创建数据字典文件

首先在init.ora初始化参数文件中,添加参数UTL_FILE_DIR,该参数值为服务器中放置数据字典文件的目录。如:
UTL_FILE_DIR = (D:Oraclelogs)

重新启动数据库,使新加的参数生效,然后创建数据字典文件:
SQL> EXECUTE dbms_logmnr_d.build(
dictionary_filename => ' logmn_ora817.dat',
dictionary_location => ' D:Oraclelogs ');

创建数据字典是让LogMiner引用涉及到内部数据字典中的部分时使用对象的名称,而不是系统内部的16进制的ID。如果我们要分析的数据库中的表有变化,影响到库的数据字典也发生变化,就需要重新创建该字典。

3.      添加要分析的日志文件

Logminer可以用来分析在线的重做日志文件和归档日志文件,但是我们一般建议使用归档的日志文件。

a.添加新的日志文件:
SQL> EXECUTE dbms_logmnr.add_logfile(
LogFileName=>' D:databaseoracleoradataora817archive
ARC01491.001 ', Options=>dbms_logmnr.new);

b.
添加另外的日志文件到列表
SQL> EXECUTE dbms_logmnr.add_logfile(
LogFileName=>' D:databaseoracleoradataora817archive
ARC01491.002', Options=>dbms_logmnr.addfile);

c. 移去一个日志文件

SQL> EXECUTE dbms_logmnr.add_logfile(
LogFileName=>' D:databaseoracleoradataora817archive
ARC01491.002', Options=>dbms_logmnr. REMOVEFILE);

创建了要分析的日志文件,就可以对其进行分析。

4. 进行日志分析

SQL> EXECUTE dbms_logmnr.start_logmnr(
DictFileName=>' D:Oraclelogs logmn_ora817.dat ');

可以使用相应的限制条件:

时间范围:对dbms_logmnr.start_logmnr使用StartTimeEndTime参数

SCN范围:对dbms_logmnr.start_logmnr使用StartScnEndScn参数

5.观察结果:

主要是查询v$logmnr_contents

SQL> desc v$logmnr_contents;

 名称                                      ?      类型

 ----------------------------------------- -------- ----------------------

 SCN                                                NUMBER

 TIMESTAMP                                          DATE

 THREAD#                                            NUMBER

 LOG_ID                                             NUMBER

 XIDUSN                                             NUMBER

 XIDSLT                                             NUMBER

 XIDSQN                                             NUMBER

 RBASQN                                             NUMBER

 RBABLK                                             NUMBER

 RBABYTE                                            NUMBER

 UBAFIL                                             NUMBER

 UBABLK                                             NUMBER

 UBAREC                                             NUMBER

 UBASQN                                             NUMBER

 ABS_FILE#                                          NUMBER

 REL_FILE#                                          NUMBER

 DATA_BLK#                                          NUMBER

 DATA_OBJ#                                          NUMBER

 DATA_OBJD#                                         NUMBER

 SEG_OWNER                                          VARCHAR2(32)

 SEG_NAME                                           VARCHAR2(32)

 SEG_TYPE                                           NUMBER

 SEG_TYPE_NAME                                      VARCHAR2(32)

 TABLE_SPACE                                        VARCHAR2(32)

 ROW_ID                                             VARCHAR2(19)

 SESSION#                                           NUMBER

 SERIAL#                                            NUMBER

 USERNAME                                           VARCHAR2(32)

 SESSION_INFO                                       VARCHAR2(4000)

 ROLLBACK                                           NUMBER

 OPERATION                                          VARCHAR2(32)

 SQL_REDO                                           VARCHAR2(4000)

 SQL_UNDO                                           VARCHAR2(4000)

 RS_ID                                              VARCHAR2(32)

 SSN                                                NUMBER

 CSF                                                NUMBER

 INFO                                               VARCHAR2(32)

 STATUS                                             NUMBER

 PH1_NAME                                           VARCHAR2(32)

 PH1_REDO                                           VARCHAR2(2000)

 PH1_UNDO                                           VARCHAR2(2000)

 PH2_NAME                                           VARCHAR2(32)

 PH2_REDO                                           VARCHAR2(2000)

 PH2_UNDO                                           VARCHAR2(2000)

 PH3_NAME                                           VARCHAR2(32)

 PH3_REDO                                           VARCHAR2(2000)

 PH3_UNDO                                           VARCHAR2(2000)

 PH4_NAME                                           VARCHAR2(32)

 PH4_REDO                                           VARCHAR2(2000)

 PH4_UNDO                                           VARCHAR2(2000)

 PH5_NAME                                           VARCHAR2(32)

 PH5_REDO                                           VARCHAR2(2000)

 PH5_UNDO                                           VARCHAR2(2000)

通过字段sql_redo可以得到该日志文件中进行过的sql操作,通过sql_undo可以得到撤销的sql语句。

还可以用这样的sql对日志文件中的所有的操作分类统计:

select operation,count(*)from v$logmnr_contents group by operation;

视图v$logmnr_contents中的分析结果仅在我们运行过程'dbms_logmrn.start_logmnr'这个会话的生命期中存在。这是因为所有的LogMiner存储都在PGA内存中,所有其他的会话是看不到它的,同时随着会话的结束而清除分析结果。

最后,使用过程DBMS_LOGMNR.END_LOGMNR终止日志分析事务,PGA内存区域将被清除。

 

 

 

 

 

 

 

 

 

 

 

 

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12482/viewspace-791304/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-12-07

  • 博文量
    61
  • 访问量
    791990