阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

使用LogMiner挖掘归档日志

197次阅读
没有评论

共计 2943 个字符,预计需要花费 8 分钟才能阅读完成。

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

  1. 创建需要分析的文件列表
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,重启后问题解决。

更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2016-11/137442.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计2943字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中