• 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;

     

  • 相关阅读:
    关于接口是值类型还是引用类型的猜测
    絮语工作四年的碎碎念
    烧钱游戏加入创业公司的一些感想
    关于C#调用非托管动态库方式的性能疑问
    couchbase作为分布式session容器时的注意事项
    poj3624
    明天的下载链接
    poj 1502
    poj1459 多源多汇最大流
    poj 3041
  • 原文地址:https://www.cnblogs.com/landexia/p/2680223.html
Copyright © 2020-2023  润新知