DM8使用DBMS_LOGMNR系统包

准备工作

1.启动DBMS_LOGMNR系统包

DM8默认是会创建DBMS_LOGMNR系统包的,保险起见我们可以先查一下:

select sf_check_system_package('DBMS_LOGMNR');

返回值为1则为已启用DBMS_LOGMNR系统包。

2.日志准备

在使用该系统包之前,应该开启归档和最小附加日志。

开启最小附加日志:

SP_SET_PARA_VALUE(2,'RLOG_APPEND_LOGIC',1);

开启归档:

alter database mount;
alter database add archivelog 'dest=/home/dmdba/dm8/arch,TYPE=local,FILE_SIZE=1024,SPACE_LIMIT=10240';
alter database archivelog;
alter database open;

查询验证:

select sf_get_para_value(2,'RLOG_APPEND_LOGIC');
select sf_get_para_value(2,'ARCH_INI');

均返回1表示均已开启。

使用DBMS_LOGMNR

1.查询和添加需要分析归档

select name,first_time,next_time,first_change# ,next_change# from v$archived_log;--查看有哪些归档可用
dbms_logmnr.add_logfile('/home/dmdba/dm8/arch/ARCHIVE_LOCAL1_0xC5AC857[0]_2021-12-14_11-21-17.log');
dbms_logmnr.add_logfile('/home/dmdba/dm8/arch/ARCHIVE_LOCAL1_0xC5AC857[0]_2021-12-14_10-59-35.log');

select * from v$logmnr_logs;--查看已添加的归档

2.启动归档日志分析

dbms_logmnr.start_logmnr (options=>2130,
starttime=>to_date('2021-12-14 00:00:00','YYYY-MM-DD HH24:MI:SS'),
endtime=>to_date('2021-12-15 00:00:00','YYYY-MM-DD HH24:MI:SS'));

注意:options可以按模式相加来取组合。如组合全部模式则为:2+16+64+2048=2130,那么options取值就是2130.

3.查询日志分析结果 

select operation_code,scn,sql_redo,timestamp,seg_owner,table_name 
from v$logmnr_contents 
where  operation_code < 6;

注意:sql_undo功能达梦数据库目前暂时不支持,只能查到sql_redo的内容,所以通过V$LOGMNR_CONTENTS查询的sql_undo列全部为空值。
        关于V$LOGMNR_CONTENTS中,操作类型 OPERATION 和 OPERATION_CODE的对应关系分别为: INTERNAL 0、INSERT 1、DELETE 2、UPDATE 3、BATCH_UPDATE 4、DDL 5、START 6、COMMIT 7、SEL_LOB_LOCATOR 9、LOB_WRITE 10、LOB_TRIM 11、SELECT_FOR_UPDATE 25、LOB_ERASE 28、MISSING_SCN 34、ROLLBACK 36、UNSUPPORTED  255、SEQ MODIFY 37

        整个V$LOGMNR_CONTENTS的定义类似oracle的,可以参考

V$LOGMNR_CONTENTS (oracle.com)https://docs.oracle.com/en/database/oracle/oracle-database/18/refrn/V-LOGMNR_CONTENTS.html#GUID-B9196942-07BF-4935-B603-FA875064F5C3(22条消息) V$LOGMNR_CONTENTS字段含义_傲娇木子的博客-CSDN博客_v$logmnr_contentshttps://blog.csdn.net/weixin_43938004/article/details/110226987

4.终止分析

dbms_logmnr.end_logmnr();

注意事项

1.实测可知,在add_logfile之后,我们对数据库所作修改,归档日志的内容变动,均不再影响日志分析结果。即我们看到的分析结果是取决于add_logfile时对应归档日志的内容,并不会动态刷新。

2.如果要移除需要分析归档日志,可以使用remove_logfile语句:

dbms_logmnr.remove_logfile('/home/dmdba/dm8/arch/ARCHIVE_LOCAL1_0xC5AC857[0]_2021-12-14_10-59-35.log');

如果所有需要分析的归档日志均被移除,再查询日志分析结果会报错。

3.start_logmnr之后不能再添加文件。因此如果数据库数据有更新,应该关闭logmnr之后再打开重新加日志再分析。

4.logmnr支持的是归档日志分析,无法分析redo日志。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值