`

转发:LogMiner配置使用手册

 
阅读更多

http://www.cnblogs.com/shishanyuan/p/3140440.html

 

LogMiner配置使用手册

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 使用详解

1.3.1 安装LogMiner

在使用LogMiner之前需要确认Oracle是否带有进行LogMiner分析包,一般来说Windows操作系统Oracle10g以上都默认包含。如果不能确认,可以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包,该包用来创建数据字典文件。

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

类型

过程名

用途

过程

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  创建数据字典文件

LogMiner工具实际上是由两个新的PL/SQL内建包((DBMS_LOGMNR 和 DBMS_ LOGMNR_D)和四个V$动态性能视图(视图是在利用过程DBMS_LOGMNR.START_LOGMNR启动LogMiner时创建)组成。在使用LogMiner工具分析redo log文件之前,可以使用DBMS_LOGMNR_D 包将数据字典导出为一个文本文件。该字典文件是可选的,但是如果没有它,LogMiner解释出来的语句中关于数据字典中的部分(如表名、列名等)和数值都将是16进制的形式,我们是无法直接理解的。例如,下面的sql语句:

INSERT INTO dm_dj_swry (rydm, rymc) VALUES (00005, '张三'); 

LogMiner解释出来的结果将是下面这个样子:

insert into Object#308(col#1, col#2) values (hextoraw('c30rte567e436'), hextoraw('4a6f686e20446f65')); 

创建数据字典的目的就是让LogMiner引用涉及到内部数据字典中的部分时为他们实际的名字,而不是系统内部的16进制。数据字典文件是一个文本文件,使用包DBMS_LOGMNR_D来创建。如果我们要分析的数据库中的表有变化,影响到库的数据字典也发生变化,这时就需要重新创建该字典文件。另外一种情况是在分析另外一个数据库文件的重作日志时,也必须要重新生成一遍被分析数据库的数据字典文件。

创建数据字典文件之前需要配置LogMiner文件夹:

1 CREATE DIRECTORY utlfile AS 'D:\oracle\oradata\practice\LOGMNR';
2 alter system set utl_file_dir='D:\oracle\oradata\practice\LOGMNR' scope=spfile;

创建字典文件需要以DBA用户登录,创建到上面配置好的LogMiner文件夹中:

1 CONN LOGMINER/ LOGMINER@PRACTICE AS SYSDBA
2 EXECUTE dbms_logmnr_d.build(dictionary_filename => 'dictionary.ora', dictionary_location =>'D:\oracle\oradata\practice\LOGMNR');

1.3.3 加入需分析的日志文件

Oracle的LogMiner可以分析在线(online)和归档(offline)两种日志文件,加入分析日志文件使用dbms_logmnr.add_logfile过程,第一个文件使用dbms_logmnr.NEW参数,后面文件使用dbms_logmnr.ADDFILE参数。

1、创建列表

1 BEGIN
2 dbms_logmnr.add_logfile(logfilename=>'D:\oracle\oradata\practice\REDO03.LOG',options=>dbms_logmnr.NEW);
3 END;
4 /

2、添加其他日志文件到列表

1 BEGIN
2 dbms_logmnr.add_logfile(logfilename=>'D:\oracle\oradata\practice\ARCHIVE\ARC00002_0817639922.001',options=>dbms_logmnr.ADDFILE);
3 dbms_logmnr.add_logfile(logfilename=>'D:\oracle\oradata\practice\ARCHIVE\ARC00003_0817639922.001',options=>dbms_logmnr.ADDFILE);
4 END;
5 /

1.3.4 使用LogMiner进行日志分析

Oracle的LogMiner分析时分为无限制条件和限制条件两种,无限制条件中分析所有加入到分析列表日志文件,限制条件根据限制条件分析指定范围日志文件。

 

1、无限制条件

EXECUTE dbms_logmnr.start_logmnr(dictfilename=>'D:\oracle\oradata\practice\LOGMNR\dictionary.ora');

2、有限制条件

通过对过程DBMS_ LOGMNR.START_LOGMNR中几个不同参数的设置(参数含义见表1),可以缩小要分析日志文件的范围。通过设置起始时间和终止时间参数我们可以限制只分析某一时间范围的日志。

参数

参数类型

默认值

含义

StartScn

数字型

0

分析重作日志中SCN≥StartScn日志文件部分

EndScn

数字型

0

分析重作日志中SCN≤EndScn日志文件部分

StartTime

日期型

1998-01-01

分析重作日志中时间戳≥StartTime的日志文件部分

EndTime

日期型

2988-01-01

分析重作日志中时间戳≤EndTime的日志文件部分

DictFileName

字符型

 

字典文件该文件包含一个数据库目录的快照。

如下面的例子,我们仅仅分析2013年6月8日的日志,:

EXECUTE dbms_logmnr.start_logmnr(

DictFileName => dictfilename=>'D:\..\practice\LOGMNR\dictionary.ora', 

StartTime =>to_date('2013-6-8 00:00:00','YYYY-MM-DD HH24:MI:SS')

EndTime =>to_date(''2013-6-8 23:59:59','YYYY-MM-DD HH24:MI:SS ')); 

也可以通过设置起始SCN和截至SCN来限制要分析日志的范围:

EXECUTE dbms_logmnr.start_logmnr(

DictFileName =>'D:\..\practice\LOGMNR\dictionary.ora',

StartScn =>20,

EndScn =>50); 

1.3.5 观察分析结果(v$logmnr_contents)

到现在为止,我们已经分析得到了重作日志文件中的内容。动态性能视图v$logmnr_contents包含LogMiner分析得到的所有的信息。

SELECT sql_redo FROM v$logmnr_contents; 

如果我们仅仅想知道某个用户对于某张表的操作,可以通过下面的SQL查询得到,该查询可以得到用户LOGMINER对表EMP所作的一切工作。

SELECT sql_redo FROM v$logmnr_contents WHERE username='LOGMINER' AND tablename='EMP'; 

序号

名称

含义

1

SCN

特定数据变化的系统更改号

2

TIMESTAM

数据改变发生的时间

3

COMMIT_TIMESTAMP

数据改变提交的时间

4

SEG_OWNER

数据发生改变的段名称

5

SEG_NAME

段的所有者名称

6

SEG_TYPE

数据发生改变的段类型

7

SEG_TYPE_NAME

数据发生改变的段类型名称

8

TABLE_SPACE

变化段的表空间

9

ROW_ID

特定数据变化行的ID

10

SESSION_INFO

数据发生变化时用户进程信息

11

OPERATION

重做记录中记录的操作(如INSERT)

12

SQL_REDO

可以为重做记录重做指定行变化的SQL语句(正向操作)

13

SQL_UNDO

可以为重做记录回退或恢复指定行变化的SQL语句(反向操作)

需要强调一点的是,视图v$logmnr_contents中的分析结果仅在我们运行过程'dbms_logmrn.start_logmnr'这个会话的生命期中存在。这是因为所有的LogMiner存储都在PGA内存中,所有其他的进程是看不到它的,同时随着进程的结束,分析结果也随之消失。

最后,使用过程DBMS_LOGMNR.END_LOGMNR终止日志分析事务,此时PGA内存区域被清除,分析结果也随之不再存在。

2 数据同步Oracle数据库设置

Oracle数据使用LogMiner查看执行SQL语句,其中需要进行如下四步骤是指:

1、设置数据库为归档模式;

2、设置LogMiner字典文件路径等;

3、创建数据同步用户(如用户名为LOGMINER,该用户拥有DBA权限);

4、验证配置是否成功;

2.1 设置数据库为归档模式

2.1.1 查看数据库是否为归档模式

使用SqlPlus或者命令行界面连接数据库(以下以命令行界面操作)

--进入SqlPlus程序

sqlplus /nolog

--使用DBA用户登录到源数据库中

conn system/system@practic as sysdba

--查看PRACTICE数据库是否处于归档模式

1 SELECT dbid, name, log_mode FROM v$database;
2 或者
3 ARCHIVE LOG LIST;

如果显示数据库显示为归档模式,则设置数据库为归档模式可跳过;如果显示数据库为非归档模式则需要进行以下设置。

上图显示数据库未进行归档,需要进行归档设置。

2.1.2 设置归档模式

创建ARCHIVE文件夹,ARCHIVE文件夹路径根据所在服务器进行设置,在下面操作中设置为" D:\oracle\oradata\practice\ARCHIVE"

--设置归档日志文件路径

ALTER SYSTEM SET log_archive_dest="D:\oracle\oradata\practice\ARCHIVE";

--日志文件名称格式:

ALTER SYSTEM SET log_archive_format="ARC%S_%R.%T" SCOPE=SPFILE;

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

1 SHUTDOWN IMMEDIATE;
2 STARTUP MOUNT;

--设置数据库为归档模式

ALTER DATABASE ARCHIVELOG;

(注意:如果重启数据失败,请参考第4章节异常问题处理)

2.1.3 验证归档是否设置成功

--查看PRACTICE数据库是否处于归档模式

1 SELECT dbid, name, log_mode FROM v$database;
2 或者
3 ARCHIVE LOG LIST;

--验证参数设置是否起作用

SELECT dest_id, status, destination FROM v$archive_dest WHERE dest_id =1;

--在参数文件设置已经起作用,打开数据库

ALTER DATABASE OPEN;

2.2 LogMiner设置

2.2.1 创建LogMiner文件夹

创建LOGMNR文件夹,路径为"D:\oracle\oradata\practice\LOGMNR"

2.2.2 设置LogMiner字典文件路径

--创建数据字典文件

1 CREATE DIRECTORY utlfile AS 'D:\oracle\oradata\practice\LOGMNR';
2 alter system set utl_file_dir='D:\oracle\oradata\practice\LOGMNR' scope=spfile;

2.2.3 开启LogMiner日志补充模式

--创建数据字典文件

alter database add supplemental log data;

2.2.4 重启数据库验证

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

1 SHUTDOWN IMMEDIATE;
2 STARTUP;

--查看Logminer文件夹是否设置

SHOW PARAMETER utl_file_dir;

2.3 创建数据同步用户

在数据库创建LOGMINER用户,该用户需要具有DBA权限

--在源数据库创建LOGMINER用户,并赋予DBA权限

1 CREATE USER LOGMINER IDENTIFIED BY LOGMINER;
2 GRANT CONNECT, RESOURCE,DBA TO LOGMINER;

3 使用LogMiner读取日志例子

在使用LogMiner读取归档/在线日志需要按照第2章节进行设置,设置完毕后可以对归档和在线日志进行分析。特别是需要开启LogMiner日志补充模式,如果没有开始LogMiner补充模式将无法查看DDL语句,按照测试结果看,只有开始LogMiner日志补充模式后,才能查看DDL语句,在此之前进行DDL将无法进行查看。

3.1 使用LogMiner读取在线日志

3.1.1 测试数据准备

--以LOGMINER用户登录(非DBA登录)创建AAAAA表(Oracle11g请注意用户名、密码大小写)

1 CONNECT LOGMINER/LOGMINER@PRACTICE
2 CREATE TABLE AAAAA(field001 varchar2(100));     
3 INSERT INTO AAAAA (field001) values  ('000000');  
4 INSERT INTO AAAAA (field001) values  ('0000010');
5 commit;

3.1.2  创建数据字典文件

数据库对象发生变化,需要重新创建数据字典文件

--以LOGMINER用户(DBA权限)登录,生成字典文件

1 CONN LOGMINER/LOGMINER@PRACTICE AS SYSDBA
2 EXECUTE dbms_logmnr_d.build(dictionary_filename => 'dictionary.ora', dictionary_location =>'D:\oracle\oradata\practice\LOGMNR');

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

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

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

 

从上图可以看出在线日志REDO03处于ACTIVE状态中

3.1.4 加入需分析的日志文件

--加入解析在线日志文件

1 BEGIN
2 dbms_logmnr.add_logfile(logfilename=>'D:\oracle\oradata\practice\REDO03.LOG',options=>dbms_logmnr.NEW);
3 END;
4 /

 

3.1.5 使用LogMiner进行分析

--启动LogMiner进行分析

EXECUTE dbms_logmnr.start_logmnr(dictfilename=>'D:\oracle\oradata\practice\LOGMNR\dictionary.ora');

3.1.6 观察分析结果

--查询相关操作日志

1 SELECT sql_redo, sql_undo, seg_owner
2    FROM v$logmnr_contents
3   WHERE seg_name='AAAAA'
4     AND seg_owner='LOGMINER';

3.2 使用LogMiner读取归档日志

3.2.1 测试数据准备

--以LOGMINER用户登录(非DBA权限)创建EMP表(Oracle11g请注意用户名、密码大小写)

复制代码
 1 CONN LOGMINER/ LOGMINER@PRACTICE
 2 CREATE TABLE EMP
 3        (EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,
 4         ENAME VARCHAR2(10),
 5         JOB VARCHAR2(9),
 6         MGR NUMBER(4),
 7         HIREDATE DATE,
 8         SAL NUMBER(7,2),
 9         COMM NUMBER(7,2),
10         DEPTNO NUMBER(2));
复制代码

 --插入EMP数据

1 INSERT INTO EMP VALUES (7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
2 INSERT INTO EMP VALUES (7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30);
3 INSERT INTO EMP VALUES (7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30);
4 INSERT INTO EMP VALUES (7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20);
5 COMMIT;

--从v$log视图中找出日志文件的序号

1 CONNECT system/system@practice as sysdba
2 ALTER SYSTEM SWITCH LOGFILE;
3 select sequence#, FIRST_CHANGE#, NEXT_CHANGE#,name from v$archived_log order by sequence# desc;

3.2.2 创建数据字典文件

确保按照2.2进行logMiner设置

--以LOGMINER用户(DBA权限)登录,生成字典文件

1 CONN LOGMINER/ LOGMINER@PRACTICE AS SYSDBA
2 EXECUTE dbms_logmnr_d.build(dictionary_filename => 'dictionary.ora', dictionary_location =>'D:\oracle\oradata\practice\LOGMNR');

3.2.3  加入需分析的日志文件

--加入解析日志文件

1 BEGIN
2 dbms_logmnr.add_logfile(logfilename=>'D:\oracle\oradata\practice\ARCHIVE\ARC00002_0817639922.001',options=>dbms_logmnr.NEW);
3 END;
4 /

3.2.4 使用LogMiner进行分析

--启动LogMiner进行分析

1 EXECUTE dbms_logmnr.start_logmnr(dictfilename=>'D:\oracle\oradata\practice\LOGMNR\dictionary.ora');

 

3.2.5 观察分析结果

分享到:
评论

相关推荐

    Oracle日志分析工具LogMiner的研究.pdf

    1. 源库和目标库:LogMiner需要在源库和目标库之间进行配置,源库是生成日志的库,目标库是执行LogMiner的库。 2. 字典:LogMiner使用字典来翻译日志中的内部信息,字典需要在目标库中创建。 3. 源库调整:源库需要...

    logminer如何安装配置使用

    使用LogMiner时,DBA首先需要配置数据字典,然后指定要分析的日志文件范围,并启动LogMiner进行分析。分析完成后,通过查询v$logmnr_contents等视图获取结果。这种强大的工具使得对Oracle数据库的操作跟踪和审计变得...

    oracle日志分析工具LogMiner使用.

    Oracle 日志分析工具 LogMiner 使用 Oracle 日志分析工具 LogMiner 是 Oracle 数据库中的一种功能强大且灵活的日志分析工具,它可以帮助数据库管理员、开发人员和用户快速地对数据库进行日志分析和问题诊断。下面是...

    Oracle 9i LogMiner工具使用说明

    - **查询在线日志文件**:使用`SELECT * FROM v$log;`和`SELECT * FROM v$logfile;`命令来获取当前可用的日志文件信息。这些信息对于确定哪些日志文件需要被分析非常关键。 #### 四、LogMiner的高级应用 除了基本...

    Oracle10G LogMiner的配置

    Oracle 10G LogMiner 是Oracle数据库系统中一个强大的日志分析工具,它...总的来说,Oracle 10G LogMiner是数据库管理和维护中一个不可或缺的工具,通过合理的配置和使用,可以有效地提升数据库管理的效率和准确性。

    oracle日志分析工具LogMiner的使用

    Oracle的日志分析工具LogMiner是Oracle数据库内置的一个强大功能,用于分析数据库的redo logs,以获取关于数据库操作的历史信息。LogMiner可以帮助DBA进行...正确配置和使用LogMiner是每个Oracle DBA必备的技能之一。

    Oracle logMiner

    - **LogMiner结构**:LogMiner使用V$LOGMNR_CONTENTS视图提供分析结果,它包含了从redo日志中解析出的SQL语句、事务信息和时间戳等。 2. **使用LogMiner的过程** - **启动LogMiner**:通过执行DBMS_LOGMNR包中的...

    logminer安装与配置10g图解

    本文将根据提供的文件信息,详细解析在Windows XP环境下安装与配置Oracle LogMiner 10g的过程。 ### 一、LogMiner简介 LogMiner是Oracle数据库的一个内置工具,主要用于读取和分析重做日志文件,从中提取出SQL语句...

    LogMiner实验手册

    这个实验手册将引导我们深入理解LogMiner的工作原理、使用方法以及它在日常数据库运维中的实际应用。 **一、LogMiner的基本概念** LogMiner是Oracle数据库自带的一个实用程序,能够帮助DBA(数据库管理员)分析...

    LogMiner工具使用说明.doc

    1. 启动LogMiner:使用`DBMS_LOGMNR.START_LOGMNR`过程启动LogMiner,并指定需要分析的日志文件列表和其他参数。 2. 查询分析结果:通过查询V$LOGMNR_CONTENTS或V$LOGMNR_DDL等视图,获取解析后的日志信息,包括DML...

    LogMiner.zip

    在《LogMiner.docx》文档中,可能详细介绍了如何使用LogMiner,包括如何配置、启动、创建视图、查询和分析日志,以及如何解读和利用这些分析结果。该文档应作为学习和使用LogMiner的重要参考资料,帮助读者深入了解...

    Logminer应用实例

    2. **生成数据字典文件**:使用`dbms_logmnr_d.build()`创建数据字典文件,这将记录数据库对象的元数据信息。 3. **建立日志分析表**:调用`dbms_logmnr.add_logfile()`将要分析的日志文件添加到日志分析表中。 4. *...

    Oracle日志管理logminer使用

    可以通过以下命令来安装LogMiner: ```bash $ORACLE_HOME/rdbms/admin/dbmslogmnr.sql ``` **使用LogMiner的步骤:** 1. **启动LogMiner会话:** ```sql SQL> exec DBMS_LOGMNR.START_LOGMNR; ``` 2. **添加...

    Oracle LogMiner

    ### Oracle LogMiner:数据挖掘利器 #### 一、Oracle LogMiner简介 Oracle LogMiner是Oracle数据库提供的一个工具,用于解析和提取重做日志文件中的SQL语句和数据更改记录。重做日志文件包含了对数据库所做的所有...

    oracle日志分析工具LogMiner使用

    ### Oracle日志分析工具LogMiner使用详解 #### 一、概述 Oracle LogMiner是Oracle数据库提供的一个强大工具,用于分析重做日志文件,提取数据库中的更改记录(即SCN序列)。通过LogMiner,我们可以追踪并监控...

    Oracle 10g中LogMiner的使用.pdf

    2. **启动日志挖掘**:使用DBMS_LOGMNR包的START_LOGMNR过程,指定开始和结束时间,以及选项,如使用在线目录和连续挖掘。 3. **检查结果**:通过查询`V$LOGMNR_CONTENTS`视图,可以获取在选定时间段内执行的操作...

    Oracle Logminer

    在使用 Logminer 进行分析之前,通常需要创建数据字典文件,尤其是在 Oracle 10g 及以后的版本,可以使用在线数据字典。数据字典对于正确解读日志中的操作至关重要,因为它将内部对象ID转换为可读的表名和列名。如果...

Global site tag (gtag.js) - Google Analytics