挖掘Oracle日志的“大杀器”
挖掘Oracle日志的“大杀器”
编辑手记:
LogMiner是用于Oracle日志挖掘的利器,使用该工具可以轻松获得Oracle 重做日志文件(归档日志文件)中的具体内容,LogMiner分析工具实际上是由一组PL/SQL包和一些动态视图组成,它作为Oracle数据库的一部分来发布,是oracle公司提供的一个完全免费的工具。本文主要演示LogMiner的使用,直观展示LogMiner的作用。
环境:Oracle 11.2.0.4 RAC
- 1.查询当前日志组
- 2.业务用户插入操作
- 3.归档日志切换
- 4.业务用户插入操作
- 5.归档日志切换
- 6.业务用户更新操作
- 7.归档日志切换
- 8.确认需要分析的日志
- 9.备份归档日志
- 10.使用LogMiner分析
查询当前日志组
使用sys用户查询Oracle数据库的当前日志组:
这里当前日志(current)是:李玟
thread 1 sequence 30
thread 2 sequence 25
业务用户插入操作
模拟业务用户jingyu插入T2表数据:
归档日志切换
为了区分每个日志的不同操作,这里对数据库进行手工归档切换,模拟现实中实际的归档切换。
业务用户插入操作
模拟业务用户jingyu删除T2表部分数据:
归档日志切换
为了区分每个日志的不同操作,这里对数据库进行手工归档切换,模拟现实中实际的归档切换。
业务用户更新操作
模拟业务用户jingyu更新T2表部分数据:
归档日志切换
为了区分每个日志的不同操作,这里对数据库进行手工归档切换,模拟现实中实际的归档切换。
确认需要分析的日志
确认之后需要使用LogMiner分析的日志:
备份归档日志
将相关的归档都copy备份出来:
备份出来的归档日志文件如下:
使用LogMiner分析
使用LogMiner分析归档日志:
查询v$logmnr_contents
实验发现:
以username为条件无法查询到相关记录,最终确认username都是unknown而不是真正执行语句的业务用户jingyu。 而挖掘出的日志sql_redo这个字段是完整的SQL,可以采用like的方式查询。
比如我分析更新操作的日志,就可以得到下面这样的结果:
至此,LogMiner基本的操作实验已完成。
附
与LogMiner有关的一些操作命令参考:
最后确认如果开启了附加日志,username就可以捕获到正确的值:
可以看到,开启了附加日志,就可以正常显示username的信息了。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!