发布时间:2025-11-05 15:22:23 来源:码上建站 作者:应用开发
日志挖掘可以在源库进行,也可以在其他目标库进行,案例但需要注意必须是日志同构操作系统、数据库版本要大于等于源库,挖掘字符集也需相同。案例
最常用的日志还是在源库加载归档日志进行挖掘。
某系统应用程序BUG,挖掘造成数据库丢失了几千条数据,案例但程序上没有找到对应的日志删除SQL,需通过日志挖掘定位数据删除的挖掘具体操作、时间点等信息。案例
打开补充日志:
图片
根据业务排查,第一次出现问题的挖掘时间点应该在6月5日上午08:30分左右,最后问题时间在6月5日下午17:00左右。案例
图片
当前系统备份由NBU接管,归档备份存储在NBU的存储上,没有在数据库本地,所以恢复时分配通道时要指定NBU相关的环境变量并创建一个本地目录用于存放恢复的归档。
图片
第一个加载的归档文件需要使用DBMS_LOGMNR.NEW,后面的不需要。
图片
由于涉及了多张表的操作,并且数据较多,在存储空间允许的情况下,最好是创建一张临时表存放挖掘出的数据,由于数据量较大,可以对表名和操作类型创建联合索引,高防服务器避免查询太慢。
图片
图片
可以看到,从6月5日8:29开始,总共被删除了4000多条记录。
username,machine等字段为UNKONWN,是由于问题时间段没有开启补充日志,如果启用了还是显示UNKNOWN,那么可能是缺少登录信息,即在挖掘的时间段之前会话已登录了。
注意,这里查询出的SQL并不是和实际执行的SQL完全一致的,是经过数据库转换过的SQL。源码下载
随便看看