达梦数据库日志挖掘使用

使用背景:

在很多场合下,我们需要分析数据库操作日志来确认开发人员是否存在误操作,类似删表和删除数据等操作。这个时候就可以使用logmnr工具来分析归档日志。

使用方法:

(1)首先确保数据库处于归档模式下,且保留的归档文件日志包含误操作日志。

(2)确保数据库参数RLOG_APPEND_LOGIC为1或者2,如果为0,归档文件记录的操作会很少。

查询参数值方法:

select * from v$dm_ini where para_name=’RLOG_APPEND_LOGIC’;

(3)查看数据库保留归档信息,通过如下sql语句查看归档文件信息

select first_time,name from v$archived_log;

根据FIRST_NAME(日志文件起始时间)来确定需要查看的归档范围。

(4)添加需要分析的归档日志

call dbms_logmnr.add_logfile('/dm8/dmarch/ARCHIVE_LOCAL1_20161013025146670_0.log');

(5)确认归档日志是否被加载

select * from v$logmnr_logs;

(6)启动日志分析

DBMS_LOGMNR.START_LOGMNR(OPTIONS=>2128,STARTTIME=>TO_DATE('2021-05-01 00:00:00','YYYY-MM-DD HH24:MI:SS') ,

ENDTIME=>TO_DATE('2021-05-25 00:00:00','YYYY-MM-DD HH24:MI:SS'));

(7)查看v$logmnr_contents视图找出对应的操作,例如:

select start_timestamp,sql_redo from v$logmnr_contents

where table_name='TEST' and operation='INSERT';

SELECT * FROM v$logmnr_contents

where table_name='TEST' and USERNAME<>’SYSDBA’;

v$logmnr_contents视图

(8)通过分析v$logmnr_contents视图分析所有的操作日志。

注:(dbms_logmnr.add_logfile语句中每次只能添加一个归档文件,但是可以通过批量执行多个dbms_logmnr.add_logfile语句的方式添加归档,再次分析需要停止日志分析DBMS_LOGMNR.END_LOGMNR)

批量添加要分析的归档方式如下:

call dbms_logmnr.add_logfile('/dm8/dmarch/ARCHIVE_LOCAL1_20210513025146670_0.log');

call dbms_logmnr.add_logfile('/dm8/dmarch/ARCHIVE_LOCAL1_20210514152249980_0.log');

call dbms_logmnr.add_logfile('/dm8/dmarch/ARCHIVE_LOCAL1_20210516152386170_0.log');

call dbms_logmnr.add_logfile('/dm8/dmarch/ARCHIVE_LOCAL1_20210521192837512_0.log');

之后再分析即可:

DBMS_LOGMNR.START_LOGMNR(OPTIONS=>2128,STARTTIME=>TO_DATE('2021-05-01 00:00:00','YYYY-MM-DD HH24:MI:SS') ,

ENDTIME=>TO_DATE('2021-05-25 00:00:00','YYYY-MM-DD HH24:MI:SS'));

欢迎关注我的博客《Jackin's Blog - 知识改变命运》学习分享更多知识