Oracle logmnr使用

logmnr是用于分析日志的工具,主要有以下几个用途:

1. 查明数据库的改变登记:能够用Logmnr来分析这些事务,看看究竟发生了些什么事情

2. 找回丢失的数据,当不能利用flashback时候,能够利用Logmnr工具来找回数据,这个时候,只必需有归档日志即可.

 

logmnr工具包含的过程与视图

dbms_logmnr_d包包含了:

(1)add_logfile:用来增加/剔除用于分析的日志文件.

(2)start_logmnr:用来开启日志分析,而且在9i/10g中,能够开启许多不同的分析选项.

(3)end_logmnr:用来终止分析会话,它将回收LogMiner所挪借的内存

与LogMiner相关的数据字典:

v$logmnr_dictionary:LogMiner可能利用的数据字典消息.

v$logmnr_parameters:目前LogMiner所设定的参数消息.

v$logmnr_logs:目前用于分析的日志列表.

v$logmnr_contents:日志分析收获.

 

使用示例1:

SQL> exec sys.dbms_logmnr.add_logfile(LogFileName=>'c:\oradata\jssweb\arc\20120911_35.arc',options=>dbms_logmnr.new);

--SQL> exec sys.dbms_logmnr.add_logfile(LogFileName=>'c:\oradata\jssweb\arc\20120911_36.arc',options=>dbms_logmnr.addfile);

--开启日志分析

--DBMS_LOGMNR_D.STORE_IN_FLAT_FILE:将数据字典提取到一个平面数据字典文件

--DBMS_LOGMNR_D.STORE_IN_REDO_LOGS:将数据字典提取到重做日志文件

--DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG:使用当前的数据库的联机数据字典(只能分析当前数据库的重做日志文件,此时就不需要平面字典文件)

SQL> exec sys.dbms_logmnr.start_logmnr(options=>sys.dbms_logmnr.dict_from_online_catalog);

--查看分析结果

SQL> select t.scn,t.timestamp,t.seg_owner,t.operation from v$logmnr_contents t where t.seg_name='MYTESTTAB';

--释放内存

SQL> exec dbms_logmnr.end_logmnr;

使用示例2:

1). 修改初始化参数

  SQL> alter system set utl_file_dir='C:\oracle\logmnr\' SCOPE=SPFILE;

2). 重启数据库

3). 提取数据字典文件

  SQL> execute dbms_logmnr_d.build('logmnr_dict.ora','c:\oracle\logmnr\',options=>dbms_logmnr_d.store_in_flat_file);

4). 指定LogMiner要分析的重做日志文件

  SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE('C:\oradata\orcl\REDO01.LOG',options=>dbms_logmnr.NEW);
    SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE('C:\oradata\orcl\REDO02.LOG',options=>dbms_logmnr.ADDFILE);

    SQL> EXECUTE DBMS_LOGMNR.ADD_LOGFILE('C:\oradata\orcl\REDO03.LOG',options=>dbms_logmnr.ADDFILE);

5). 启动LogMiner会话

  --options=>dbms_logmnr.NO_ROWID_IN_STMT 取消"ROWID="的内容

  --dbms_logmnr.DICT_FROM_ONLINE_CATALOG只分析当前数据库的重做日志文件

  --options=>dbms_logmnr.NO_ROWID_IN_STMT+dbms_logmnr.DICT_FROM_ONLINE_CATALOG

  SQL> execute dbms_logmnr.start_logmnr(dictfilename=>'c:\oracle\logmnr\logmnr_dict.ora');

6). 查看结果

  SQL> SELECT * FROM V$LOGMNR_LOGFILE;

  SQL> select t.scn,t.timestamp,t.seg_owner,t.operation from v$logmnr_contents t where t.seg_name='MYTESTTAB';

7). 结束LogMiner会话

  SQL> EXECUTE DBMS_LOGMNR.END_LOGMNR;

 

原文地址:https://www.cnblogs.com/landexia/p/2680223.html