获取oracle日志文件,Oracle日志分析

参考文献

一、 背景介绍

Oracle的跟踪文件只记录系统相关的内容,对于数据库上执行的具体的删除、插入、修改等操作,跟踪文件并无相关记录(若这也记录的话,跟踪文件就爆炸了),但是,如果真的需要查看特定时刻特定用户在数据库上执行的操作,也不是没办法,可以通过用logminer分析日志文件获取相关信息。

logminer分析归档日志文件所获得的信息并不是原始的操作信息,而是等价的原子操作信息,譬如用一条delete语句删除两百万条信息,原始操作只需一条命令,但是分析归档文件会获得两百万条delete命令信息。

二、 分析步骤

1. 获取所要分析时间段归档日志文件信息

SELECT 'dbms_logmnr.add_logfile(LogFileName=>'''

|| name

|| ''', Options=>dbms_logmnr.addfile);'

FROM v$archived_log

WHERE first_time > To_date('2019-02-27 20:00', 'yyyy-mm-dd hh24:mi')

AND first_time < To_date('2019-02-27 21:00', 'yyyy-mm-dd hh24:mi')

AND dest_id = 1

ORDER BY first_time

输出信息格式如下:

dbms_logmnr.add_logfile(LogFileName=>'+DATADG/dggtge/archivelog/2019_02_27/thread_2_seq_229652.7316.1001361899', Options=>dbms_logmnr.addfile);

保存好输出信息,并将输出信息第一条中的dbms_logmnr.addfile改成dbms_logmnr.new,即:

dbms_logmnr.add_logfile(LogFileName=>'+DATADG/dggtge/archivelog/2019_02_27/thread_2_seq_229652.7316.1001361899', Options=>dbms_logmnr.new);

2. 设置utl_file_dir参数

utl_file_dir参数用于Oracle进行IO操作时指定目录,此参数为空值、指定目录不存在以及IO操作目录与此参数不一致都会引起IO操作报错。可用以下语句查看utl_file_dir的值:

show parameter utl_file_dir

用以下命令设定utl_file_dir的值:

alter system set utl_file_dir='/tmp' scope=spfile;

此参数为静态参数,需要通过修改spfile重启数据库生效。

3. 创建数据字典文件

因为Oracle日志文件中记录的并非原始对象名称,而是其内部编码,为了使logminer分析出的sql信息便于查看,我们需要利用数据字典文件将其转换成易读的表名和列名。

begin

dbms_logmnr_d.build(

dictionary_filename=>'logminer_dict.dat',

dictionary_location=>'/tmp');

end;

/

注意dictionary_location值与utl_file_dir一致。

4. 添加需要分析的日志文件

-- 第一个为new,其他为addfile。

-- logfilename为select name from v$archived_log中的某一块

begin

dbms_logmnr.add_logfile(LogFileName=>'+DATADG/dggtge/archivelog/2019_02_27/thread_2_seq_229652.7316.1001361899', Options=>dbms_logmnr.new);

dbms_logmnr.add_logfile(LogFileName=>'+DATADG/dggtge/archivelog/2019_02_27/thread_2_seq_229653.7632.1001362211', Options=>dbms_logmnr.addfile);

...

dbms_logmnr.add_logfile(LogFileName=>'+DATADG/dggtge/archivelog/2019_02_27/thread_1_seq_226713.7138.1001365283', Options=>dbms_logmnr.addfile);

end;

/

这里的Options有三个参数:

NEW - 创建一个新的日志文件列表

ADDFILE - 向这个列表中添加日志文件

REMOVEFILE - 移除这个列表中日志文件

5. 开始分析日志文件

用生成的数字字典文件:

begin

dbms_logmnr.start_logmnr(dictfilename=>'/tmp/logminer_dict.dat');

end;

/

或者:

EXECUTE dbms_logmnr.start_logmnr(options =>dbms_logmnr.DICT_FROM_ONLINE_CATALOG);

如果用第二种方式,则无需第3步中创建数据字典文件。

6. 查看分析结果

通过分析视图v$logmnr_contents获取具体的sql语句信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值