当前位置:  数据库>oracle

使用LogMiner挖掘归档日志

    来源: 互联网  发布时间:2017-06-25

    本文导语: LogMiner是Oracle公司推出的一个非常有用的分析工具。通过它我们可以得到重做日志或者归档日志的内容。 当数据库出现问题之后,使用LogMiner挖掘日志,有时候会找到问题的根源,即使找不到,也对定位问题的成因会有所帮助。 ...

LogMiner是Oracle公司推出的一个非常有用的分析工具。通过它我们可以得到重做日志或者归档日志的内容。
当数据库出现问题之后,使用LogMiner挖掘日志,有时候会找到问题的根源,即使找不到,也对定位问题的成因会有所帮助。

一、 安装LogMiner

LogMiner的安装非常简单,只需要执行几个脚本。
这里用的是11g,版本不同,请参考官方文档。
dbmslm.sql:创建DBMS_LOGMNR包,该包用来分析日志文件。
dbmslmd.sql:创建DBMS_LOGMNR包,该包用来分析日志文件。
dbmslms.sql:创建dbms_logmnr_session包,该包用来分析session
第二个脚本用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。

SQL> conn / as sysdba
已连接。
SQL> @?/rdbms/admin/dbmslmd.sql

程序包已创建。


同义词已创建。

SQL> @?/rdbms/admin/dbmslm.sql

程序包已创建。


授权成功。


同义词已创建。

SQL> @?/rdbms/admin/dbmslms.sql

程序包已创建。

没有错误。

授权成功。
二、 LogMiner的使用

在使用LogMiner之前,需要对数据库进行一些配置。

1. 开启归档模式

确认数据库启用归档模式,并配置配置归档路径
alter system set log_archive_dest_1=’location=/arch’ scope=spfile;

2. 添加补充日志
SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE INDEX) COLUMNS;

数据库已更改。
3. 设置参数UTL_FILE_DIR

该参数值为服务器上存放数据数据字典的位置。
11g可以不需要数据字典,直接从重做日志或归档日志读取。10g目前还没有做测试。
但是如果需要异机上分析日志,就需要数据字典了。

alter system set UTL_FILE_DIR='/logminer' scope=spfile; 

然后重启数据,使该参数生效。

4. 生成数据字典
BEGIN
dbms_logmnr_d.build(dictionary_filename =>'dict.ora',dictionary_location =>'/logminer');
END;

PL/SQL 过程已成功完成。

这里生成的数据字典文件叫dict.ora

  • 创建需要分析的文件列表
  • BEGIN dbms_logmnr.add_logfile(LogFileName=>'/arch/1_17_874057689.dbf',Options=>dbms_logmnr.new);  
    END;
    
    PL/SQL 过程已成功完成。

    添加一个日志

    BEGIN
    dbms_logmnr.add_logfile(LogFileName=>'/u01/oradata/archlog/2_20910_766249125.arc',Options=>dbms_logmnr.addfile);
    END;
    
    PL/SQL 过程已成功完成。
    6. 开始分析日志

    使用数据字典

    BEGIN
     dbms_logmnr.start_logmnr(DictFileName=>'/logminer/dict.ora');
    END;
    
    PL/SQL 过程已成功完成。

    或者使用归档日志

    BEGIN
    sys.dbms_logmnr.start_logmnr( options => sys.dbms_logmnr.dict_from_online_catalog);
    END;
    
    PL/SQL 过程已成功完成。
    7. 查看日志的内容

    SQL> select count(*) from v$logmnr_contents;

      COUNT(*)
    ----------
           485
    8. 停止分析,释放内存
    SQL> exec sys.dbms_logmnr.end_logmnr;
    
    PL/SQL 过程已成功完成。
    三、 工作中遇上的问题

    在对一个客户做异机日志挖掘的时候,碰上一些问题,贴在这里做一个记录。

    1.
    sys @ tttt>begin 
    sys.dbms_logmnr.add_logfile(LogFileName=>'/arch2/ARC_LDSC_0000336865_0682715013.0002',Options => sys.dbms_logmnr.new);
    end;  2    3  
      4  /
    begin
    *
    ERROR at line 1:
    ORA-01284: file /arch2/ARC_LDSC_0000336865_0682715013.0002 cannot be opened
    ORA-00317: file type 3840 in header is not log file
    ORA-00334: archived log: '/arch2/ARC_LDSC_0000336865_0682715013.0002'
    ORA-06512: at "SYS.DBMS_LOGMNR", line 68
    ORA-06512: at line 2
    • 问题分析
      报错说归档日志不是日志文件。
      初步判断是文件传输的问题,最开始传递归档的时候,是先传到我本机,然后再传到另外一个数据库做分析。归档日志是从AIX->Windows->AIX,在传递过程中文件头有些改变。
    • 解决方法:
      直接讲日志传到目标服务器进行分析,问题解决。
    2.
    BEGIN
    sys.dbms_logmnr.add_logfile(LogFileName=>'/arch2/arch2/ARC_LDSC_0000336865_0682715013.0002',Options => sys.dbms_logmnr.new);
    END;
    
    BEGIN sys.dbms_logmnr.add_logfile(LogFileName=>'/arch2/arch2/ARC_LDSC_0000336865_0682715013.0002',Options => sys.dbms_logmnr.new); END;
    
    *
    ERROR at line 1:
    ORA-01284: file /arch2/arch2/ARC_LDSC_0000336865_0682715013.0002 cannot be
    opened
    ORA-00331: log version 10.2.0.4.0 incompatible with ORACLE version 10.2.0.3.0
    ORA-00334: archived log: '/arch2/arch2/ARC_LDSC_0000336865_0682715013.0002'
    ORA-06512: at "SYS.DBMS_LOGMNR", line 68
    ORA-06512: at line 1
    • 问题分析:
      从报错内容来看是两个库compatible参数不一致。
    • 解决方法
      经过检查发现确实是两个库参数不一致,讲目标数据库的参数改成10.2.0.4.0,重启后问题解决。


        
     
     
     
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 浅谈LogMiner的使用方法
  • 理解和使用Oracle 8i分析工具LogMiner
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • c#中SAPI使用总结——SpVoice的使用方法
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • 共享内存一般是怎么使用的,是同消息队列配合使用么
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • Jsp可否使用带有GUI的JavaBean,如何使用?
  • c/c++预处理命令预#,##使用介绍
  • asp程序使用的access在Linux下如何使用!
  • 在div中使用css让文字底部对齐的方法
  • 新装的Linux使用root用户不能使用FTP?
  • Python namedtuple(命名元组)使用实例
  • LINUX下使用Eclipse,如何使用交叉编译器?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3