Oracle日志挖掘案例,你学到了什么?

数据库 Oracle
日志挖掘可以在源库进行,也可以在其他目标库进行,但需要注意必须是同构操作系统、数据库版本要大于等于源库,字符集也需相同。

一、最常用的日志挖掘方式

日志挖掘可以在源库进行,也可以在其他目标库进行,但需要注意必须是同构操作系统、数据库版本要大于等于源库,字符集也需相同。

最常用的还是在源库加载归档日志进行挖掘。

二.操作案例

2.1 程序异常造成误删除记录

某系统应用程序BUG,造成数据库丢失了几千条数据,但程序上没有找到对应的删除SQL,需通过日志挖掘定位数据删除的具体操作、时间点等信息。

打开补充日志:

图片图片

2.2 确认出现问题的时间点

根据业务排查,第一次出现问题的时间点应该在6月5日上午08:30分左右,最后问题时间在6月5日下午17:00左右。

2.3 从数据库视图中查看问题时间段归档的序号

图片图片

2.4 恢复已删除的归档

当前系统备份由NBU接管,归档备份存储在NBU的存储上,没有在数据库本地,所以恢复时分配通道时要指定NBU相关的环境变量并创建一个本地目录用于存放恢复的归档。

图片图片

2.5 加载归档文件

第一个加载的归档文件需要使用DBMS_LOGMNR.NEW,后面的不需要。

图片图片

2.6 执行分析

exec DBMS_LOGMNR.START_LOGMNR(OPTIONS=>DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG);

2.7 保存分析的数据

由于涉及了多张表的操作,并且数据较多,在存储空间允许的情况下,最好是创建一张临时表存放挖掘出的数据,由于数据量较大,可以对表名和操作类型创建联合索引,避免查询太慢。

图片图片

2.8 结束挖掘

execute dbms_logmnr.end_logmnr;

2.9 按表名和类型检查操作

图片图片

可以看到,从6月5日8:29开始,总共被删除了4000多条记录。

username,machine等字段为UNKONWN,是由于问题时间段没有开启补充日志,如果启用了还是显示UNKNOWN,那么可能是缺少登录信息,即在挖掘的时间段之前会话已登录了。

注意,这里查询出的SQL并不是和实际执行的SQL完全一致的,是经过数据库转换过的SQL。

责任编辑:武晓燕 来源: IT那活儿
相关推荐

2024-04-12 08:54:13

从库数据库应用

2023-10-16 08:55:43

Redisson分布式

2023-04-10 07:40:36

GraphQLRest通信模式

2022-07-19 08:04:04

HTTP应用层协议

2023-06-03 00:05:18

TypeScriptJSDoc扫描器

2023-04-26 01:25:05

案例故障模型

2024-10-18 11:48:00

2024-07-31 09:28:56

2024-08-12 15:44:06

2023-06-06 08:14:18

核心Docker应用程序

2023-04-26 22:52:19

视觉人脸检测人脸对齐

2021-03-09 09:55:02

Vuejs前端代码

2021-09-03 06:46:34

MyBatis缓存后端

2023-06-30 07:30:38

2021-12-26 18:30:56

嵌入式ARM链接

2021-07-29 18:46:52

可视化类型图形化

2015-09-06 16:03:57

2021-07-28 07:01:09

薅羊毛架构Vue+SSR

2020-07-21 18:54:21

Rust类型转换语言

2020-02-22 15:01:51

后端前端开发
点赞
收藏

51CTO技术栈公众号