1 Logminer简介
1.1 LogMiner介绍
Oracle LogMiner 是Oracle公司从产品8i以后提供的一个实际非常有用的分析工具,使用该工具可以轻松获得Oracle 在线/归档日志文件中的具体内容,特别是该工具可以分析出所有对于数据库操作的DML和DDL语句。该工具特别适用于调试、审计或者回退某个特定的事务。
LogMiner分析工具实际上是由一组PL/SQL包和一些动态视图(Oracle8i内置包的一部分)组成,它作为Oracle数据库的一部分来发布是8i产品提供的一个完全免费的工具。但该工具和其他Oracle内建工具相比使用起来显得有些复杂,主要原因是该工具没有提供任何的图形用户界面(GUI)。
1.2 LogMiner作用
在Oracle 8i之前,Oracle没有提供任何协助数据库管理员来读取和解释重作日志文件内容的工具。系统出现问题,对于一个普通的数据管理员来讲,唯一可以作的工作就是将所有的log文件打包,然后发给Oracle公司的技术支持,然后静静地等待Oracle 公司技术支持给我们最后的答案。然而从8i以后,Oracle提供了这样一个强有力的工具--LogMiner。
LogMiner 工具即可以用来分析在线,也可以用来分析离线日志文件,即可以分析本身自己数据库的重作日志文件,也可以用来分析其他数据库的重作日志文件。
总的说来,LogMiner工具的主要用途有:
1、跟踪数据库的变化:可以离线的跟踪数据库的变化,而不会影响在线系统的性能。
2、回退数据库的变化:回退特定的变化数据,减少point-in-time recovery的执行。
3、优化和扩容计划:可通过分析日志文件中的数据以分析数据增长模式
1.3 分析其它数据库
当分析其它数据库的重作日志文件时,需要注意的是,LogMiner必须使用被分析数据库实例产生的字典文件,而不是安装LogMiner的数据库产生的字典文件。因为如果没有正确的字典文件,LogMiner解释出来的语句中关于数据字典中的部分(如表名、列名等)和数值都将是16进制的形式,我们是无法直接理解的。
另外,必须保证安装LogMiner数据库的字符集和被分析数据库的字符集相同。源数据库(Source Database)平台必须和分析数据库(Mining Database)平台一样。
Oracle通过LogMiner工具对Redo Log进行挖掘,显示出一系列可读的信息,该过程称为日志挖掘。LogMiner通过V$LOGMNR_CONTENTS视图显示Redo Log中的信息。
1.3 使用详解
1.3.1 安装LogMiner
在使用LogMiner之前需要确认Oracle是否带有进行LogMiner分析包,一般来说Windows操作系统Oracle10g以上都默认包含。如果不能确认,可以DBA身份登录系统,查看系统中是否存在运行LogMiner所需要的dbms_logmnr、dbms_logmnr_d包。
如果没有需要安装LogMiner工具,必须首先要运行下面这样两个脚本(windows是在 app/Administrator/product/11.2_db1/rdbms/admin文件夹内):
1、$ORACLE_HOME/rdbms/admin/dbmslm.sql
2、$ORACLE_HOME/rdbms/admin/dbmslmd.sql.
这两个脚本必须均以DBA用户身份运行。其中第一个脚本用来创建DBMS_LOGMNR包,该包用来分析日志文件。第二个脚本用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。
创建完毕后将包括如下过程和视图:
类型 | 过程名 | 用途 |
过程 | Dbms_logmnr_d.build | 创建一个数据字典文件 |
过程 | Dbms_logmnr.add_logfile | 在类表中增加日志文件以供分析 |
过程 | Dbms_logmnr.start_logmnr | 使用一个可选的字典文件和前面确定要分析日志文件来启动LogMiner |
过程 | Dbms_logmnr.end_logmnr | 停止LogMiner分析 |
视图 | V$logmnr_dictionary | 显示用来决定对象ID名称的字典文件的信息 |
视图 | V$logmnr_logs | 在LogMiner启动时显示分析的日志列表 |
视图 | V$logmnr_contents | LogMiner启动后,可以使用该视图在SQL提示符下输入SQL语句来查询重做日志的内容 |
1.3.2 创建数据字典文件
参考资料:
5. Oracle日志挖掘实操