云贝教育 |【技术文章】file dump analysis
作者:刘晓峰
原文链接:http://www.tdpub.cn/Home/Blog/detail/id/1348.html
昨日使用日志矿工无法找到DML语句,因此dump在线重做日志进行分析
1.查询当前在线重做日志(归档日志没有区别)
为了让转储文件少一点,我们先切一遍
等待脏块刷到磁盘,刷完之后查询status就会看到ACTIVE变成INACTIVE(其实不等待也可以,因为commit一定会把日志写入current)
目前正在使用redo02.log,redo02A.log是我的日志组的另一个成员,两者内容一致,只用分析其中一个就行
2.写入一行数据
我们拿到我们操作的起止SCN对应的时间
3.dump文件
4.查询dump文件
结果为:/usr/local/oracle19c/diag/rdbms/orcl/ORCL/trace/ORCL_ora_3942.trc
如果找不到此文件,请切换SYS用户执行
5.分析
查询obj
然后在文件中搜索
拿到了下面的文件
(有一点疑问,这个时间戳对不上,我的修改发生在15:11:37-15:11:43之间)
我们先看这一行(可以使用命令快速查找 grep '139617' /usr/local/oracle19c/diag/rdbms/orcl/ORCL/trace/ORCL_ora_11777.trc -A 20)
看到change3#就知道找到我们想要的了,详细分析先放在一边,我们赶紧使用logmine分析一下在线重做日志
仍然是一行都没有
现在继续我们的分析
CHANGE #3--表示对数据块的修改
TYP:0--表示正常的改变向量
AFN:5 --相对文件地址
DBA:0x014561cd--绝对文件地址
OBJ:139617--DATA OBJECT ID 也有可能是OBJECT_ID,未测试聚簇
SCN:0x0000000003693571--16进制时间戳,转成10进制57226609,转成时间2023-03-07 18:07:45 有点不理解
OP:11.2--11是行操作,
col 0: [ 2] c1 02#--0表示第一列,[2]表示2个字节,c102=select dump(1,16) from dual; 或者rawtohex(1)