dml/transaction/block scn/itl scn
本站文章除注明转载外,均为本站原创: 转载自love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客
直接看实验吧。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
SQL> conn roger/roger Connected. SQL> set lines 150 SQL> create table tab_undo as select owner,object_name,object_id from 2 sys.dba_objects where object_id < 10; Table created. SQL> select * from tab_undo; OWNER OBJECT_NAME OBJECT_ID ------------------------------ ------------------------------ ---------- SYS I_FILE#_BLOCK# 9 SYS C_FILE#_BLOCK# 8 SYS I_TS# 7 SYS C_TS# 6 SYS CLU$ 5 SYS TAB$ 4 SYS I_OBJ# 3 SYS C_OBJ# 2 8 rows selected. SQL> select dbms_rowid.rowid_relative_fno(rowid) file#, 2 dbms_rowid.rowid_block_number(rowid) blk# 3 from tab_undo; FILE# BLK# ---------- ---------- 4 6444 4 6444 4 6444 4 6444 4 6444 4 6444 4 6444 4 6444 8 rows selected. SQL> delete from tab_undo where object_id=9; 1 row deleted. SQL> select xidusn,xidslot,xidsqn,ubablk,ubafil,ubarec from v$transaction; XIDUSN XIDSLOT XIDSQN UBABLK UBAFIL UBAREC ---------- ---------- ---------- ---------- ---------- ---------- 14 37 374 17310 9 47 SQL> select usn,name from v$rollname where usn=14; USN NAME ---------- ------------------------------ 14 _SYSSMU14$ SQL> alter system dump datafile 4 block 6444; System altered. SQL> select count(*) from tab_undo; COUNT(*) ---------- 7 SQL> alter system dump undo header '_SYSSMU14$'; System altered. |
—–block dump
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
Start dump data blocks tsn: 4 file#: 4 minblk 6444 maxblk 6444 buffer tsn: 4 rdba: 0x0100192c (4/6444) scn: 0x0000.00430d30 seq: 0x01 flg: 0x04 tail: 0x0d300601 frmt: 0x02 chkval: 0x097f type: 0x06=trans data Hex dump of block: st=0, typ_found=1 Dump of memory from 0xB7349600 to 0xB734B600 B7349600 0000A206 0100192C 00430D30 04010000 [....,...0.C.....] ......省略部分内容 B734B5F0 425F2345 4B434F4C 0AC10223 0D300601 [E#_BLOCK#.....0.] Block header dump: 0x0100192c Object id on Block? Y seg/obj: 0xdd9b csc: 0x00.430ce1 itc: 3 flg: E typ: 1 - DATA brn: 0 bdba: 0x1001929 ver: 0x01 opc: 0 inc: 0 exflg: 0 Itl Xid Uba Flag Lck Scn/Fsc 0x01 0xffff.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00430ce1 0x02 0x000e.025.00000176 0x0240439e.015b.2f ---- 1 fsc 0x0017.00000000 0x03 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000 data_block_dump,data header at 0xb734967c =============== tsiz: 0x1f80 hsiz: 0x22 pbl: 0xb734967c bdba: 0x0100192c 76543210 flag=-------- ntab=1 nrow=8 frre=-1 fsbo=0x22 fseo=0x1eee avsp=0x1ecc tosp=0x1ee5 0xe:pti[0] nrow=8 offs=0 0x12:pri[0] offs=0x1f67 0x14:pri[1] offs=0x1f4e 0x16:pri[2] offs=0x1f3e 0x18:pri[3] offs=0x1f2e 0x1a:pri[4] offs=0x1f1f 0x1c:pri[5] offs=0x1f10 0x1e:pri[6] offs=0x1eff 0x20:pri[7] offs=0x1eee block_row_dump: |
从上面block dump我们可以看到,有一个未提交事务:
0x02 0x000e.025.00000176 0x0240439e.015b.2f —- 1 fsc 0x0017.00000000
0x02: 表示第2个itl
0x000e.025.00000176 表示xid,xid的结构= 回滚段编号14+事务槽编号37+序号374
0x0240439e.015b.2f 表示UBA,uba的结构= undo block adress+Sequence + last enrty of undo block
=(file 9 block 17310)+347+47
Flag 表示该事务的状态,事务状态有如下几种:
——undo segment header dump
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
TRN CTL:: seq: 0x015b chd: 0x000f ctl: 0x002d inc: 0x00000000 nfb: 0x0000 mgc: 0x8201 xts: 0x0068 flg: 0x0001 opt: 2147483646 (0x7ffffffe) uba: 0x0240439e.015b.2f scn: 0x0000.00430671 Version: 0x01 FREE BLOCK POOL:: uba: 0x00000000.015b.2e ext: 0x27 spc: 0x542 uba: 0x00000000.015b.18 ext: 0x27 spc: 0x153e uba: 0x00000000.0148.16 ext: 0x14 spc: 0xf62 uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0 uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0 TRN TBL:: index state cflags wrap# uel scn dba parent-xid nub stmt_num cmt ------------------------------------------------------------------------------------------------ 0x00 9 0x00 0x0177 0x0017 0x0000.00430978 0x02404391 0x0000.000.00000000 0x00000001 0x00000000 1343542242 ........... 0x24 9 0x00 0x0175 0x0028 0x0000.004306b5 0x0240438e 0x0000.000.00000000 0x00000001 0x00000000 1343541622 0x25 10 0x80 0x0176 0x0027 0x0000.00430ce7 0x0240439e 0x0000.000.00000000 0x00000001 0x00000000 0 0x26 9 0x00 0x0174 0x0003 0x0000.004306a3 0x0240438e 0x0000.000.00000000 0x00000001 0x00000000 1343541622 .......... 0x2f 9 0x00 0x0175 0x0016 0x0000.004306ff 0x0240438e 0x0000.000.00000000 0x00000001 0x00000000 1343541622 SQL> select dbms_utility.data_block_address_file(TO_NUMBER('240439e', 'XXXXXXXX')) file_id, 2 dbms_utility.data_block_address_block(TO_NUMBER('240439e', 'XXXXXXXX')) block_id from dual; FILE_ID BLOCK_ID ---------- ---------- 9 17310 SQL> 0x25 --转换为10进制为37,也就是我们所看到的XIDSLOT值。 此时: block scn :00430d30 --> 4394288 itl scn: 0x0017.00000000 undo segment scn(事务表上slot scn):0x0000.00430ce7 -->4394215 |
###### 提交该事务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
SQL> commit; Commit complete. SQL> select xidusn,xidslot,xidsqn,ubablk,ubafil,ubarec from v$transaction; no rows selected SQL> 再次dump data block和undo header block SQL> alter system dump datafile 4 block 6444; System altered. SQL> alter system dump undo header '_SYSSMU14$'; System altered. SQL> |
此时trace信息如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
*** 2012-07-28 23:52:22.995 Start dump data blocks tsn: 4 file#: 4 minblk 6444 maxblk 6444 buffer tsn: 4 rdba: 0x0100192c (4/6444) scn: 0x0000.004310ae seq: 0x01 flg: 0x02 tail: 0x10ae0601 frmt: 0x02 chkval: 0x0000 type: 0x06=trans data Hex dump of block: st=0, typ_found=1 Dump of memory from 0xB7349600 to 0xB734B600 ......省略部分信息 Block header dump: 0x0100192c Object id on Block? Y seg/obj: 0xdd9b csc: 0x00.430ce1 itc: 3 flg: E typ: 1 - DATA brn: 0 bdba: 0x1001929 ver: 0x01 opc: 0 inc: 0 exflg: 0 Itl Xid Uba Flag Lck Scn/Fsc 0x01 0xffff.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00430ce1 0x02 0x000e.025.00000176 0x0240439e.015b.2f --U- 1 fsc 0x0017.004310ae --该事务已经commit 0x03 0x0000.000.00000000 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000 data_block_dump,data header at 0xb734967c =============== tsiz: 0x1f80 hsiz: 0x22 pbl: 0xb734967c bdba: 0x0100192c 76543210 flag=-------- ntab=1 nrow=8 frre=-1 fsbo=0x22 fseo=0x1eee avsp=0x1ecc tosp=0x1ee5 0xe:pti[0] nrow=8 offs=0 0x12:pri[0] offs=0x1f67 0x14:pri[1] offs=0x1f4e 0x16:pri[2] offs=0x1f3e 0x18:pri[3] offs=0x1f2e 0x1a:pri[4] offs=0x1f1f 0x1c:pri[5] offs=0x1f10 0x1e:pri[6] offs=0x1eff 0x20:pri[7] offs=0x1eee block_row_dump: tab 0, row 0, @0x1f67 tl: 2 fb: --HDFL-- lb: 0x2 ---这是被delete的行 tab 0, row 1, @0x1f4e tl: 25 fb: --H-FL-- lb: 0x0 cc: 3 col 0: [ 3] 53 59 53 col 1: [14] 43 5f 46 49 4c 45 23 5f 42 4c 4f 43 4b 23 col 2: [ 2] c1 09 tab 0, row 2, @0x1f3e tl: 16 fb: --H-FL-- lb: 0x0 cc: 3 col 0: [ 3] 53 59 53 col 1: [ 5] 49 5f 54 53 23 col 2: [ 2] c1 08 .....省略部分信息 tl: 17 fb: --H-FL-- lb: 0x0 cc: 3 col 0: [ 3] 53 59 53 col 1: [ 6] 43 5f 4f 42 4a 23 col 2: [ 2] c1 03 end_of_block_dump End dump data blocks tsn: 4 file#: 4 minblk 6444 maxblk 6444 |
—-undo segment header dump
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
TRN CTL:: seq: 0x015b chd: 0x000f ctl: 0x0025 inc: 0x00000000 nfb: 0x0001 mgc: 0x8201 xts: 0x0068 flg: 0x0001 opt: 2147483646 (0x7ffffffe) uba: 0x0240439e.015b.2f scn: 0x0000.00430671 Version: 0x01 FREE BLOCK POOL:: uba: 0x0240439e.015b.2f ext: 0x27 spc: 0x494 uba: 0x00000000.015b.18 ext: 0x27 spc: 0x153e uba: 0x00000000.0148.16 ext: 0x14 spc: 0xf62 uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0 uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0 TRN TBL:: index state cflags wrap# uel scn dba parent-xid nub stmt_num cmt ------------------------------------------------------------------------------------------------ 0x00 9 0x00 0x0177 0x0017 0x0000.00430978 0x02404391 0x0000.000.00000000 0x00000001 0x00000000 1343542242 .........省略部分信息 0x24 9 0x00 0x0175 0x0028 0x0000.004306b5 0x0240438e 0x0000.000.00000000 0x00000001 0x00000000 1343541622 0x25 9 0x00 0x0176 0xffff 0x0000.004310ae 0x0240439e 0x0000.000.00000000 0x00000001 0x00000000 1343544689 0x26 9 0x00 0x0174 0x0003 0x0000.004306a3 0x0240438e 0x0000.000.00000000 0x00000001 0x00000000 1343541622 .........省略部分信息 0x2f 9 0x00 0x0175 0x0016 0x0000.004306ff 0x0240438e 0x0000.000.00000000 0x00000001 0x00000000 1343541622 可以看到,第25个事务已经提交了,state 9 表示非活动事务。 |
事务提交以后,此时的scn:
block scn: 004310ae –> 4395182
itl scn: 0x0017.004310ae –>4395182
undo segment scn(事务表上slot scn):0x0000.004310ae –>4395182
从上面的实验我们可以看出,当事务commit以后,oracle会更新如下3处SCN,且保证是一致的:
block scn,itl scn,undo segment header slot scn.
注意:
1. 上面的实验是针对fast commit cleanout的,我们知道block cleanout有2种方式,其中之一就是
fast commit cleanout,另外一种是延迟块清除,也就是delayed block cleanout。
2. 如果发生延迟块清除,那么在事务commit以后,不会去更新block scn和block 内itl scn,
而是仅仅更新undo segment header scn solt scn。
3. 针对block 里面scn和itl scn的更改,这里有涉及到slot重用的问题,这里有分为2种情况:
1)无slot重用时,发生延迟块清除,block内scn和itl scn是根据undo 段头事务表的信息来进行更新的。
2)当时发生slot重用时,block scn被更新为延迟块清除时刻的scn,block itl scn会更新为control scn。
##### 下面来看延迟块清除的情况
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
---为了模拟更容易,创建较小的undo tablespace SQL> create undo tablespace undotbs2 datafile 2 '/home/ora10g/oradata/roger/undotb2_01.dbf' size 1m; Tablespace created. SQL> alter system set undo_tablespace=undotbs2; System altered. SQL> SQL> select dbms_rowid.rowid_block_number(rowid),ora_rowscn,object_id from tab_undo; DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) ORA_ROWSCN OBJECT_ID ------------------------------------ ---------- ---------- 6444 4395182 8 6444 4395182 7 6444 4395182 6 6444 4395182 5 6444 4395182 4 6444 4395182 3 6444 4395182 2 7 rows selected. SQL> SQL> select dbms_rowid.rowid_block_number(rowid),ora_rowscn,object_id from tab_undo; DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) ORA_ROWSCN OBJECT_ID ------------------------------------ ---------- ---------- 6444 4395182 8 6444 4395182 7 6444 4395182 6 6444 4395182 5 6444 4395182 4 6444 4395182 3 6444 4395182 2 7 rows selected. SQL> update tab_undo set OBJECT_ID=100 where object_id=8; 1 row updated. SQL> select xidusn,xidslot,xidsqn,ubablk,ubafil,ubarec from v$transaction; XIDUSN XIDSLOT XIDSQN UBABLK UBAFIL UBAREC ---------- ---------- ---------- ---------- ---------- ---------- 25 0 2 59 6 1 SQL> select usn,name from v$rollname where usn=25; USN NAME ---------- ------------------------------ 25 _SYSSMU25$ SQL> alter system flush buffer_cache; System altered. SQL> ----首先将cache buffer中的脏块全部写入到disk中,然后再commit。 SQL> show user USER is "ROGER" SQL> alter system dump datafile 4 block 6444; System altered. SQL> alter system dump undo header '_SYSSMU25$'; System altered. SQL> commit; Commit complete. SQL> select timestamp_to_scn(systimestamp) from dual ; TIMESTAMP_TO_SCN(SYSTIMESTAMP) ------------------------------ 4398117 |
—–block dump
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
Start dump data blocks tsn: 4 file#: 4 minblk 6444 maxblk 6444 buffer tsn: 4 rdba: 0x0100192c (4/6444) scn: 0x0000.00431bec seq: 0x01 flg: 0x00 tail: 0x1bec0601 frmt: 0x02 chkval: 0x0000 type: 0x06=trans data Hex dump of block: st=0, typ_found=1 Dump of memory from 0xB7349600 to 0xB734B600 ......省略部分信息 Block header dump: 0x0100192c Object id on Block? Y seg/obj: 0xdd9b csc: 0x00.430ce1 itc: 3 flg: E typ: 1 - DATA brn: 0 bdba: 0x1001929 ver: 0x01 opc: 0 inc: 0 exflg: 0 Itl Xid Uba Flag Lck Scn/Fsc 0x01 0xffff.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00430ce1 0x02 0x000e.025.00000176 0x0240439e.015b.2f --U- 1 fsc 0x0017.004310ae 0x03 0x0019.000.00000002 0x0180003b.0000.01 ---- 1 fsc 0x0000.00000000 data_block_dump,data header at 0xb734967c =============== tsiz: 0x1f80 hsiz: 0x22 pbl: 0xb734967c bdba: 0x0100192c 76543210 flag=-------- ntab=1 nrow=8 frre=-1 fsbo=0x22 fseo=0x1eee avsp=0x1ecc tosp=0x1ee5 0xe:pti[0] nrow=8 offs=0 0x12:pri[0] offs=0x1f67 0x14:pri[1] offs=0x1f4e 0x16:pri[2] offs=0x1f3e 0x18:pri[3] offs=0x1f2e 0x1a:pri[4] offs=0x1f1f 0x1c:pri[5] offs=0x1f10 0x1e:pri[6] offs=0x1eff 0x20:pri[7] offs=0x1eee block_row_dump: |
—-undo segment header dump
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
TRN CTL:: seq: 0x0000 chd: 0x0001 ctl: 0x002f inc: 0x00000000 nfb: 0x0000 mgc: 0x8201 xts: 0x0068 flg: 0x0001 opt: 2147483646 (0x7ffffffe) uba: 0x0180003b.0000.01 scn: 0x0000.00000000 Version: 0x01 FREE BLOCK POOL:: uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0 uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0 uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0 uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0 uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0 TRN TBL:: index state cflags wrap# uel scn dba parent-xid nub stmt_num cmt ------------------------------------------------------------------------------------------------ 0x00 10 0x80 0x0002 0x0000 0x0000.00431b82 0x0180003b 0x0000.000.00000000 0x00000001 0x00000000 0 0x01 9 0x00 0x0001 0x0002 0x0000.00000000 0x00000000 0x0000.000.00000000 0x00000000 0x00000000 0 ......省略部分信息 0x2f 9 0x00 0x0001 0xffff 0x0000.00000000 0x00000000 0x0000.000.00000000 0x00000000 0x00000000 0 |
下面用mos提供的一个脚本来进行slot重用实验,进而观察block scn,itl scn和undo scn的变化。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 |
SQL> show user USER is "ROGER" SQL> alter system dump datafile 4 block 6444; System altered. SQL> alter system dump undo header '_SYSSMU25$'; System altered. SQL> commit; Commit complete. SQL> select timestamp_to_scn(systimestamp) from dual ; TIMESTAMP_TO_SCN(SYSTIMESTAMP) ------------------------------ 4398117 SQL> show user USER is "SYS" SQL> create table goon AS select * from dba_objects where 1 = 2; Table created. SQL> create or replace procedure proc_go_break_reuse(v_XIDUSN number, 2 v_XIDSLOT number, 3 v_XIDSQN number) 4 /* ————————————————– 5 Create_user :Mecoyoo 6 Time:2008-5-08 7 Description:It’s used to make transaction slot reused 8 —————————————————*/ 9 AS 10 nsid number; 11 type transaction_record_type is record( 12 XIDUSN number, 13 XIDSLOT number, 14 XIDSQN number); 15 transaction_record transaction_record_type; 16 begin 17 select sys_context('userenv','sid') into nsid from dual; 18 loop 19 insert into goon 20 select * from dba_objects where rownum < 100; 21 select XIDUSN, XIDSLOT, XIDSQN 22 into transaction_record 23 from v$transaction a, v$session b 24 where a.ADDR = b.TADDR 25 and b.SID = nsid; 26 if (transaction_record.XIDUSN = v_XIDUSN and 27 transaction_record.XIDSLOT = v_XIDSLOT and 28 transaction_record.XIDSQN > v_XIDSQN) then 29 goto resue_end; 30 end if; 31 commit; 32 delete from goon; 33 select XIDUSN, XIDSLOT, XIDSQN 34 into transaction_record 35 from v$transaction a, v$session b 36 where a.ADDR = b.TADDR 37 and b.SID = nsid; 38 if (transaction_record.XIDUSN = v_XIDUSN and 39 transaction_record.XIDSLOT = v_XIDSLOT and 40 transaction_record.XIDSQN > v_XIDSQN) then 41 goto resue_end; 42 end if; 43 commit; 44 end loop; 45 <<resue_end>> 46 commit; 47 end; 48 / Procedure created. SQL> SQL> show user USER is "SYS" SQL> exec proc_go_break_reuse(25,0,2); PL/SQL procedure successfully completed. SQL> conn roger/roger Connected. SQL> col object_name for a20 SQL> set lines 150 SQL> select * from tab_undo; OWNER OBJECT_NAME OBJECT_ID ------------------------------ -------------------- ---------- SYS C_FILE#_BLOCK# 100 SYS I_TS# 7 SYS C_TS# 6 SYS CLU$ 5 SYS TAB$ 4 SYS I_OBJ# 3 SYS C_OBJ# 2 7 rows selected. SQL> select timestamp_to_scn(systimestamp) from dual; TIMESTAMP_TO_SCN(SYSTIMESTAMP) ------------------------------ 4399930 SQL> SQL> select dbms_rowid.rowid_block_number(rowid),ora_rowscn,object_id from tab_undo; DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) ORA_ROWSCN OBJECT_ID ------------------------------------ ---------- ---------- 6444 4398116 100 6444 4398116 7 6444 4398116 6 6444 4398116 5 6444 4398116 4 6444 4398116 3 6444 4398116 2 7 rows selected. SQL> SQL> alter system dump datafile 4 block 6444; System altered. SQL> alter system dump undo header '_SYSSMU25$'; System altered. |
此时我们来dump data block和undo segment header
— data block dump
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
Start dump data blocks tsn: 4 file#: 4 minblk 6444 maxblk 6444 buffer tsn: 4 rdba: 0x0100192c (4/6444) scn: 0x0000.00431c24 seq: 0x01 flg: 0x06 tail: 0x1c240601 frmt: 0x02 chkval: 0x065e type: 0x06=trans data Hex dump of block: st=0, typ_found=1 .....省略部分信息 Block header dump: 0x0100192c Object id on Block? Y seg/obj: 0xdd9b csc: 0x00.430ce1 itc: 3 flg: E typ: 1 - DATA brn: 0 bdba: 0x1001929 ver: 0x01 opc: 0 inc: 0 exflg: 0 Itl Xid Uba Flag Lck Scn/Fsc 0x01 0xffff.000.00000000 0x00000000.0000.00 C--- 0 scn 0x0000.00430ce1 0x02 0x000e.025.00000176 0x0240439e.015b.2f --U- 1 fsc 0x0017.004310ae 0x03 0x0019.000.00000002 0x0180003b.0000.01 --U- 1 fsc 0x0000.00431c24 ---这里itl scn等于前面的block scn了 data_block_dump,data header at 0xd0d987c =============== tsiz: 0x1f80 hsiz: 0x22 pbl: 0x0d0d987c bdba: 0x0100192c 76543210 flag=-------- ntab=1 nrow=8 frre=-1 fsbo=0x22 fseo=0x1eee avsp=0x1ecc tosp=0x1ee5 0xe:pti[0] nrow=8 offs=0 0x12:pri[0] offs=0x1f67 0x14:pri[1] offs=0x1f4e 0x16:pri[2] offs=0x1f3e 0x18:pri[3] offs=0x1f2e 0x1a:pri[4] offs=0x1f1f 0x1c:pri[5] offs=0x1f10 0x1e:pri[6] offs=0x1eff 0x20:pri[7] offs=0x1eee |
—–undo header dump
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
TRN CTL:: seq: 0x0008 chd: 0x0001 ctl: 0x0000 inc: 0x00000000 nfb: 0x0001 mgc: 0x8201 xts: 0x0068 flg: 0x0001 opt: 2147483646 (0x7ffffffe) uba: 0x01800040.0008.1f scn: 0x0000.00431c24 ---等于block scn值 Version: 0x01 FREE BLOCK POOL:: uba: 0x01800040.0008.21 ext: 0x0 spc: 0x9f0 uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0 uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0 uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0 uba: 0x00000000.0000.00 ext: 0x0 spc: 0x0 TRN TBL:: index state cflags wrap# uel scn dba parent-xid nub stmt_num cmt ------------------------------------------------------------------------------------------------ 0x00 9 0x00 0x0003 0xffff 0x0000.0043232c 0x01800040 0x0000.000.00000000 0x00000001 0x00000000 1343551357 0x01 9 0x00 0x0002 0x0002 0x0000.00431c5e 0x0180003b 0x0000.000.00000000 0x00000001 0x00000000 1343550861 0x02 9 0x00 0x0002 0x0003 0x0000.00431c6c 0x0180003b 0x0000.000.00000000 0x00000001 0x00000000 1343550861 ......省略部分信息 0x2f 9 0x00 0x0002 0x0000 0x0000.00432320 0x01800040 0x0000.000.00000000 0x00000001 0x00000000 1343551357 0043232c 转换为10进制为: 4399916 |
我们可以看到,此时undo control scn的值是等于block scn和block itl scn的,进而也验证了前面的观点。
Leave a Reply
You must be logged in to post a comment.