欢迎来到福编程网,本站提供各种互联网专业知识!

浅谈LogMiner的使用方法

发布时间:2007-04-02 作者: 来源:转载
Logminer是每个Dba都应熟悉的工具,当一天由于用户的误操作你需要做不完全的恢复时,由于你无法确定这个操作是哪个时间做的,所以这对你的恢复就带来的很大的难度,丢失的数据也不能完全恢复回来。而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/assysdba

sql>shutdownimmediate

sql>statup

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

SQL>BEGIN

2dbms_logmnr_d.build(

3dictionary_filename=>’logminer_dict.dat’,

4dictionary_location=>’/u01/arch’

5);

6END;

7/

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

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

3、建立一个日志分析表

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

sqlplus/nolog

sql>conn/assysdba

sql>shutdownimmediate

sql>starupmount

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

SQL>BEGIN

2dbms_logmnr.add_logfile(

3options=>dbms_logmnr.new,

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

5);

6END;

7/

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

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

SQL>BEGIN

2dbms_logmnr.add_logfile(

3options=>dbms_logmnr.addfile,

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

5);

6END;

7/

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

SQL>BEGIN

2dbms_logmnr.add_logfile(

3options=>dbms_logmnr.removefile,

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

5);

6END;

7/

5、启动LogMiner进行分析。

SQL>BEGIN

2dbms_logmnr.start_logmnr(

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

4starttime=>to_date(’2003050112:15:00’,’yyyymmddhh24:mi:ss’),

5endtime=>to_date(’2003050115:40:30’,’yyyymmddhh24:mi:ss’)

6);

7END;

8/

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

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

a、查看DML操作,示例:

SELECToperation,

sql_redo,

sql_undo,

FROMV$logmnr_contents

WHEREseg_name=’QIUYB’;

OPERATIONSQL_REDOSQL_UNDO

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

INSERTinserintoqiuyb.qiuyb...deletefromqiuyb.qiuyb...

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

b、查看DDL操作,示例:

SELECTtimstamp,

sql_redo

FROMv$logmnr_contents

WHEREupper(sql_redo)like’%TRUNCATE%’;

7、结束LogMiner的分析。

SQL>BEGIN

2dbms_logmnr.end_logmnr;

3end;

4/

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

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

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

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

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

相关推荐