1. 当前位置:网站首页 > Oracle相关

Oracle Logminer技术


一、相关概念

 

1、    Logminer是什么?

 

LogMinerOracle数据库提供的一个工具,它用于分析重做日志和归档日志所记载的事务操作。

 

Logmineroracle8i开始提供的用于分析重做日志信息的工具,它包括DBMS_LOGMNRDBMS_LOGMNR_D两个package,后边的D是字典的意思。它既能分析redo log file,也能分析归档后的archive log file。在分析日志的过程中需要使用数据字典,一般先生成数据字典文件后使用,10g版本还可以使用在线数据字典。

 

Logminer也可以分析其它数据库的重做日志文件,但是必须使用重做日志所在数据库的数据字典,否则会出现无法识别的乱码。另外被分析数据库的操作系统平台最好和当前Logminer所在数据库的运行平台一样,且block size相同。

 

二、LogMiner的功能

 

LogMiner 工具即可以用来分析在线,也可以用来分析离线日志文件,即可以分析本身自己数据库的重作日志文件,也可以用来分析其他数据库的重作日志文件。

 

总的说来,LogMiner工具的主要用途有:

1、跟踪数据库的变化:可以离线的跟踪数据库的变化,而不会影响在线系统的性能。

2、回退数据库的变化:回退特定的变化数据,减少point-in-time recovery的执行。

3、优化和扩容计划:可通过分析日志文件中的数据以分析数据增长模式。

三、使用详解

 

1、    安装LogMiner

 

在使用LogMiner之前需要确认Oracle是否带有进行LogMiner分析包,如果不能确认,可以DBA身份登录系统,查看系统中是否存在运行LogMiner所需要的dbms_logmnrdbms_logmnr_d包,如果没有需要安装LogMiner工具,必须首先要运行下面这样两个脚本:

1$ORACLE_HOME/rdbms/admin/dbmslm.sql

2$ORACLE_HOME/rdbms/admin/dbmslmd.sql

这两个脚本必须均以DBA用户身份运行。其中第一个脚本用来创建DBMS_LOGMNR包,该包用来分析日志文件。第二个脚本用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。

创建完毕后将包括如下过程和视图:

这两个脚本必须均以DBA用户身份运行。其中第一个脚本用来创建DBMS_LOGMNR包,该包用来分析日志文件。第二个脚本用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。

创建完毕后将包括如下过程和视图:


1.png



四、LogMiner 设置

创建 LogMiner 文件夹

[oracle@oracle ~]$ mkdir -p logmnr

2.png



 

设置 LogMiner 字典文件路径

创建数据字典文件

SQL> create directory utlfile as '/home/oracle/logmnr';

3.png



SQL> alter system set utl_file_dir='/home/oracle/logmnr' scope=spfile;


4.png


 

开启LogMiner 日志补充

SQL> alter database add supplemental log data;


5.png


 

重启数据库验证

--修改完毕后,关闭数据库,以mount方式启动

SQL> shutdown immediate


6.png


 

SQL> startup mount

7.png



 

查看 LogMiner 文件夹是否设置

SQL> show parameter utl_file_dir;

8.png



 

打开数据库

SQL> alter database open;

9.png



 

创建具有dba权限的logminer用户

SQL> create user tchen identified by tchen;

10.png



 

SQL> grant dba to tchen;

11.png



 

五、使用LogMiner 读取日志

使用 Logminer 读取在线日志

测试数据准备

 


12.png


 

创建数据字典文件


13.png



SQL> execute dbms_logmnr_d.build(dictionary_filename=>'dict.ora',dictionary_location=>'/home/oracle/logmnr');

14.png



 

确认当前处于联机状态的日志文件

加入解析在线日志文件

SQL> SELECT group#, sequence#, status, first_change#, first_time FROM V$log ORDER BY first_change#;

15.png

 

加入需分析的日志文件

加入解析在线日志文件

SQL> begin

dbms_logmnr.add_logfile(logfilename=>'/home/app/oracle/oradata/slb/redo03.log',options=>dbms_logmnr.NEW);

 end;

 /

16.png

 

使用 LogMiner 进行分析

SQL> execute dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/logmnr/dict.ora');

17.png

 

查看分析结果

查询相关操作日志

SQL> SELECT sql_redo, sql_undo, seg_owner

 FROM v$logmnr_contents

     WHERE seg_name='AAA'

     AND seg_owner='SLB';

18.png




本文最后更新于2017-8-29,已超过 3个月没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
版权说明

本文地址:https://www.chensj.net/?post=92
未标注转载均为本站远程,转载请注明文章出处:

联系我们

在线咨询:点击这里给我发消息

微信号:chensj923

工作日:9:00-23:00,节假日休息

扫码关注