zoukankan      html  css  js  c++  java
  • 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;

     

  • 相关阅读:
    oracle 判断字符串是否包含指定内容
    java 如何使用多线程调用类的静态方法?
    oracle 快速复制表结构、表数据
    oracle 清空表数据的2种方式及速度比较
    一、Instrument之Core Animation工具
    net登录积分(每天登录积分仅仅能加一次) 时间的比較
    正规方程 Normal Equation
    笑谈贝叶斯网络(干货)上
    SQL SERVER 面试题
    好的创始人想要改变世界,最好的创始人还要不放弃——扎克伯格清华中文演讲
  • 原文地址:https://www.cnblogs.com/landexia/p/2680223.html
Copyright © 2011-2022 走看看