转自 http://blog.itpub.net/26613085/viewspace-1064008/

1、安装logminer以及生成logminer数据字典所需要的包(需使用sys用户 
[oracle@rac1 ~]$ echo $ORACLE_HOME
/u01/app/oracle/product/10.2.0/db_1

SQL> show user 
USER is "SYS"
SQL> @/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/dbmslm.sql

Package created.

Grant succeeded.

SQL> @/u01/app/oracle/product/10.2.0/db_1/rdbms/admin/dbmslmd.sql

Package created.

2、生成数据字典文件
创建logminer存放的目录
[oracle@rac1 logmine_dir]$ mkdir /u01/logminer_dir

修改oracle的utl_file_dir参数

SQL> alter system set utl_file_dir='/u01/logminer_dir' scope=both;
alter system set utl_file_dir='/u01/logminer_dir' scope=both
                 *
ERROR at line 1:
ORA-02095: specified initialization parameter cannot be modified

SQL> alter system set utl_file_dir='/u01/logminer_dir/' scope=spfile;

System altered.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup
ORACLE instance started.

Total System Global Area  285212672 bytes
Fixed Size                  1218992 bytes
Variable Size              67110480 bytes
Database Buffers          213909504 bytes
Redo Buffers                2973696 bytes
Database mounted.
Database opened.
SQL> show parameter utl_file_dir

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
utl_file_dir                         string      /u01/logminer_dir/

SQL> begin
  2  sys.dbms_logmnr_d.build(dictionary_filename =>'logminerdcit.ora',
  3                          dictionary_location =>'/u01/logminer_dir',
  4                                       options=>dbms_logmnr_d.store_in_flat_file);
  5  end;
  6  /
begin
*
ERROR at line 1:
ORA-01336: specified dictionary file cannot be opened
ORA-29280: invalid directory path
ORA-06512: at "SYS.DBMS_LOGMNR_INTERNAL", line 3474
ORA-06512: at "SYS.DBMS_LOGMNR_INTERNAL", line 3552
ORA-06512: at "SYS.DBMS_LOGMNR_D", line 12
ORA-06512: at line 2

SQL> begin
  2  sys.dbms_logmnr_d.build(dictionary_filename =>'logminerdcit.ora',
  3                          dictionary_location =>'/u01/logminer_dir/',
  4                                       options=>dbms_logmnr_d.store_in_flat_file);
  5  end;
  6  /

PL/SQL procedure successfully completed.

看来这个路径后面的斜杠不能省略。
[oracle@rac1 ~]$ cd /u01/logminer_dir/
[oracle@rac1 logminer_dir]$ ll
total 22852
-rw-r--r--  1 oracle oinstall 23368495 Dec 22 17:05 logminerdcit.ora
在指定的目录下面已经可以看到刚才生成的数据字典文件了。
3、下面我们在数据库里面创建一个表,然后插入几条记录,归档日志,然后再把该表drop掉,看看logminer能不能查到相关的信息

SQL> create table dcits_test(id number);

Table created.

SQL> insert into dcits_test values(1);

1 row created.

SQL> insert into dcits_test values(2);

1 row created.

SQL> insert into dcits_test values(3);

1 row created.

SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u01/app/oracle/oradata/dcits/archive/
Oldest online log sequence     4
Next log sequence to archive   6
Current log sequence           6
目前数据库已经是归档模式,并且归档位置在/u01/app/oracle/oradata/dcits/archive/

先查看下该目录
[oracle@rac1 ~]$ cd /u01/app/oracle/oradata/dcits/archive
[oracle@rac1 archive]$ ll
total 0
新修改的归档模式,还没有进行归档操作
下面对当前的在线日志进行归档

SQL> alter system archive log current;

System altered.

再查看下刚才的归档目录,可见已经产生了一个归档日志
[oracle@rac1 archive]$ pwd
/u01/app/oracle/oradata/dcits/archive
[oracle@rac1 archive]$ ll
total 16080
-rw-r-----  1 oracle oinstall 16441856 Dec 22 17:17 1_6_834506858.dbf
下面我们把这个表drop掉

SQL> drop table dcits_test;

Table dropped.
然后我们把刚才归档的日志和当前在线日志都进行分析下,看看能不能查看到这些操作信息
看下当前哪个日志在线
SQL> select * from v$log;
    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIM
---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ---------
         1          1          5   52428800          1 YES INACTIVE                508835 20-DEC-13
         2          1          6   52428800          1 YES INACTIVE                537485 22-DEC-13
         3          1          7   52428800          1 NO  CURRENT                 545026 22-DEC-13
查看日志组3的文件位置

SQL> select * from v$logfile where group#=3;

GROUP# STATUS  TYPE    MEMBER                                             IS_
---------- ------- ------- -------------------------------------------------- ---
         3         ONLINE  /u01/app/oracle/oradata/dcits/redo03.log           NO

SQL> begin
  2    sys.dbms_logmnr.add_logfile(LogFileName => '/u01/app/oracle/oradata/dcits/archive/1_6_834506858.dbf',
  3                                     Options=> dbms_logmnr.new);
  4    sys.dbms_logmnr.add_logfile(LogFileName => '/u01/app/oracle/oradata/dcits/redo03.log',
  5                                     Options=> dbms_logmnr.new);
  6  end;
  7  /

PL/SQL procedure successfully completed.
开始使用LogMiner进行日志分析

SQL> begin
  2    sys.dbms_logmnr.start_logmnr(DictFileName =>'/u01/logminer_dir/logminerdcit.ora');
  3  end;
  4  /

PL/SQL procedure successfully completed.

SQL> select sql_redo from V$LOGMNR_CONTENTS where upper(sql_redo) like '%DCITS_TEST%';

SQL_REDO
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
drop table dcits_test;
delete from "SYS"."OBJ$" where "OBJ#" = '51383' and "DATAOBJ#" = '51383' and "OWNER#" = '0' and "NAME" = 'DCITS_TEST' and "NAMESPACE" = '1' and "SUBNAME" IS NULL and "TYPE#" = '2' and "CTIME" = TO_DAT
E('22-DEC-13', 'DD-MON-RR') and "MTIME" = TO_DATE('22-DEC-13', 'DD-MON-RR') and "STIME" = TO_DATE('22-DEC-13', 'DD-MON-RR') and "STATUS" = '1' and "REMOTEOWNER" IS NULL and "LINKNAME" IS NULL and "FLA
GS" = '0' and "OID$" IS NULL and "SPARE1" = '6' and "SPARE2" = '1' and "SPARE3" IS NULL and "SPARE4" IS NULL and "SPARE5" IS NULL and "SPARE6" IS NULL and ROWID = 'AAAAASAABAAAMRjAAO';
(为什么只看到个drop语句呢?)
结束分析,释放内存

SQL> begin
  2    sys.dbms_logmnr.end_logmnr;
  3  end;
  4  /

PL/SQL procedure successfully completed.

上面的实验并没有显示create table语句,原因参考文档:
--  PROCEDURE INFORMATION:
  --  #1 dbms_logmnr.add_logfile():
  --     DESCRIPTION:
  --       Registers a redo log file with LogMiner. Multiple redo logs can be
  --       registered by calling the procedure repeatedly. The redo logs
  --       do not need to be registered in any particular order.
  --       Both archived and online redo logs can be mined.  If a successful
  --       call to the procedure is made a call to start_logmnr() must be
  --       made before selecting from v$logmnr_contents.
  --
  --     CONSTANTS:
  --       dbms_logmnr.NEW:  Starts a new list. Any file registered prior to
  --         this call is discarded.

--       dbms_logmnr.ADDFILE:  Adds the redo log to the existing
  --         list. LogMiner checks to make sure that the redo log is from
  --         the same database (DB_ID and RESETLOGS_SCN) incarnation as the
  --         ones previously added.

SQL> begin
  2    sys.dbms_logmnr.add_logfile(LogFileName => '/u01/app/oracle/oradata/dcits/archive/1_6_834506858.dbf',
  3                                     Options=> dbms_logmnr.new);
  4    sys.dbms_logmnr.add_logfile(LogFileName => '/u01/app/oracle/oradata/dcits/redo03.log',
  5                                     Options=> dbms_logmnr.new);
  6  end;
  7  /
添加日志文件的时候两个都用到了dbms_logmnr.new,第二条添加在线日志的时候相当于又重新开始一个文件列表,所以'/u01/app/oracle/oradata/dcits/archive/1_6_834506858.dbf'归档日志并没有添加被分析,所以没有看到那个create table dcits_test(id number);
至于为什么没有看到insert语句,等有时间再做下实验,需要alter database add supplemental log data;

 
 

logminer系列文章一(logminer的使用)的更多相关文章

  1. 基于DDD的现代ASP.NET开发框架--ABP系列文章总目录

    ABP相关岗位招聘:给热爱.NET新技术和ABP框架的朋友带来一个高薪的工作机会 ABP交流会录像视频:ABP架构设计交流群-7月18日上海线下交流会的内容分享(有高清录像视频的链接) 代码自动生成: ...

  2. 【NLP】蓦然回首:谈谈学习模型的评估系列文章(一)

    统计角度窥视模型概念 作者:白宁超 2016年7月18日17:18:43 摘要:写本文的初衷源于基于HMM模型序列标注的一个实验,实验完成之后,迫切想知道采用的序列标注模型的好坏,有哪些指标可以度量. ...

  3. 【微信小程序开发•系列文章六】生命周期和路由

    这篇文章理论的知识比较多一些,都是个人观点,描述有失妥当的地方希望读者指出. [微信小程序开发•系列文章一]入门 [微信小程序开发•系列文章二]视图层 [微信小程序开发•系列文章三]数据层 [微信小程 ...

  4. SQL Server 系列文章快速导航(SWF版)

    一.前言 在博客园写博客不自不觉已经有5个年头了,一开始只是为了记录工作中遇到的问题和解决办法,后来写的文章不自不觉的侧重在SQL Server方面的技术文章,在2014年1月终于鼓起勇气申请了微软S ...

  5. Geotrellis系列文章链接

    本文存放了我在博客园中撰写的Geotrellis系列文章链接,方便查阅! 一.geotrellis使用初探 二.geotrellis使用(二)geotrellis-chatta-demo以及geotr ...

  6. 如何实现一个php框架系列文章【开篇】

    1.本系列文章的目的 实现一个小而美的产品级别php框架 自己动手实现一个新框架仅用于学习交流,不打算替代市面上现有的其他主流框架. 2. 我要一个怎样的PHP框架 简单实用,安全优雅,博采众长 安装 ...

  7. EF和MVC系列文章导航:EF Code First、DbContext、MVC

    对于之前一直使用webForm服务器控件.手写ado.net操作数据库的同学,突然来了EF和MVC,好多新概念泉涌而出,的确犹如当头一棒不知所措.本系列文章可以帮助新手入门并熟练使用EF和MVC,有了 ...

  8. java nio系列文章

    java nio系列教程 基于NIO的Client/Server程序实践 (推荐) java nio与并发编程相关电子书籍   (访问密码 48dd) 理解NIO nio学习记录 图解ByteBuff ...

  9. Java 加解密技术系列文章

    Java 加解密技术系列之 总结 Java 加解密技术系列之 DH Java 加解密技术系列之 RSA Java 加解密技术系列之 PBE Java 加解密技术系列之 AES Java 加解密技术系列 ...

随机推荐

  1. 《构建之法》阅读笔记06-项目经理PM

    软件团队里除了能写代码.测试代码和画图做设计的成员,还有一类角色,不做上面这些事情但也很重要,我们叫他们项目经理--PM. PM 的M 就是 Manager: P有这几种: Product Manag ...

  2. 浅谈Android Studio中项目结构中project模式的各个文件和文件夹

    致敬郭霖,这些知识是从第一行代码第二版中直接码下来的,谢谢他,注意每个条目前是否有. 1..gradle和.idea 这两个目录下放置的都是Android Studio自动生成的一些文件,我们无需关心 ...

  3. spring之mvc原理分析及简单模拟实现

    在之前的一篇博客中已经简单的实现了spring的IOC和DI功能,本文将在之前的基础上实现mvc功能. 一 什么是MVC MVC简单的说就是一种软件实现的设计模式,将整个系统进行分层,M(model ...

  4. spark集群构建

    一.spark启动有standalong.yarn.cluster,具体的他们之间的区别这里不在赘述,请参考官网.本文采用的是standalong模式进行搭建及将接使用. 1.首先去官网下载需要的sp ...

  5. 数组操作方法中的splice()和concat() 以及slice()

    1.splice()方法是修改Array的'全能方法',它可以从指定的索引开始删除若干元素,然后再从该位置添加若干元素,其中有三个参数(x,y,z) x:从索引x开始操作数组; y:0或不为0,当为0 ...

  6. [转]MVC中几种常用ActionResult

    本文转自:http://www.cnblogs.com/xielong/p/5940535.html 一.定义 MVC中ActionResult是Action的返回结果.ActionResult 有多 ...

  7. mysql与mysqli的一些区别和方法

    一.mysql与mysqli的概念相关: 1.mysql与mysqli都是php方面的函数集,与mysql数据库关联不大. 2.在php5版本之前,一般是用php的mysql函数去驱动mysql数据库 ...

  8. vb.net的String类型和Bytes转换(C#也适用)

    1.Bytes---->StringSystem.Text.Encoding.Unicode.GetString(bytes, 0, bytes.Length) 2.String----> ...

  9. C# 使用/配置Log4Net

    1.首先在项目中添加Nuget程序包... 2.然后在NuGet窗体中搜索Log4Net,然后点击安装<安装过程可能会持续几分钟,请耐心等待> 3.在项目中添加一个Config文件,如已有 ...

  10. 热更新--动态加载framework

    1.准备工作:先自己封装一个framework:http://www.cnblogs.com/sunjianfei/p/5781863.html 2.把封装好的framework压缩成zip,放到本地 ...