ITPub博客

首页 > 数据库 > Oracle > Oracle logmnr使用

Oracle logmnr使用

Oracle 作者:mikeliuy 时间:2015-03-16 15:15:55 0 删除 编辑


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;

 

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

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

注册时间:2012-06-18

  • 博文量
    72
  • 访问量
    420986