oracle日志解析、logminer解析oracle日志文件

oracle日志解析、logminer解析oracle日志文件


前言

解析oracle日志方法分为两种:
1.Oracle Logminer
2.Oracle Golden Gate
这里推荐使用Oracle Logminer,因为Oracle8i以后的版本都带有LogMiner。

一、logminer简介

解析Oracle 在线(online)日志或归档(offline)日志。

二、安装logminer

1.查看sql脚本是否存在(oracle8i之后默认存在该sql脚本)

在此以oracle安装在D:\oracle\oracle为例

$ORACLE_HOME\RDBMS\ADMIN

D:\oracle\oracle\product\11.2.0\dbhome_1\RDBMS\ADMIN\

二选一即可

2.在sqlplus命令行执行脚本

SQL>@$ORACLE_HOME\RDBMS\ADMIN\dbmslm.sql;
SQL>@$ORACLE_HOME\RDBMS\ADMIN\dbmslmd.sql;
SQL>@$ORACLE_HOME\RDBMS\ADMIN\dbmslms.sql;

SQL>@D:\oracle\oracle\product\11.2.0\dbhome_1\RDBMS\ADMIN\dbmslm.sql;
SQL>@D:\oracle\oracle\product\11.2.0\dbhome_1\RDBMS\ADMIN\dbmslmd.sql;
SQL>@D:\oracle\oracle\product\11.2.0\dbhome_1\RDBMS\ADMIN\dbmslms.sql;

二选一即可

3.设置字典文件位置

UTL_FILE_DIR路径可随意设置;

alter system set UTL_FILE_DIR='D:\oracle\oracle\oradata\practice\logmnr' scope=spfile;

4.重启oracle

shutdown immediate;
startup;

5.生成字典文件

SQL>execute dbms_logmnr_d.build('dictdic.dic','D:\oracle\oracle\oradata\practice\logmnr');

SQL>execute dbms_logmnr_d.build('dict.ora','D:\oracle\oracle\oradata\practice\logmnr');

二选一即可

6.为什么生成字典文件

生成字典文件是为了翻译oracle日志文件信息

三、logminer命令介绍

1.添加解析文件dbms_logmnr.add_logfile;

2.解析文件dbms_logmnr.start_logmnr;

3.查询动态数据 select * from v$logmnr_contents;

4.结束解析dbms_logmnr.end_logmnr;(不一定每次都要结束解析,默认情况下当进程结束自动结束解析)

四、logminer命令使用

1.添加解析文件
第一个文件用dbms_logmnr.new
追加文件用dbms_logmnr.addfile

SQL>execute dbms_logmnr.add_logfile(LogFileName=>'D:\ORACLE\ORACLE\ORADATA\ORCL\REDO01.LOG',Options=>dbms_logmnr.new);
SQL>execute dbms_logmnr.add_logfile(LogFileName=>'D:\ORACLE\ORACLE\ORADATA\ORCL\REDO02.LOG',Options=>dbms_logmnr.addfile);
SQL>execute dbms_logmnr.add_logfile(LogFileName=>'D:\ORACLE\ORACLE\ORADATA\ORCL\REDO03.LOG',Options=>dbms_logmnr.addfile);

2.解析文件
①无条件解析
dictfilename的值为字典文件路径

SQL> execute dbms_logmnr.start_logmnr(dictfilename=>'D:\oracle\oracle\oradata\practice\logmnr\dictdic.dic');

SQL> execute dbms_logmnr.start_logmnr(dictfilename=>'D:\oracle\oracle\oradata\practice\logmnr\dict.ora');

②条件解析

SQL> execute dbms_logmnr.start_logmnr(
dictfilename=>'D:\oracle\oracle\oradata\practice\logmnr\dictdic.dic', 
StartTime =>to_date('2020-11-27 00:00:00','YYYY-MM-DD HH24:MI:SS'),
EndTime =>to_date('2020-11-27 23:59:59','YYYY-MM-DD HH24:MI:SS'));

3.查看动态数据表

在解析时(dbms_logmnr.start_logmnr)生成
v$logmnr_contents,当解析结束v$logmnr_contents消失。
SQL> select * from v$logmnr_contents;
SQL> select sql_redo,sql_undo ,operation,timestamp  from v$logmnr_contents where operation = 'UPDATE' and seg_name='SCOTTONE' and table_name='SCOTTONE';

注operation和table_name的值需要大写

字段注释
sql_redo记录sql(sql_redo字段长度为4000,如果超过长度将在下一条数据显示)
sql_undo回退事务sql(sql_undo字段长度为4000,如果超过长度将在下一条数据显示)
operationsql类型(insert、update等)
timestamp数据库数据改变时间
seg_name修改后的数据段的名称
table_name表名

更多字段请查看: https://blog.csdn.net/weixin_43938004/article/details/110226987

4.结束分析

SQL>execute dbms_logmnr.end_logmnr

注意

1.生成字典文件时,字典文件对应的是oracle当前数据库所有表的对应关系,如果表的字段或类型改变都需要重新生产字典文件

2.解析归档日志需要开启补充日志
查看是否开启

SQL>select supplemental_log_data_pk, supplemental_log_data_ui from v$database;

supplemental_log_data_pk = no和supplemental_log_data_ui = no,则未开启。
开启命令

SQL>alter database add supplemental log data (primary key, unique index) columns;

Database altered

官方文档: https://docs.oracle.com/en/database/oracle/oracle-database/18/sutil/oracle-logminer-utility.html#GUID-3417B738-374C-4EE3-B15C-3A66E01AE2B5

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值