[Oracle]LogMiner工具小结

[Oracle]LogMiner工具小结,第1张

概述(一)LogMiner工具的作用Logminer工具主要用来分析redo log和archive log文件。通过该工具,可以轻松获得Oracle redo log和archive log文件的具体内

(一)Logminer工具的作用
Logminer工具主要用来分析redo log和archive log文件。通过该工具,可以轻松获得Oracle redo log和archive log文件的具体内容,甚至,可以获得用户对数据库进行的DDL、DML *** 作。另外还可分析得到一些需要回滚的SQL语句。该工具特别适合调试、审计以及回退某个特定的对象。Logminer的作用总结如下:
1.跟踪数据库的变化,可以离线跟踪数据的变化,而不会影响在线的性能;
2.回退数据库的变化,回退特定的变化的数据,减少point-in-time recovery的执行 ;
3.确定事物级要执行的精细逻辑恢复 *** 作,通过查询log,取得需要的undo语句;
4.审计,查看具体用户对数据库做的具体 *** 作。

注意:
1.Logminer不支持IOT表、Long、LOB及集合类型;

 

(二)如何使用
(1)安装Logminer
通常在安装数据库后就已经安装了Logminer,要查看数据库是否安装了Logminer,只需查看数据库中是否已经有了dbms_logmnr和dbms_logmnr_d这2个package,如果有了,则已经安装,如果没有,执行下面两个脚本即可:

$ORACLE_HOME/rdbms/admin/dbmslm.sql$ORACLE_HOME/dbmslmd.sql

需要注意,两个脚本须用DBA用户身份运行。第1个脚本用来创建dbms_logmnr包,该包用来分析日志文件,第2个脚本用来创建dbms_logmnr_d包,该包用来创建数据字典文件。

创建完成后数据库中将多出4个procedure和3个vIEw,具体如下:
1. dbms_logmnr_d.build :创建一个数据字典文件;
2. dbms_logmnr.add_logfile :添加日志文件以供分析;
3. dbms_logmnr.start_logmnr :开始分析日志文件;
4. dbms_logmnr.end_logmnr :结束分析日志文件;

1.v$logmnr_dictionary :显示字典文件的信息;
2.logmnr_logs :在Logminer启动时显示要分析的日志列表;
3.logmnr_contents :Logminer启动后,可以使用该vIEw查看日志文件的内容。
需要注意,这里的vIEw是session相关,其它session是查看不到的,仅仅可以在当前session中查看。

(2)如果要分析归档数据,需要数据库需处于归档模式下,通过如下命令查看归档模式

sql> archive log List;数据库日志模式            存档模式自动存档             启用存档终点            /home/app/oracle/oradata/orclarch_log最早的联机日志序列     46下一个存档日志序列   49当前日志序列           49

(3)创建数据字典之前需要修改spfile参数utl_executefile_dir,由于是静态参数需要重启数据库

> create directory utlfile as '/home/oracle/logmnr'; Directory createdsqlalter system set utl_executefile_dir = ' scope=spfile;

(4)生成数据字典文件(可选)
在使用Logminer工具之前,可以使用dbms_logmnr_d.build创建一个数据字典文件,创建该文件的目的是将数据字典导出为一个文本文件,该文件是可选的,但是如果没有该文件,Logminer解释出的关于数据字典中的部分,如表名、列名、元数据将会以16进制的形式展现,我们是无法理解的。
需要注意的是,如果我们要分析的数据库中的表发生了变化,影响到数据字典信息也发生了变化,那么我们在进行分析时,就需要重新生成数据字典文件。
创建数据字典文件需要以dba身份进行,创建到上面建好的logmnr文件中

begindbms_logmnr_d.build(dictionary_filename=>dict.ora,dictionary_location=>dbms_logmnr_d.store_in_flat_file);end;/

(5)加入需要分析的日志文件
Logminer可以对重做日志文件(redo log)和归档日志文件(archive log)进行分析,加入要分析的日志文件使用dbms_logmnr.add_logfile过程,第一个文件使用参数dbms_logmnr.NEW参数,后面的文件使用dbms_logmnr.ADDfile参数。
step1:创建列表,添加第1个文件:

BEGIN dbms_logmnr.add_logfile(logfilename/home/app/oracle/oradata/orcl/arch_log/1_49_936489730.dbf',optionsdbms_logmnr.NEW);END/

step2:添加其它文件到列表

/home/app/oracle/oradata/orcl/arch_log/1_50_936489730.dbfdbms_logmnr.ADDfile); dbms_logmnr.add_logfile(logfilename/home/app/oracle/oradata/orcl/arch_log/1_51_936489730.dbfdbms_logmnr.ADDfile);/

(6)使用Logminer文件进行分析

Logminer分析日志文件可以设置限制条件,也可不设置限制条件,不设置限制条件会对加载的全部日志文件进行分析,设置了限制条件,只会对符合条件的日志进行分析。

(6.1)不限制条件

EXECUTE dbms_logmnr.start_logmnr(dictfilename/home/oracle/logmnr/dict.ora');

(6.2)有限制条件

通过对dbms_logmnr.start_logmnr中几个不同参数的设置,可以缩小要分析的日志文件的范围,通过设置起始时间和终止时间参数,我们可以限制只
分析某一个时间段内的日志文件。
参数:

参数                 类型               默认值                解释

--------------   -----------     --------------     ------------------------------------------------
StartScn          number         0                        分析日志文件中scn > StartScn的日志文件
EndScn            number         0                       分析日志文件中scn < EndScn的日志文件
StartTime         date             1998-01-01        分析日志文件中时间戳 > StartTime的日志文件
EndTime           date             2988-01-01        分析日志文件中时间戳 < EndTime的日志文件
Dictfilename     varchar()                                数据字典文件的位置

(7)观察分析结果
通过第(6)步,我们已经得到了重做日志文件的内容,通过动态数据字典v$logmnr_contents可以查看到所有的信息。

select * from v$logmnr_contents;

v$logmnr_contents的部分栏位信息:

栏位                                          解释
---------------------------          ------------------------------------

SCN                                          查询的特定数据的SCN号
TIMESTAM                                 数据改变发生的时间
COMMIT_TIMESTAMP                  数据改变提交的时间
SEG_OWNER                             数据发生改变的段名称
SEG_name                                段的所有者的名称
SEG_TYPE                                 数据发生改变的段类型
SEG_TYPE_name                       数据发生改变的段类型名称
table_SPACE                           变化段的表空间
ROW_ID                                   数据变化行的ID
SESSION_INFO                          数据发生变化时会话信息
OPERATION                               日志中记录的 *** 作
sql_REDO                               日志中记录的指定行变化的SQL语句(正向 *** 作)
sql_UNDO                               为重做日志记录回退或恢复制定行变化的SQL语句

 

(三)一次Logminer使用测试

(1)查看归档,下一个归档log是53

ListDatabase mode Archive Modeautomatic archival EnabledArchive destination arch_logoldest online log sequence 50Next log sequence to archive 53Current log sequence 53

(2)查看数据字典存放位置

> show parameter utl_file_dirname TYPE VALUE------------- -------- -----------------------utl_file_dir string /LOGMNR

(3)创建一张测试用的表

create table test06 2 ( 3 ID number4 name varchar(15) 5 ); table created sqlinsert into test06 values(1,lijiaman); 1 row inserted sql2,1)">wangyujIE1 row inserted

(4)将redo归档

alter system switch logfile; System altered

(5)查看归档情况

53sql List;515454

(6)创建数据字典文件

dictionary.ora/home/oracle/LOGMNR/

(7)添加要分析的归档日志文件
(7.1)先到OS上找到归档文件:

[oracle@localhost LOGMNR]$ cd /home/app/oracle/oradata/orcl/arch_log[oracle@localhost arch_log]$ ls1_49_936489730.dbf  1_50_936489730.dbf  1_51_936489730.dbf  1_52_936489730.dbf  1_53_936489730.dbf

(7.2)创建归档日志文件列表

begin 2 dbms_logmnr.add_logfile(Logfilename => /home/app/oracle/oradata/orcl/arch_log/1_53_936489730.dbf dbms_logmnr.new); 3 ; 4 PL/sql procedure successfully completed

(7.3)如果不确定待分析的数据是否在上面添加的归档日志文件中,可以多添加几个

/home/app/oracle/oradata/orcl/arch_log/1_52_936489730.dbfPLprocedure successfully completed

(8)开始分析

/home/oracle/LOGMNR/dictionary.ora); PLprocedure successfully completed

(9)查看结果

select c.timestamp,c.operation,c.table_space,c.sql_redo,c.sql_undo from v$logmnr_contents c where c.seg_owner=liJIAMAN; TIMESTAMP OPERATION table_SPACE sql_REDO sql_UNDO --------- ----------- ------------- ---------------------------------------------------------------------- -------------------------------------------------------------------------------- 2017/425 DDL test06 ( ID ) ) ; 2 INSERT USERS into "liJIAMAN"."TEST06"("ID","name") values (1'); delete from "liJIAMAN"."TEST06" where "ID" ' and "name" and ROW 2'); and RO 总结

以上是内存溢出为你收集整理的[Oracle]LogMiner工具小结全部内容,希望文章能够帮你解决[Oracle]LogMiner工具小结所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1153928.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存