使用oracle的logmnr分析工具

转载 2013年12月01日 21:43:22

1.安装logminer:

      要安装LogMiner工具,必须首先要运行下面这样两个脚本,

      @F:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\dbmslm.sql

      @F:\oracle\product\10.2.0\db_1\RDBMS\ADMIN\dbmslmd.sql.

      这两个脚本必须均以SYS用户身份运行。

2 创建数据字典文件
首先在init.ora初始化参数文件中,添加参数UTL_FILE_DIR,该参数值为服务器中放置数据

字典文件的目录。如:
utl_file_dir=F:\hisrun

[SYS@orcl] SQL>execute dbms_logmnr_d.build('showdict.ora','F:\hisrun');
BEGIN dbms_logmnr_d.build('showdict.ora','F:\hisrun'); END;

*
第 1 行出现错误:
ORA-01308: 未设置初始化参数 utl_file_dir
ORA-06512: 在 "SYS.DBMS_LOGMNR_INTERNAL", line 3474
ORA-06512: 在 "SYS.DBMS_LOGMNR_INTERNAL", line 3552
ORA-06512: 在 "SYS.DBMS_LOGMNR_D", line 12
ORA-06512: 在 line 1


[SYS@orcl] SQL>show parameter utl_file;

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
utl_file_dir                         string

[SYS@orcl] SQL>show parameter utl;

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
create_stored_outlines               string

utl_file_dir                         string

[SYS@orcl] SQL>show user;
USER 为 "SYS"
[SYS@orcl] SQL>alter system set utl_file_dir='F:\hisrun' scope=spfile;

系统已更改。

[SYS@orcl] SQL>show parameter utl

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
create_stored_outlines               string

utl_file_dir                         string

[SYS@orcl] SQL>shutdown abort
ORACLE 例程已经关闭。
[SYS@orcl] SQL>startup
ORACLE 例程已经启动。

Total System Global Area 612368384 bytes
Fixed Size                  1250428 bytes
Variable Size             218106756 bytes
Database Buffers          385875968 bytes
Redo Buffers                7135232 bytes
数据库装载完毕。
数据库已经打开。

[SYS@orcl] SQL>show parameter utl;

NAME                                 TYPE
------------------------------------ ----------------------
VALUE
------------------------------
create_stored_outlines               string

utl_file_dir                         string
F:\hisrun
[SYS@orcl] SQL>execute dbms_logmnr_d.build('showdict.ora','F:\hisrun');

20100122补充:SQL> execute dbms_logmnr_d.build(dictionary_filename=>'showdict.ora',dictionary_l
ocation=>'F:\hisrun');

PL/SQL 过程已成功完成。

3 将要分析的日志文件加入要分析的log list中,察看有哪些日志文件可以用select * from v$logfile;查询已经加入那些可以用select * from v$logmnr_logs(注:查询必须在同一个会话中查询,单独开查询将查不到)语句如下:

execute dbms_logmnr.add_logfile('F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG
',dbms_logmnr.new);

[SYS@orcl] SQL>select member from v$logfile;

MEMBER
--------------------------------------------------------------------------------
F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO03.LOG
F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG
F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG

[SYS@orcl] SQL>execute dbms_logmnr.add_logfile('F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG',dbms_logmnr.new);

PL/SQL 过程已成功完成。

再增加一个:

[SYS@orcl] SQL>execute dbms_logmnr.add_logfile('F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO02.LOG',dbms_logmnr.addfile);

如果需要从分析列表里去掉一个文件用

('F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\REDO01.LOG',dbms_logmnr.removefile);

20100122补充:

   (1)分析在线重作日志文件

        如上所示

     (2)分析离线日志文件

SQL> EXECUTE dbms_logmnr.add_logfile( 
LogFileName=>' E:\Oracle\oradata\sxf\archive\ARCARC09108.001', 
Options=>dbms_logmnr.new);

4 更改会话时间表达方式(注一定要在本会话下修改,我开始发生错误就是因为在别的会话里修改的,如果允许,可以将数据库默认的时间表达方式修改掉)会话内修改为alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; 系统设置在注册表。

5 查询分析的日志文件包含的scn范围和日期范围。

  select low_time,high_time,low_scn,next_scn from v$logmnr_logs;会列出你加入的日志文件的以上信息。

6 使用LogMiner进行日志分析
     
      SQL>execute dbms_logmnr.start_logmnr(DictFileName=>'F:\hisrun\showdict.ora',options=>dbms_logmnr.committed_data_only,startscn=>116295629,endscn=>116685026);

20100122补充:

(1)无限制条件

SQL> EXECUTE dbms_logmnr.start_logmnr( 
DictFileName=>' e:\oracle\logs\ v816dict.ora ');

(2)有限制条件

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

SQL> EXECUTE dbms_logmnr.start_logmnr( 
DictFileName => ' e:\oracle\logs\ v816dict.ora ', 
StartTime => to_date('2001-9-18 00:00:00','YYYY-MM-DD HH24:MI:SS') 
EndTime => to_date(''2001-9-18 23:59:59','YYYY-MM-DD HH24:MI:SS '));

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

SQL> EXECUTE dbms_logmnr.start_logmnr( 
DictFileName => ' e:\oracle\logs\ v816dict.ora ', 
StartScn => 20, 
EndScn => 50);

7 观察分析结果(LogMiner的分析结果是放在v$logmnr_contents中)

       A.SQL> select sql_redo from v$logmnr_contents where upper(sql_redo) like '%DELETE%;

              在视图v$logmnr_contents中查找真实被删除的记录。
       
       B.SQL> SELECT timeseg_name,sql_redo FROM v$logmnr_contents WHERE seg_name='MS_CF01' and sql_redo like '%DELETE%';
              
              功能同A。

       C.SQL> select sql_undo from v$logmnr_contents where seg_name='MS_CF01' and sql_redo like '%delete%' and rownum<10;

       D.SQL> select sql_undo from v$logmnr_contents where seg_name='MS_CF01' and upper(OPERATION)='DELETE';

              针对SQL_REDO重做记录重做指定行变化的SQL语句,所对应的反操作就是重做记录回退或恢复指定行变化的SQL语句。
        select timestamp,sql_undo,sql_redo from v$logmnr_contents where seg_name='MS_CF01'

20100122补充:

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

8 结束分析,清空v$logmnr_contents

      SQL>execute dbms_logmnr.end_logmnr (结束会话,会自清除分析记录)

9 下面将就视图v$logmnr_contents的常用字段含义进行说明:

其中operation指的是操作,sql_redo指的是实际的操作,sql_undo指的是用于取消的相反的操作)

         名称                    含义
        ----------------------- -------- --------------------------------------------
         SCN                    特定数据变化的系统更改号
         TIMESTAMP              数据改变发生的时间
         COMMIT_TIMESTAMP       数据改变提交的时间
         SEG_OWNER              数据发生改变的段名称
         SEG_NAME               段的所有者名称
         SEG_TYPE               数据发生改变的段类型
         SEG_TYPE_NAME          数据发生改变的段类型名称
         TABLE_SPACE            变化段的表空间
         ROW_ID                 特定数据变化行的ID
         SESSION_INFO           数据发生变化时用户进程信息
         OPERATION              重做记录中记录的操作(如INSERT)
         SQL_REDO               可以为重做记录重做指定行变化的SQL语句(正向操作)
         SQL_UNDO               可以为重做记录回退或恢复指定行变化的SQL语句(反向操作)

      注:SQL_REDO 列显示的是所做的操作(SQL 语句),SQL_UNDO 列显示的是要恢复该操作所需要的SQL语句

          只要顺序执行SQL_UNDO的内容,就可以恢复到修改前的数据。

ORACLE LOGMNR简单而强大的工具

LOGMNR简单而强大的工具 在Oracle数据库中,LGWR进程将数据库中进行的DML等操作信息记录在日志文件中,在归档模式下,日志文件还会写出到归档日志文件中。在数据库发生故障崩溃后,恢复时...
  • lively1982
  • lively1982
  • 2013年11月14日 17:53
  • 763

oracle 日志分析工具logminer的安装使用

测试环境: OS:redHat 5.5 DB:oracle11g logminer作为相关的日志分析工具集成与oracle中,我们可通过该工具清楚的分析重做相关日志和归档日志中的所有事物...
  • Dream19881003
  • Dream19881003
  • 2011年08月15日 11:28
  • 7316

Logmnr的DDL

日志挖掘会挖到DDL 环境:11.2.0.4单机在Windows 2008R2 开始测试: create table logmntest1 (id number); alter table log...
  • ghostliming
  • ghostliming
  • 2016年03月29日 17:02
  • 960

logmnr在使用数据字典后分析结果依然有16进制

今天在帮助研发挖日志的时候,遇到个问题,使用的方式是将数据字典放到redo中在异机分析归档日志。 但是总是有一些16进制的sql,感觉是数据字典有问题,但是在生产环境上分析归档也是一样,查看官方文档...
  • aoerqileng
  • aoerqileng
  • 2017年06月13日 17:02
  • 242

实战:oracle 11g r2 LogMiner

大致流程!   oracle日志分析工具LogMiner使用 1.设置日期格式 alter system set nls_date_format='yyyy-mm-dd hh24:mi:ss'...
  • yangzhawen
  • yangzhawen
  • 2012年05月01日 10:10
  • 16023

Oracle的LOGMNR工具

Oracle LogMiner 是Oracle公司从产品8i以后提供的一个实际非常有用的分析工具,使用该工具可以轻松获得Oracle 重作日志文件(归档日志文件)中的具体内容,特别是,该工具可以分析出...
  • songyundong1993
  • songyundong1993
  • 2016年12月21日 11:16
  • 134

Oracle 11g之LogMiner常用案例

LogMiner常用案例
  • u010257584
  • u010257584
  • 2016年05月06日 10:25
  • 4514

[Logmnr]使用logminer找回被误删的数据

LogMiner日志挖掘技术在有些时候可以被比作是命悬一线的救命稻草,比方说误删除数据(如delete执行不当),可以通过LogMiner挖掘日志文件将这些数据补插回来 使用LogMiner预览...
  • u011364306
  • u011364306
  • 2015年11月13日 10:56
  • 762

[Logmnr]对归档日志进行数据挖掘

1、创建演示数据 SQL> update emp set sal=sal+100 where deptno=10; SQL> update emp set sal=sal+200 where dept...
  • u011364306
  • u011364306
  • 2015年11月13日 13:36
  • 734

Oracle的LOGMNR工具的使用及注意事项

该文借鉴别人的方法结合自己使用过程中碰到的问题: 一、LogMiner的用途 用LOGMNR在线分析和挖掘日志(包括归档日志)。可以提炼出重做日志。   二、安装LogMiner 要安装...
  • sereya01
  • sereya01
  • 2014年12月11日 14:03
  • 262
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用oracle的logmnr分析工具
举报原因:
原因补充:

(最多只允许输入30个字)