浅谈LogMiner的使用方法

Logminer是每个Dba都应熟悉的工具,当一天由于用户的误操作你需要做不完全的恢复时,由于你无法确定这个操作是哪个时间做的,所以这对你的恢复就带来的很大的难度,丢失的数据也不能完全恢复回来。而LogMiner就可以帮你确定这个误操作的准确时间。

我的测试环境是Aix4.3.3的操作系统,Oracle9.2.0.3的测试库。

一、LogMiner的几点说明

1、LogMiner可以帮你确定在某段时间所发的各种DML,DDL操作的具体时间和SCN号,它所依据的是归档日志文件及联机日志文件。

2、它只能在Oracle8i及以后的版本中使用,不过它可以分析Oracle8的日志。

3、Oracle8i只能用于分析DML操作,到Oracle9i则可以分析DDL操作了。

4、LogMiner不支持索引组织表、Long、LOB及集合类型。

5、MTS的环境也不能使用LogMiner.

二、操作步骤

1、设定用于LogMiner分析的数据文件存放的位置

这是设定utl_file_dir参数的过程,我的示例:

a、在initctc.ora文件中加入如下一行

utl_file_dir=/u01/arch

b、得启数据库

oracle>sqlplus /nolog

sql>conn / as sysdba

sql>shutdown immediate

sql>statup

2、生成数据字典文件,是通过dbms_logmnr_d.build()来完成。

SQL> BEGIN

2    dbms_logmnr_d.build(

3      dictionary_filename => ’logminer_dict.dat’,

4      dictionary_location => ’/u01/arch’

5    );

6  END;

7 /

dictionary_location指的是Logminer数据字典文件存放的位置,它必须匹配utl_file_dir的设定。

其中的dictionary_filename指的是放于存放位置的字典文件的名字,名字可以任意取。

3、建立一个日志分析表

a、建立日志分析表数据库必须在mount或nomount状态,启动数据库到mount状态。

sqlplus /nolog

sql>conn / as sysdba

sql>shutdown immediate

sql>starup mount

b、建立日志分析表,使用dbms_logmnr.add_logfile()

SQL> BEGIN

2    dbms_logmnr.add_logfile(

3      options => dbms_logmnr.new,

4      logfilename => ’/u01/arch/arc_ctc_0503.arc’

5    );

6  END;

7 /

其中的options有三种取值,dbms_logmnr.new用于建一个日志分析表;dbms_logmnr.addfile用于加入用于分析的的日志文件;dbms_logmnr.removefile用于移出用于分析的日志文件。

4、添加用于分析的日志文件。

SQL> BEGIN

2    dbms_logmnr.add_logfile(

3      options => dbms_logmnr.addfile,

4      logfilename => ’/u01/arch/arc_ctc_0504.arc’

5    );

6  END;

7 /

使用则可以把这个文件从日志分析表中移除,从而不进行分析。

SQL> BEGIN

2    dbms_logmnr.add_logfile(

3      options => dbms_logmnr.removefile,

4      logfilename => ’/u01/arch/arc_ctc_0503.arc’

5    );

6  END;

7 /

5、启动LogMiner进行分析。

SQL> BEGIN

2    dbms_logmnr.start_logmnr(

3      dictfilename => ’/u01/arch/logminer_dict.dat’,

4      starttime => to_date(’20030501 12:15:00’,’yyyymmdd hh24:mi:ss’),

5      endtime => to_date(’20030501 15:40:30’,’yyyymmdd hh24:mi:ss’)

6    );

7  END;

8 /

即分析2003年5月1日这天12:15至15:40这段时间,并把分析结果放到数据字典中以用于查询。还有两个参数StartScn(起始scn号)及EndScn(终止Scn)号。

6、查看日志分析的结果,通过查询v$logmnr_contents可以查询到

a、查看DML操作,示例:

SELECT operation,

sql_redo,

sql_undo,

FROM V$logmnr_contents

WHERE seg_name = ’QIUYB’;

OPERATION    SQL_REDO                    SQL_UNDO

----------    --------------------------  --------------------------

INSERT        inser into qiuyb.qiuyb ...  delete from qiuyb.qiuyb...

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

b、查看DDL操作,示例:

SELECT timstamp,

sql_redo

FROM v$logmnr_contents

WHERE upper(sql_redo) like ’%TRUNCATE%’;

7、结束LogMiner的分析。

SQL>BEGIN

2    dbms_logmnr.end_logmnr;

3  end;

4 /

三、与LogMiner相关的数据字典。

1、v$loglist          它用于显示历史日志文件的一些信息

2、v$logmnr_dictionary 因logmnr可以有多个字典文件,该视图用于显示这方面信息。

3、v$logmnr_parameters 它用于显示logmnr的参数

4、v$logmnr_logs      它用于显示用于分析的日志列表信息。

(0)

相关推荐

  • Oracle LogMiner的使用实例代码

    LogMiner介绍 LogMiner是用于Oracle日志挖掘的利器. 百科解释: LogMiner 是Oracle公司从产品8i以后提供的一个实际非常有用的分析工具,使用该工具可以轻松获得Oracle 重做日志文件(归档日志文件)中的具体内容,LogMiner分析工具实际上是由一组PL/SQL包和一些动态视图组成,它作为Oracle数据库的一部分来发布,是oracle公司提供的一个完全免费的工具. 本文主要演示LogMiner的使用,直观展示LogMiner的作用. 环境:Oracle 11

  • 理解和使用Oracle 8i分析工具LogMiner

    正在看的ORACLE教程是:理解和使用Oracle 8i分析工具LogMiner.Oracle LogMiner 是Oracle公司从产品8i以后提供的一个实际非常有用的分析工具,使用该工具可以轻松获得Oracle 重作日志文件(归档日志文件)中的具体内容,特别是,该工具可以分析出所有对于数据库操作的DML(insert.update.delete等)语句,另外还可分析得到一些必要的回滚SQL语句.该工具特别适用于调试.审计或者回退某个特定的事务. LogMiner分析工具实际上是由一组PL/S

  • 浅谈LogMiner的使用方法

    Logminer是每个Dba都应熟悉的工具,当一天由于用户的误操作你需要做不完全的恢复时,由于你无法确定这个操作是哪个时间做的,所以这对你的恢复就带来的很大的难度,丢失的数据也不能完全恢复回来.而LogMiner就可以帮你确定这个误操作的准确时间. 我的测试环境是Aix4.3.3的操作系统,Oracle9.2.0.3的测试库. 一.LogMiner的几点说明 1.LogMiner可以帮你确定在某段时间所发的各种DML,DDL操作的具体时间和SCN号,它所依据的是归档日志文件及联机日志文件. 2.

  • 浅谈virtual、abstract方法和静态方法、静态变量理解

    说点对这几个容易混淆的词的理解: 1.c++中的virtual方法的 virtual关键字主要是防止继承中重复继承父类的同一个方法而设置的标识. 2.virtual与abstract关键字的不同之处在于 virtual方法可以有具体的实现,当子类继承父类的时候若没有覆写该方法,也可以使用父类中的此方法. 但是abstract方法即抽象方法是没有具体实现的,子类需要自己实现.打个比方就是virtual 虚方法 这个 父亲虽然"虚"了点但'家产'还是有一点的,但老爸是抽象方法这个儿子就悲剧

  • 浅谈java Iterator.remove()方法的用法(详解)

    实例如下: @Test public void tt(){ List<String> list = new ArrayList<String>(); list.add( "0" ); list.add( "1" ); list.add( "2" ); list.add( "3" ); list.add( "4" ); list.add( "5" ); list.a

  • C#学习笔记整理_浅谈Math类的方法

    c#中Math类的方法 Math.Abs 已重载. 返回指定数字的绝对值. Math.Acos 返回余弦值为指定数字的角度. Math.Asin 返回正弦值为指定数字的角度. Math.Atan 返回正切值为指定数字的角度. Math.Atan2 返回正切值为两个指定数字的商的角度. Math.BigMul 生成两个 32 位数字的完整乘积. Math.Ceiling 已重载. 返回大于或等于指定数字的最小整数. Math.Cos 返回指定角度的余弦值. Math.Cosh 返回指定角度的双曲余

  • 浅谈js构造函数的方法与原型prototype

    把方法写在构造函数内的情况我们简称为函数内方法,把方法写在prototype属性上的情况我们简称为prototype上的方法. •函数内的方法: 使用函数内的方法我们可以访问到函数内部的私有变量,如果我们通过构造函数new出来的对象需要我们操作构造函数内部的私有变量的话, 我们这个时候就要考虑使用函数内的方法. •prototype上的方法: 当我们需要通过一个函数创建大量的对象,并且这些对象还都有许多的方法的时候;这时我们就要考虑在函数的prototype上添加这些方法. 这种情况下我们代码的

  • 浅谈Java编程ToString()方法重写的意义

    上一篇文章我们介绍了java tostring方法重写代码示例,接下来,我们简单聊聊java编程tostring()方法重写的意义. 1.toString()就是是重写,对于一般的对象来说都会有这个方法,其实这个方法的目的,主要就是将对象按字符串的方式输出出来:打个比方,比如一个People类,里边有name,age这两个属性, 如果你People p = new People(); p.toString(); 这么做的话,默认输出就是一个内存地址. 那么你会想到重写ToString():这个方

  • 浅谈jquery的html方法里包含特殊字符的处理

    在使用jquery的html()方法时,有时候里面添加的html代码含有一些特殊字符,需要进行转义. 如下例子: inst_html = "<a style=color:white' onmouseover = '"; inst_html += "javascript:showme('"+inst.instId+"_"+valId+"');"; inst_html += "' "; $("#

  • 浅谈regExp的test方法取得的值变化的原因及处理方法

    1.JavaScript 正则表达式对象RegExp的test方法,用于检测一个字符串是否匹配某个模式. 字面量定义RegExp对象:var re = /pattern/attributes,其中attributes可以是g,i,m: 阅读以下程序: <script type="text/javascript"> var str = 'abc123'; var re = /^abc/g ; var result1 = re.test(str); var result2 =

  • 浅谈java多线程 join方法以及优先级方法

    join: 当A线程执行到了B线程的.join()方法时,A就会等待.等B线程都执行完,A才会执行. join可以用来临时加入线程执行. 1.线程使用join方法,主线程就停下,等它执行完,那么如果该线程冻结了,主线程就挂了,这也是为什么线程要抛异常的原因 2.当两个或以上线程开启了,这个A线程才使用join方法,那么主线程还是停下,这几个个线程交替进行,直到A执行完,主线程才复活 1. tostring(),方法,获取线程具体的名字,优先级 2. 优先级代表抢资源的频率 3. java中设置有

  • 浅谈java中unmodifiableList方法的应用场景

    java对象中primitive类型变量可以通过不提供set方法保证不被修改,但对象的List成员在提供get方法后,就可以随意add.remove改变其结构,这不是希望的结果.网上看了下,发现Collections的静态方法unmodifiableList可以达到目的.方法原型为:public static <T> List<T> unmodifiableList(List<? extends T> list);用法也很简单,传入一个List实例la,返回这个list

随机推荐