LogMiner应用示例

Logminer应用实例

Oracle logmineroracle8i之后提供的一个非常有用的分析工具,使用该工具可以轻松获得oracle重做日志文件中的具体内容。该工具可以分析出所有对于数据库的DML语句,9i后可以分析DDL语句,另外还可以分析得到一些必要的回滚SQL语句。

其中一个最重要的用途就是不用全部恢复数据库就可以恢复数据库的某个变化。特别适用于调试、审计或者回退某个特定的事务。

Logminer功能

1,  跟踪数据库的变化:可以离线的跟踪数据库的变化,而不会影响在线系统的性能。

2,  回退数据库的变化:回退特定的变化数据,减少point-in-timerecovery的执行。

3,  优化和扩容计划:可通过分析日志文件中的数据以分析数据增长模式。

4,  确定数据库的逻辑损坏时间:准确定位操作执行的时间和SCN

5,  确定事务级要执行的精细逻辑恢复操作――取得相应的undo操作

6,  执行后续审计   ―― dml ddl dcl 执行时间、用户

注意事项

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

select scn,cscn,TIMESTAMP,COMMIT_TIMESTAMP,OPERATION,SQL_REDO,sql_undo from v$logmnr_contents;

28i只能用于分析DML操作,9i则可以分析DDL操作。

2,  logminer不支持索引组织表、LongLOB及集合类型。

3,  Logminer不支持MTS的环境

4,  Logminer必须使用被分析的数据库实例产生的字典文件,另外必须保证安装Logminer数据库的字符集和被分析数据库的字符集相同。

5,  源数据库平台必须和分析数据库平台一样。

安装Logminer

SYS用户身份登陆SQLPLUS,运行下面两个脚本

1$ORACLE_HOME/rdbms/admin/dbmslm.sql(创建dbms_logmnr包)

2$ORACLE_HOME/rdbms/admin/dbmslmd.sql(创建dbms_logmnr_d包)

使用Logminer进行分析

设定用于Logminer分析的日志文件存放位置

设置UTL_FILE_DIR需要重启数据库。该参数的值是待分析的日志文件的存储位置,也可以设置未*表示你能操作任何目录。

initsid.ora文件中加入utl_file_dir参数或者在sqlplus中执行命令。

SQL> alter system set utl_file_dir=* scope=spfile;

SQL> shutdown immediate;

SQL>startup

生成数据字典文件

begin
  dbms_logmnr_d.
build(dictionary_filename => 'zhanglei_dict.dat',dictionary_location => 'D:');
end;

dictionary_location指的是Logminer数据字典文件存放的位置,它必须匹配utl_file_dir的设定。 Dictionary_filename指的是字典文件的名称,可以任意取。

建立日志分析表并添加日志文件

建立日志分析表数据库必须在mountnomount状态。

begin  dbms_logmnr.add_logfile(options=>dbms_logmnr.new,logfilename=>'E:/ORACLE/ORADATA/ORADB/REDO01.LOG');
end;

其中的opeions有三种取值,

Dbms_logmnr.new  用于建立一个日志分析表

Dbms_logmnr.addfile 用于加入分析的日志文件;

Dbms_logmnr.removefile 用于移出日志文件。

可以用下述方法查询分析的日志包含的SCN范围和日期范围。

select low_time,high_time,low_scn,next_scn from v$logmnr_logs;

1     2009-1-7 9:45:07    2009-1-12 9:23:44  6266026  6300404

2     2009-1-12 9:23:44  2009-2-2 15:00:46  6300404  6672312

3     2009-2-2 15:00:46  1988-1-1 6672312  281474976710655

启动Logminer进行分析

begin
  dbms_logmnr.start_logmnr(dictfilename=>
'd:/zhanglei_dict.dat',startTime => sysdate-1/24/6,endtime=>sysdate);
end;

  上面的语句分析最近10分钟的操作日志,并把分析结果放到数据字典中以用于查询。

查看日志分析的结果

    Select * from v$logmnr_contents

结束LogMiner的分析

Begin

  Dbms_logmnr.end_logmnr();

End;

 

 

 

 

 

 

你可能感兴趣的:(oracle,sql,数据库,File,工具,Dictionary)