ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 使用logminer

使用logminer

原创 Linux操作系统 作者:NinGoo 时间:2019-07-15 12:48:01 0 删除 编辑

LogMiner 是Oracle公司从8i起提供的一个非常有用的分析工具,使用该工具可以轻松获得Oracle redo logfile中的具体内容。


1.安装Logminer

以sys用户执行:

$ORACLE_HOME/rdbms/admin/dbmslm.sql
  
$ORACLE_HOME/rdbms/admin/dbmslmd.sql

其中dbmslm.sql建立dbms_logmnr包,dbmslmd.sql建立dbms_logmnr_d包。如果系统中已经存在这两个package,则说明logminer已经安装。

2.创建数据字典文件

创建数据字典的目的就是让LogMiner引用涉及到内部数据字典中的部分时为他们实际的名字,而不是系统内部的16进制。logminer也允许将数据字典保存在redo log中(数据库必须为归档模式),如果是分析本数据库的redo log,也可以不用生成而直接引用本数据的数据字典信息。

设置utl_file_dir参数,需要重启

SQL> alter system set utl_file_dir='D:' scope=spfile;

System altered.

重启后,执行:

SQL> exec dbms_logmnr_d.build(dictionary_filename=>'dict.ora',dictionary_locatio
n=>'D:',options=>dbms_logmnr_d.store_in_flat_file);

PL/SQL procedure successfully completed.

3.添加要分析的redo logfile

SQL> exec dbms_logmnr.add_logfile('d:oracleoradataningredo01.log',dbms_logmn
r.new);

PL/SQL procedure successfully completed.

SQL> exec dbms_logmnr.add_logfile('d:oracleoradataningredo02.log',dbms_logmn
r.addfile);

PL/SQL procedure successfully completed.

通过v$logmnr_logs可以查看已经加入的logfile

删除某个已经加入的logfile

Execute dbms_logmnr.add_logfile('d:oracleoradataningredo02.log’,dbms_logmnr.removefile);

5.查询分析的日志文件包含的scn范围和时间范围

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

LOW_SCN NEXT_SCN LOW_TIME HIGH_TIME
---------- ---------- --------- ---------
568805 597160 03-NOV-06 06-NOV-06
597160 2.8147E+14 06-NOV-06 01-JAN-88

6.开始分析日志

根据scn分析

SQL> exec dbms_logmnr.start_logmnr(dictfilename=>'d:dict.ora',startscn=>568805,
endscn=>597160);

PL/SQL procedure successfully completed.

根据时间分析

SQL> exec dbms_logmnr.start_logmnr(dictfilename=>'d:dict.ora',starttime=>to_dat
e('20061104 12:00:00','yyyymmdd hh24:mi:ss'), endtime =>to_date('20061105 12:00:
00','yyyymmdd hh24:mi:ss'));

PL/SQL procedure successfully completed.

默认情况下,logminer不会分析DDL日志。如果需要分析DDL,则需要修改option参数(只有使用数据字典文件,或者数据字典信息在redo log中时才能分析DDL):

SQL> exec dbms_logmnr.start_logmnr(options=>dbms_logmnr.ddl_dict_tracking);

PL/SQL procedure successfully completed.

如果只分析已经commit的事务,则

SQL> exec dbms_logmnr.start_logmnr(options=>dbms_logmnr.committed_data_only);

PL/SQL procedure successfully completed.

7.查询分析后的结果(该视图只在分析期间有数据)

SQL>select username,sql_redo,sql_undo From v$logmnr_contents;

查看DDL结果:

SQL> select sql_redo from v$logmnr_contents where opration='DDL';

8.停止分析

SQL> exec dbms_logmnr.end_logmnr;

PL/SQL procedure successfully completed.

默认情况下,logminer的一些数据都存放在system表空间中,最好修改一下:

SQL> exec dbms_logmnr_d.set_tablespace('users');

PL/SQL procedure successfully completed.

9.其他

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/193161/viewspace-50203/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 关于initrans参数
请登录后发表评论 登录
全部评论

注册时间:2004-12-07

  • 博文量
    200
  • 访问量
    132192