云贝教育 |【技术文章】Logminer日志矿工简介
作者:刘晓峰
原文链接:http://www.tdpub.cn/Home/Blog/detail/id/1347.html
1.Logminer能干什么
(1)查询数据库损坏,比如误删了数据库读写
(2)跟踪用户所做的更改
(3)通过日志分析哪些表在做频繁的DML,以便进行性能优化
我们通过logminer演示用户的修改(审计需要提前开启,但是logminer并不需要)
这里我们source数据库和mining数据库都是同一个(正常情况是source是生产,mining测试)
2.先决条件
logminer需要:
(1)一个source数据库,有待分析的日志文件
(2)一个mining数据库,提供挖掘环境
(3)一个logminer字典,用于将内部ID转换成对应的列名
(4)source数据库的日志文件
logminer要求表名和列名不能超过30个字符
2.1启用补充日志记录
如果返回N,则需要启用最小补充日志记录
3.开始挖掘
创建测试环境:
然后有人执行了更新操作(这个人当然是我)
3.1指定字典
字典有三种形式,具体参考decision_tree.gif (483×406) (oracle.com)
我们使用平面字典文件
在假装的"生成环境"执行下面命令
此时去对应目录下可以看到是已经生成了平面文件,接下来我们把此文件假装拷贝到我们的测试库下(不拷贝也行,直接跑)
3.2添加重做日志
3.2.1分析在线重做日志文件
查询得到当前的在线重做日志文件为/usr/local/oracle19c/oradata/ORCL/redo01.log
3.2.2 分析归档重做日志
我们先切换日志组,将在线重做日志刷到归档重做日志
继续查询
通过时间我们判断日志文件应该是
并"假装"拷贝到我们的测试数据库
3.3启动日志矿工
3.4查询数据
使用在线重做日志和归档重做日志查询,都只能只能查到一行DDL的操作,没有找到我们后续的UPDATE
但是其它表的DML却能正常捕捉
3.5结束日志矿工
参考资料:https://docs.oracle.com/en/database/oracle/oracle-database/19/sutil/oracle-logminer-utility.html