ITPub博客

首页 > 数据库 > Oracle > Logminer的使用

Logminer的使用

原创 Oracle 作者:Rman2017 时间:2017-04-19 09:52:41 0 删除 编辑

SQL> @/dat/DBSoftware/oracle/product/10.2.0/db_1/rdbms/admin/dbmslm.sql------用来创建DBMS_LOGMNR包,该包用来分析日志文件


Package created.



Grant succeeded.


SQL> @/dat/DBSoftware/oracle/product/10.2.0/db_1/rdbms/admin/dbmslmd.sql------用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。 


Package created.



SQL> alter database add supplemental log data;----------如果不启用日志追加,就无法查看DML,只能查看DDL


Database altered.


创建数据字典文件

 

数据字典文件是一个文本文件,由dbms_logmnr_d来创建。

首先需要修改参数UTL_FILE_DIR。

该参数值为服务器中放置数据字典文件的目录,10g中通过动态修改参数的方式来修改,然后重启数据库方生效。其中该目录必须预先建立好。


SQL> show parameter utl_file_dir;


NAME                                 TYPE        VALUE

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

utl_file_dir                         string



[oracle@localhost ~]$ mkdir log


SQL> alter system set UTL_FILE_DIR='/home/oracle/log' scope=spfile;


System altered.



SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup;

ORACLE instance started.


Total System Global Area  419430400 bytes

Fixed Size                  1267836 bytes

Variable Size             364906372 bytes

Database Buffers           50331648 bytes

Redo Buffers                2924544 bytes

Database mounted.

Database opened.



SQL> show parameter utl_file_dir


NAME                                 TYPE        VALUE

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

utl_file_dir                         string      /home/oracle/log



然后创建数据字典文件

SQL> begin 

dbms_logmnr_d.build(dictionary_filename=>'logminer_dict.ora',dictionary_location=>'/home/oracle/log');

end; 

 /


PL/SQL procedure successfully completed.


创建要分析的日志文件(在线日志或归档日志)的列表

SQL> execute dbms_logmnr.add_logfile(LogFileName=>'/dat/DBData/oradata/NACEC/redo01.log',options=>dbms_logmnr.new);


PL/SQL procedure successfully completed.


SQL> execute dbms_logmnr.add_logfile(LogFileName=>'/dat/DBData/oradata/NACEC/redo02.log',options=>dbms_logmnr.new);


PL/SQL procedure successfully completed.


SQL> execute dbms_logmnr.add_logfile(LogFileName=>'/dat/DBData/oradata/NACEC/redo03.log',options=>dbms_logmnr.new);


PL/SQL procedure successfully completed.



使用Logminer进行日志分析


SQL> execute dbms_logmnr.start_logmnr(DictFileName=>'/home/oracle/log/logminer_dict.ora');


PL/SQL procedure successfully completed.


SQL> select username ,operation,sql_redo,sql_undo,SCN

from v$logmnr_contents

where seg_owner='LIUSHIMING’;



SQL> delete from bigtable where rownum<1000;


999 rows deleted.


SQL> commit;


Commit complete.


SQL> select username ,operation,sql_redo,sql_undo,SCN

from v$logmnr_contents

where seg_owner='LIUSHIMING’AND OPERATION=‘DELETE’;


no rows selected



如果只能看到DDL语句,看不到DML语句,执行


EXECUTE DBMS_LOGMNR.START_LOGMNR(OPTIONS => SYS.DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG); ----只分析当前数据库的重做日志文件


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

请登录后发表评论 登录
全部评论

注册时间:2017-03-30

  • 博文量
    352
  • 访问量
    132779