一、相关概念
1、 Logminer是什么?
LogMiner是Oracle数据库提供的一个工具,它用于分析重做日志和归档日志所记载的事务操作。
Logminer是oracle从8i开始提供的用于分析重做日志信息的工具,它包括DBMS_LOGMNR和DBMS_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_logmnr、dbms_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包,该包用来创建数据字典文件。
创建完毕后将包括如下过程和视图:
四、LogMiner 设置
创建 LogMiner 文件夹
[oracle@oracle ~]$ mkdir -p logmnr
设置 LogMiner 字典文件路径
创建数据字典文件
SQL> create directory utlfile as '/home/oracle/logmnr';
SQL> alter system set utl_file_dir='/home/oracle/logmnr' scope=spfile;
开启LogMiner 日志补充
SQL> alter database add supplemental log data;
重启数据库验证
--修改完毕后,关闭数据库,以mount方式启动
SQL> shutdown immediate
SQL> startup mount
查看 LogMiner 文件夹是否设置
SQL> show parameter utl_file_dir;
打开数据库
SQL> alter database open;
创建具有dba权限的logminer用户
SQL> create user tchen identified by tchen;
SQL> grant dba to tchen;
五、使用LogMiner 读取日志
使用 Logminer 读取在线日志
测试数据准备
创建数据字典文件
SQL> execute dbms_logmnr_d.build(dictionary_filename=>'dict.ora',dictionary_location=>'/home/oracle/logmnr');
确认当前处于联机状态的日志文件
加入解析在线日志文件
SQL> SELECT group#, sequence#, status, first_change#, first_time FROM V$log ORDER BY first_change#;
加入需分析的日志文件
加入解析在线日志文件
SQL> begin
dbms_logmnr.add_logfile(logfilename=>'/home/app/oracle/oradata/slb/redo03.log',options=>dbms_logmnr.NEW);
end;
/

使用 LogMiner 进行分析
SQL> execute dbms_logmnr.start_logmnr(dictfilename=>'/home/oracle/logmnr/dict.ora');

查看分析结果
查询相关操作日志
SQL> SELECT sql_redo, sql_undo, seg_owner
FROM v$logmnr_contents
WHERE seg_name='AAA'
AND seg_owner='SLB';

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