Oracle UNDO块
uba: 由三部分组成undo块的地址、UNDO块被重用的次数、在UNDO块的第几条记录,当undo块的地址为0说明UNDO块不是空闲的,即0x00000000? 13)事物表 TRN TBL:: index state cflags wrap# uel scn dba parent-xid nub stmt_num cmt ------------------------------------------------------------------------------------------------ 0x00 9 0x00 0x000b 0xffff 0x0000.00104485 0x0180000e 0x0000.000.00000000 0x00000001 0x00000000 1552092317 0x01 9 0x00 0x000a 0x001a 0x0000.001043f3 0x0180000c 0x0000.000.00000000 0x00000001 0x00000000 1552092190 0x02 9 0x00 0x000a 0x0021 0x0000.00104374 0x0180000c 0x0000.000.00000000 0x00000001 0x00000000 1552092173 0x03 9 0x00 0x000a 0x000c 0x0000.0010440a 0x00000000 0x0000.000.00000000 0x00000000 0x00000000 1552092191 0x04 9 0x00 0x000a 0x0001 0x0000.00104376 0x0180000c 0x0000.000.00000000 0x00000001 0x00000000 1552092173 0x05 9 0x00 0x000a 0x000a 0x0000.00104403 0x0180000d 0x0000.000.00000000 0x00000001 0x00000000 1552092191 0x06 9 0x00 0x000a 0x0007 0x0000.001043fe 0x0180000d 0x0000.000.00000000 0x00000001 0x00000000 1552092191 0x07 9 0x00 0x000a 0x0008 0x0000.00104400 0x0180000d 0x0000.000.00000000 0x00000001 0x00000000 1552092191 0x08 9 0x00 0x000a 0x0005 0x0000.00104402 0x0180000d 0x0000.000.00000000 0x00000001 0x00000000 1552092191 0x09 9 0x00 0x000a 0x0003 0x0000.00104407 0x0180000d 0x0000.000.00000000 0x00000001 0x00000000 1552092191 0x0a 9 0x00 0x000a 0x0009 0x0000.00104404 0x0180000d 0x0000.000.00000000 0x00000001 0x00000000 1552092191 0x0b 9 0x00 0x000a 0x000e 0x0000.0010440f 0x0180000d 0x0000.000.00000000 0x00000001 0x00000000 1552092191 0x0c 9 0x00 0x000a 0x000b 0x0000.0010440c 0x0180000d 0x0000.000.00000000 0x00000001 0x00000000 1552092191 0x0d 9 0x00 0x000a 0x0010 0x0000.00104414 0x0180000d 0x0000.000.00000000 0x00000001 0x00000000 1552092191 0x0e 9 0x00 0x000a 0x000d 0x0000.00104411 0x0180000d 0x0000.000.00000000 0x00000001 0x00000000 1552092191 0x0f 9 0x00 0x000a 0x0012 0x0000.0010441e 0x0180000d 0x0000.000.00000000 0x00000001 0x00000000 1552092191 0x10 9 0x00 0x000a 0x000f 0x0000.0010441a 0x0180000d 0x0000.000.00000000 0x00000001 0x00000000 1552092191 0x11 9 0x00 0x000a 0x0013 0x0000.00104420 0x0180000d 0x0000.000.00000000 0x00000001 0x00000000 1552092191 0x12 9 0x00 0x0009 0x0011 0x0000.0010441f 0x0180000d 0x0000.000.00000000 0x00000001 0x00000000 1552092191 0x13 9 0x00 0x000a 0x0014 0x0000.00104422 0x0180000d 0x0000.000.00000000 0x00000001 0x00000000 1552092192 0x14 9 0x00 0x000a 0x0015 0x0000.00104425 0x0180000d 0x0000.000.00000000 0x00000001 0x00000000 1552092192 0x15 9 0x00 0x000a 0x0016 0x0000.00104435 0x0180000d 0x0000.000.00000000 0x00000001 0x00000000 1552092195 0x16 9 0x00 0x000a 0x0017 0x0000.00104437 0x0180000d 0x0000.000.00000000 0x00000001 0x00000000 1552092195 0x17 9 0x00 0x000a 0x0018 0x0000.00104439 0x0180000c 0x0000.000.00000000 0x00000001 0x00000000 1552092196 0x18 9 0x00 0x000a 0x001b 0x0000.0010443b 0x0180000c 0x0000.000.00000000 0x00000001 0x00000000 1552092196 0x19 10 0x80 0x000a 0x0000 0x0000.0010444f 0x0180000c 0x0000.000.00000000 0x00000001 0x00000000 0 0x1a 9 0x00 0x0009 0x0006 0x0000.001043f6 0x0180000c 0x0000.000.00000000 0x00000001 0x00000000 1552092190 0x1b 9 0x00 0x000a 0x001c 0x0000.00104454 0x0180000e 0x0000.000.00000000 0x00000001 0x00000000 1552092257 0x1c 9 0x00 0x000a 0x001d 0x0000.0010445a 0x0180000e 0x0000.000.00000000 0x00000001 0x00000000 1552092257 0x1d 9 0x00 0x000a 0x001e 0x0000.00104460 0x0180000e 0x0000.000.00000000 0x00000001 0x00000000 1552092257 0x1e 9 0x00 0x000a 0x001f 0x0000.00104479 0x0180000e 0x0000.000.00000000 0x00000001 0x00000000 1552092317 0x1f 9 0x00 0x000a 0x0000 0x0000.0010447f 0x0180000e 0x0000.000.00000000 0x00000001 0x00000000 1552092317 0x20 9 0x00 0x0009 0x0002 0x0000.00104373 0x0180000c 0x0000.000.00000000 0x00000001 0x00000000 1552092173 0x21 9 0x00 0x0009 0x0004 0x0000.00104375 0x0180000c 0x0000.000.00000000 0x00000001 0x00000000 1552092173? TRN TBL::(事务表)是UNDO段头块最重要的。我们一一来解释每个字段的意思: index 表示事务表中槽号,只是一个序列而已,从0x00开始到0x21结束,11g的版本有34个槽。 scn? ?表示务事启动、提交、回滚的SCN. dba? ?表示uba:第一部分的undo块地址,这个DBA是(rollback)回滚的起始点,也就是说是记录事务修改的最后一条记录所在UNDO块的地址。 nub? ?表示当前事务所用到的UNDO块的个数。 cmt? ?表示最接近当前的提交时间戳,是从1970年1月1号零时开始计数(以秒为单位记录)。0表示事务正在活动。 14)我们已经在 undo header中找到了数据的前镜像,那么我们在看一下这个前镜像到底是什么? 事物表中0x19槽的dba 0x0180000c即6号文件的12号块(把0x0180000c转为2进制,前10为文件号,后22位为块号,转换为10进制可得数据文件号为6,数据块为12)。 转储数据块 [email?protected] prod>alter system dump datafile 6 block 12; System altered.? ? ******************************************************************************** UNDO BLK: xid: 0x000b.019.0000000a seq: 0x3 cnt: 0x23 irb: 0x23 icl: 0x0 flg: 0x0000 Rec Offset Rec Offset Rec Offset Rec Offset Rec Offset --------------------------------------------------------------------------- 0x01 0x1f84 0x02 0x1f20 0x03 0x1ebc 0x04 0x1e58 0x05 0x1df4 0x06 0x1d90 0x07 0x1d08 0x08 0x1bf4 0x09 0x1b8c 0x0a 0x1b34 0x0b 0x1ae0 0x0c 0x1a84 0x0d 0x1a10 0x0e 0x19b4 0x0f 0x1960 0x10 0x188c 0x11 0x17b8 0x12 0x16dc 0x13 0x15fc 0x14 0x14fc 0x15 0x13f8 0x16 0x131c 0x17 0x1238 0x18 0x1154 0x19 0x1104 0x1a 0x107c 0x1b 0x0ff0 0x1c 0x0f88 0x1d 0x0ea0 0x1e 0x0e38 0x1f 0x0de0 0x20 0x0d5c 0x21 0x0d00 0x22 0x0ca8 0x23 0x0c50 ? 可以看到数据记录为35,这是第一条,并且最后一个偏移量0x23也为35,这正是rollback的开始。 15)继续向下 可以先查询出object_id,在trace文件中搜索 [email?protected] prod>col object_name for a20 [email?protected] prod>select OBJECT_NAME,OBJECT_ID,OBJECT_TYPE,CREATED from dba_objects where OBJECT_name = ‘EMP‘; OBJECT_NAME OBJECT_ID OBJECT_TYPE CREATED -------------------- ---------- ------------------- ------------------- EMP 73181 TABLE 2009-08-13 23:35:45? (编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |