Preface: How is the data of the block internal Oracle stored? What is the time when the ROWID method is, what is the time when INSERT / Delete / Update occurs, and wants to discuss the basic structure of the data inside the block. SQL> create table tn (a number, b varchar2 (1000));. Table created SQL> insert into tn select rownum, 'wwweeerrrttt' from all_tables where rownum <11;. 10 rows created SQL> commit; Commit complete SQL>. Exec show_space ('TN'); Free Blocks ........................... 1 Total Blocks ........ .................... 16 Total Bytes ........................... ..131072 unused blocks ......................... 14 unused bytes ............. .......................................................................................................................... ............ 1954 Last Used Block ....................... 2
SQL> alter system dump datafile 3 block 1955; System altered.Block header dump: 0x00c007a3Object id on Block Yseg / obj: 0x66b7 csc: 0x00.1891b8a itc: 1 flg: O typ: 1 - DATAfsl: 0 fnx: 0x0 ver:? 0x01Itl Xid Uba Flag Lck Scn / Fsc0x01 xid: 0x0001.011.000000e8 uba: 0x00803494.0147.07 --U- 10 fsc 0x0000.01891b8cdata_block_dump =============== tsiz: 0x1fb8hsiz: 0x26pbl: 0x0ba76c44bdba : 0x00C007A3FLAG = ----------- NTAB = 1nrow = 10FRRE = -1FSBO = 0x26fseo = 0x1efaavsp = 0x1ed4tosp = 0x1ed40Xeti [0] nrow = 10 OFFS = 0 This block There is 10 records 0x12: Pri [0 ] OFFS = 0x1efa ---- Recorded Start Physical Location 0x14: Pri [1] OFFS = 0x1f0d0x16: Pri [2] OFFS = 0x1f200x18: Pri [3] OFFS = 0x1f330X1A: PRI [4] OFFS = 0x1f460x1c: PRI [ 5] OFFS = 0x1f590x1e: Pri [6] OFFS = 0x1f6c0x20: Pri [7] OFFS = 0x1f7f0x22: pri [8] OFFS = 0x1f920x24: pri [9] OFFS = 0x1fa5block_row_dump: Tab 0, Row 0, @ 0x1efa TL: 19 FB : --H-fl - lb: 0x1 cc: 2 --- - lb: It is said to be XID 0x1, CC means there is 2 fields COL 0: [2] C1 02 ---- Field 1 length is 2, Data is C1 02COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74 - TAB 0, ROW 1, @ 0x1f0dtl: 19 FB: --H-FL- - lb: 0x1 cc: 2col 0: [2] C1 03COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 2, @ 0x1f20tl: 19 fb: --h-fl - lb : 0x1 cc: 2col 0: [2] C1 04COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 3, @ 0x1f33tl: 19 FB: --H-FL - lb: 0x1 CC: 2Col 0: [2] C1 05COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 4, @ 0x1f46tl: 19 FB: --H-FL - lb: 0x1 CC: 2Col 0: [2] C1 06COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 5, @ 0x1f59tl: 19 fb: --h-fl - lb: 0x1 cc: 2col 0 : [2] C1 07COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 6, @
0x1f6ctl: 19 fb: --h-fl - lb: 0x1 cc: 2col 0: [2] C1 08COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 7, @ 0x1f7ftl: 19 FB: --H-fl - lb: 0x1 CC: 2col 0: [2] C1 09COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 8, @ 0x1f92tl: 19 FB : --H-fl - lb: 0x1 cc: 2col 0: [2] C1 0acol 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 9, @ 0x1fa5tl: 19 FB: - -H-fl: 2col 0: [2] C1 0bcol 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74nd_of_block_dumpend dump Data Blocks TSN: 2 File #: 3 minblk 1954 Maxblk 1955
SQL> Delete from TN where a = 8 or a = 7; 2 rows deled.sql> commit; commit completed .sql> ALTER system dump datafile 3 block 1955; system altered. After deleting 2 records, let's see changes in Block. Block header dump: 0x00c007a3object ID on block? YSEG / OBJ: 0x66B7 CSC: 0x00.1891B8D ITC: 1 FLG: O TYP: 1 - DATAFSL: 0 fnx: 0x0 Ver: 0x01itl Xid Uba flag lck scn / fsc0x01 xid: 0x0002.01a .000000E9 UBA: 0X00800314.00D0.24 --U- 2 fsc 0x0022.01891b8fdata_block_dump =============== Tsiz: 0x1fb8hsiz: 0x26pbl: 0x0ba76c44bdba: 0x00c007a3flag = ------- ---- NTAB = 1nrow = 10FRRE = -1FSBO = 0x26fseo = 0x1efaavsp = 0x1ed4tosp = 0x1efa0xe: PTI [0] nrow = 10 OFFS = 00X12: PTI [0] OFFS = 0x1efa0x14: PTI [1] OFFS = 0x1f0D0x16: PTI [ 2] OFFS = 0x1f200x18: PTI [3] OFFS = 0x1f330x1a: PTI [4] OFFS = 0x1f460x1c: PTI [5] OFFS = 0x1f590x1e: PTI [6] OFFS = 0x1f6c --- This is not changed here 0x20: PTI [7 ] OFFS = 0x1f7f --- This is not changed here 0x22: PTI [8] OFFS = 0x1f920x24: PTI [9] OFFS = 0x1FA5BLOCK_ROW_DUMP: TAB 0, ROW 0, @ 0x1efatl: 19 FB: --H-FL - LB : 0x0 cc: 2col 0: [2] C1 02COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 1, @ 0x1f0dtl: 19 FB: --H-FL - lb: 0x0 cc: 2col 0: [2] C1 03COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, Row 2, @ 0x1f20tl: 19 fb: --h-fl - lb: 0x0 cc: 2col 0: [2] C1 04COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 3 , @ 0x1f33tl: 19 FB: --H-fl - lb: 0x0 cc: 2col 0: [2] C1 05COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 4, @ 0x1F46TL: 19 FB: --H-fl - lb: 0x0 cc: 2col 0: [2] C1 06COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 5, @
0x1f59tl: 19 fb: --h-fl - lb: 0x0 cc: 2col 0: [2] C1 07COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 6, @ 0x1f6ctl: 2 FB: --HDFL - LB: 0x1 ---- Record has been removed Tab 0, Row 7, @ 0x1f7ftl: 2 fb: --HDFL - lb: 0x1 ---- Record has been removed TAB 0, Row 8, @ 0x1f92tl: 19 fb: --h-fl - lb: 0x0 cc: 2col 0: [2] C1 0acol 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 9 , @ 0x1fa5TL: 19 FB: --H-fl - lb: 0x0 cc: 2col 0: [2] C1 0bcol 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74nd_of_block_dumpend dump data block TSN: 2 File #: 3 minblk 1955 MaxBLK 1955
SQL> INSERT INTO TN VALUES (19, 'q'); 1 row created.sql> commit; commit completed. SQL> ALTER System Dump DataFile 3 Block 1955; System Altered. Insert a record, let's watch block header dump: 0x00c007a3object ID ON Block? YSEG / OBJ: 0x66B7 CSC: 0x00.1891b90 ITC: 1 FLG: O TYP: 1 - DATAFSL: 0 fnx: 0x0 Ver: 0x01itl Xid UBA FLAG LCK SCN / FSC0X01 XID: 0x0003.054.000000E8 UBA: 0x00800DA8. 00d9.19 --U- 1 fsc 0x0000.01891b91data_block_dump =============== Tsiz: 0x1fb8hsiz: 0x28PBL: 0x0ba76c44bdba: 0x00c007a3flag = ----------- NTAB = 1nrow = 11frre = 6fsbo = 0x28fseo = 0x1ef2avsp = 0x1eeftosp = 0x1eef0xe: pti [0] nrow = 11 offs = 00x12: pti [0] offs = 0x1efa0x14: pti [1] offs = 0x1f0d0x16: pti [2] offs = 0x1f200x18: pti [3] OFFS = 0x1f330x1a: PTI [4] OFFS = 0x1f460x1c: PTI [5] OFFS = 0x1f590x1e: PTI [6] SFLL = 7 ---- Deleted 0x20: PTI [7] sfll = -1 ---- - Deleted 0x22: PTI [8] OFFS = 0x1f920x24: PTI [9] OFFS = 0x1fa50x26: PTI [10] Offs = 0x1ef2 -------- New Insert Record BLOCK_ROW_DUMP: TAB 0, ROW 0, @ 0x1efatl : 19 FB: --H-fl - lb: 0x0 cc: 2col 0: [2] C1 02COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74 Tab 0, Row 1, @ 0x1f0dtl: 19 fb: --h-fl - lb: 0x0 cc: 2col 0: [2] C1 03COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0 , Row 2, @ 0x1f20tl: 19 fb: --h-fl - lb: 0x0 cc: 2col 0: [2] C1 04COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 3, @ 0x1f33tl: 19 FB: --H-fl - lb: 0x0 cc: 2col 0: [2] C1 05COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 4, @ 0x1f46tl: 19 fb: --h-fl - lb: 0x0 cc: 2col 0: [2] C1 06COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 5, @
0x1f59tl: 19 FB: --H-fl - lb: 0x0 cc: 2col 0: [2] C1 07COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74 ---- Row 6,7 Has been removed Tab 0, ROW 8, @ 0x1f92tl: 19 FB: --H-FL - LB: 0x0 CC: 2Col 0: [2] C1 0acol 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 9, @ 0x1fa5TL: 19 FB: --H-FL - LB: 0x0 CC: 2Col 0: [2] C1 0BCOL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 10, @ 0x1ef2 ---------------------------- New Insert Record TL: 8 FB: --H-FL-- LB: 0x1 cc: 2col 0: [2] C1 14COL 1: [1] 71nd_of_block_dumpend dump data block TSN: 2 File #: 3 minblk 1955 Maxblk 1955
SQL> INSERT INTO TN VALUES (19, 'qqq'); 1 row created.sql> commit; commit completed .sql> ALTER system dump datafile 3 block 1955; system altered. Plug into the record let's see block header dump: 0x00c007a3object ID On Block? YSEG / OBJ: 0X66B7 CSC: 0x00.1891B92 ITC: 1 FLG: O TYP: 1 - DATAFSL: 0 FNX: 0x0 Ver: 0x01itl Xid UBA FLAG LCK SCN / FSC0X01 XID: 0x0004.02e.000000E7 UBA: 0x00800617. 00df.1c --U- 1 fsc 0x0000.01891b94data_block_dump =============== Tsiz: 0x1fb8hsiz: 0x28pbl: 0x0ba76c44bdba: 0x00c007a3flag = --------- NTAB = 1nrow = 11frre = 7fsbo = 0x28fseo = 0x1ee8avsp = 0x1ee5tosp = 0x1ee50xe: pti [0] nrow = 11 offs = 00x12: pti [0] offs = 0x1efa0x14: pti [1] offs = 0x1f0d0x16: pti [2] offs = 0x1f200x18: pti [3] OFFS = 0x1f330x1a: PTI [4] OFFS = 0x1f460x1c: PTI [5] OFFS = 0x1f590x1e: PTI [6] OFFS = 0x1ee8 ------ New Insert Record uses new space, pay attention to OFFS Represents physical location 0x20: PTI [7] sfll = -10x22: PTI [8] OFFS = 0x1f920x24: PTI [9] OFFS = 0x1fa50x26: PTI [10] OFFA50X1EF2BLOCK_ROW_DUMP: TAB 0, ROW 0, @ 0x1efatl: 19 FB: --H -Fl - lb: 0x0 cc: 2col 0: [2] C1 02COL 1: [12] 77 77 77 65 65 65 72 72 72 7 4 74 74TAB 0, ROW 1, @ 0x1f0dtl: 19 FB: --H-FL - LB: 0x0 CC: 2Col 0: [2] C1 03COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 2, @ 0x1f20tl: 19 fb: --h-fl - lb: 0x0 cc: 2col 0: [2] C1 04COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0 , Row 3, @ 0x1f33rtl: 19 FB: --H-FL - lb: 0x0 cc: 2col 0: [2] C1 05COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 4, @ 0x1f46tl: 19 FB: --H-fl - lb: 0x0 cc: 2col 0: [2] C1 06COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 5, @
0x1f59tl: 19 FB: --H-fl - lb: 0x0 cc: 2col 0: [2] C1 07COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 6, @ 0x1ee8 - ----------------------- New Insert Record TL: 10 FB: --H-FL - LB: 0x1 CC: 2col 0: [2] C1 14COL 1: [3] 71 71 71Tab 0, Row 8, @ 0x1f92tl: 19 fb: --h-fl - lb: 0x0 cc: 2col 0: [2] C1 0acol 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 9, @ 0x1fa5tl: 19 FB: --H-FL - LB: 0x0 CC: 2Col 0: [2] C1 0BCOL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 10, @ 0x1ef2tl: 8 FB: --H-FL - LB: 0x0 CC: 2Col 0: [2] C1 14COL 1: [1] 71nd_of_block_dumpend dump Data Blocks TSN: 2 File # : 3 minblk 1955 Maxblk 1955
SQL> UPDATE TN SET B = 'QQQQQQ' WHERE A = 19; 2 Rows Updated.SQL> Commit; Commit Complate.SQL> ALTER System Dump DataFile 3 Block 1955; System Altered. Update newly inserted records Block Header Dump: ? 0x00c007a3Object id on Block Yseg / obj: 0x66b7 csc: 0x00.1891b95 itc: 1 flg: O typ: 1 - DATAfsl: 0 fnx: 0x0 ver: 0x01Itl Xid Uba Flag Lck Scn / Fsc0x01 xid: 0x0005.047.000000e7 uba: 0x00803819 .0154.04 - 0 =============================================== = 11frre = 7fsbo = 0x28fseo = 0x1eceavsp = 0x1edetosp = 0x1ede0xe: pti [0] nrow = 11 offs = 00x12: pti [0] offs = 0x1efa0x14: pti [1] offs = 0x1f0d0x16: pti [2] offs = 0x1f200x18: pti [ 3] OFFS = 0x1f330x1a: PTI [4] OFFS = 0x1f460x1c: PTI [5] OFFS = 0x1f590x1e: PTI [6] OFFS = 0x1edb -------- First update this, after the update, due to lack of local space, Moved to 0x26: PTI [10] OFFS = 0x1ef2 0x20: PTI [7] sfll = -10x22: PTI [8] OFFS = 0x1f920x24: PTI [9] OFFS = 0x1fa50x26: PTI [10] OFFS = 0x1ece - ----- After the update, I updated 0x1e: PTI [6], the location is insufficient, and I moved to 0x1ece Block_row_dump: Tab 0, Row 0, @ 0x1efatl: 19 FB: --H-fl - lb: 0x0 cc: 2col 0: [2] C1 02COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 1, @ 0x1f0dtl: 19 FB : --H-fl - lb: 0x0 cc: 2col 0: [2] C1 03COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 2, @ 0x1f20tl: 19 FB: - -H-fl - lb: 0x0 cc: 2col 0: [2] C1 04COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 3, @ 0x1f33tl: 19 fb: --h -Fl - lb: 0x0 cc: 2col 0: [2] C1 05COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 4, @
0x1f46tl: 19 fb: --h-fl - lb: 0x0 cc: 2col 0: [2] C1 06COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 5, @ 0x1f59tl: 19 FB: --H-FL - LB: 0x0 CC: 2Col 0: [2] C1 07COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 6, @ 0x1edbtl: 13 FB : --H-fl - lb: 0x1 cc: 2col 0: [2] C1 14Col 1: [6] 71 71 71 71 71 71TAB 0, ROW 8, @ 0x1f92tl: 19 FB: --H-FL-- LB: 0x0 cc: 2col 0: [2] C1 0acol 1: [12] 77 77 77 72 74 74 74TAB 0, ROW 9, @ 0x1fa5TL: 19 FB: --H-FL - lb: 0x0 cc: 2col 0: [2] C1 0bcol 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 10, @ 0x1ecetl: 13 FB: --H-FL - lb: 0x1 CC : 2Col 0: [2] C1 14COL 1: [6] 71 71 71 71 71 71nd_of_block_dumpend dump data blocks TSN: 2 File #: 3 minblk 1955 Maxblk 1955
SQL> update tn set b = 'qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq' where a = 19; 2 rows updated.SQL> commit; Commit complete.SQL> alter system dump datafile 3 block 1955; System altered continue to update a look, and the above repeated. Steps, enhance the physical location Block header dump: 0x00c007a3object ID on block? YSEG / OBJ: 0x66B7 CSC: 0x00.1891b98 ITC: 1 FLG: O TYP: 1 - DataFSL: 0 fnx: 0x0 Ver: 0x01itl Xid Uba flag LCK SCN / Fsc0x01 xid: 0x0006.044.000000f2 uba: 0x00801660.00da.0f --U- 2 fsc 0x0000.01891b99data_block_dump =============== tsiz: 0x1fb8hsiz: 0x28pbl: 0x0ba76c44bdba: 0x00c007a3flag = - --------- ntab = 1nrow = 11FRRE = 7FSBO = 0x28fseo = 0x1de0avsp = 0x1e0atosp = 0x1e0a0xe: PTI [0] nrow = 11 OFFS = 00x12: PTI [0] OFFS = 0x1efa0x14: PTI [1] OFFS = 0x1f0d0x16: PTI [2] OFFS = 0x1f200x18: PTI [3] OFFS = 0x1f330x1a: PTI [4] OFFS = 0x1f460x1c: PTI [5] OFFS = 0x1f59 0x1e: PTI [6] OFFS = 0x1e57 ------- Change 0x20: PTI [7] sfll = -10x22: PTI [8] OFFS = 0x1f920x24: PTI [9] OFFS = 0x1fa50x26: PTI [10] OFFS = 0x1de0 ------ Change BLO CK_ROW_DUMP: TAB 0, ROW 0, @ 0x1efatl: 19 FB: --H-FL - LB: 0x0 CC: 2Col 0: [2] C1 02COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 1, @ 0x1f0dtl: 19 FB: --H-fl - lb: 0x0 cc: 2col 0: [2] C1 03COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0 , Row 2, @ 0x1f20tl: 19 fb: --h-fl - lb: 0x0 cc: 2col 0: [2] C1 04COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 3, @ 0x1f33tl: 19 FB: --H-fl - lb: 0x0 cc: 2col 0: [2] C1 05COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 4, @
0x1f46tl: 19 fb: --h-fl - lb: 0x0 cc: 2col 0: [2] C1 06COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 5, @ 0x1f59tl: 19 FB: --H-fl - lb: 0x0 cc: 2col 0: [2] C1 07COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 6, @ 0x1e57tl: 119 FB : --H-fl - lb: 0x1 cc: 2col 0: [2] C1 14COL 1: [112] --------------- Data length increases 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 7171 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 7177 71 71 71 71 71 71 71 71 71 71 71TAB 0, ROW 8, @ 0x1f92tl: 19 FB: --H-FL - LB: 0x0 CC: 2col 0: [2] C1 0acol 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 9, @ 0x1fa5tl: 19 fb: --h-fl - lb: 0x0 cc: 2col 0: [2] C1 0bcol 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0 , Row 10, @ 0x1de0TL: 119 FB: --H-FL - LB: 0x1 CC: 2Col 0: [2] C1 14COL 1: [112] --------------- Long data length Daily increases 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 7177 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 7171 71 71 71 71 71 71 71 71 71 71 7171 7171nd_of_block_dumpend dump Data Blocks TSN: 2 File #: 3 Minblk 1955 Maxblk 1955
SQL> ALTER TABLE TN ADD (C Varchar2 (30)); Table Altered.SQL> ALTER System Dump DataFile 3 Block 1955; System Altered. We found that data does not change block header dump: 0x00c007a3object ID on block? YSEG / OBJ: 0X00.1891B98 ITC: 1 FLG: O TYP: 1 - DATAFSL: 0 fnx: 0x0 Ver: 0x01itl Xid Uba flag LCK SCN / FSC0X01 XID: 0x0006.044.000000F2 UBA: 0x00801660.00DA.0F - -U- 2 fsc 0x0000.01891b99data_block_dump ================ ============================================================================================================================================================== 7fsbo = 0x28fseo = 0x1de0avsp = 0x1e0atosp = 0x1e0a0xe: pti [0] nrow = 11 offs = 00x12: pti [0] offs = 0x1efa0x14: pti [1] offs = 0x1f0d0x16: pti [2] offs = 0x1f200x18: pti [3] offs = 0x1f330x1a: PTI [4] OFFS = 0x1f460x1c: PTI [5] OFFS = 0x1f590x1e: PTI [6] OFFS = 0x1e570x20: PTI [7] sfll = -10x22: PTI [8] OFFS = 0x1f920x24: PTI [9] OFFS = 0x1fa50x26: PTI [10] OFFS = 0x1de0block_row_dump: Tab 0, Row 0, @ 0x1efatl: 19 FB: --H-FL - lb: 0x0 cc: 2col 0: [2] C1 02COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 1, @ 0x1f0dtl: 19 FB: --H-FL - LB: 0x0 cc: 2col 0: [2] C1 03COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 2, @ 0x1f20tl: 19 FB: --H-FL - LB: 0x0 cc: 2col 0: [2] C1 04COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 3, @ 0x1f33tl: 19 fb: --h-fl - lb: 0x0 cc : 2Col 0: [2] C1 05Col 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 4, @ 0x1f46tl: 19 FB: --H-FL - lb: 0x0 cc: 2col 0: [2] C1 06COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 5, @ 0x1f59tl: 19 FB: --H-FL - lb: 0x0 cc: 2col 0: [2] C1 07COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 6, @
0x1E57TL: 119 FB: --H-FL - lb: 0x1 CC: 2Col 0: [2] C1 14Col 1: [112] 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 7171 71 71 71 71 71 71TAB 0, ROW 8, @ 0x1f92tl: 19 FB: - -H-fl: 2col 0: [2] C1 0acol 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74TAB 0, ROW 9, @ 0x1fa5tl: 19 FB: --H -Fl - lb: 0x0 cc: 2col 0: [2] C1 0bcol 1: [12] 77 77 77 65 65 77 72 72 72 74 74 74TAB 0, ROW 10, @ 0x1de0tl: 119 FB: --H-FL - lb: 0x1 cc: 2col 0: [2] C1 14COL 1: [112] 71 71 71 71 71 71 71 71 71 71 71 71 71 71 7171 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 7171 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 7171 71 71 71 71 71 71 71 71 71 71 71nd_of_block_dumpend dump Data Blocks TSN: 2 File #: 3 minblk 1955 Maxblk 1955
SQL> Update TN SET C = 'P'; 10 Rows Updated.sql> Commit; Commit Complete.SQL> ALTER System Dump DataFile 3 Block 1955; System Altered. Update Added field, we found that all rows have been improved physics Position block header dump: 0x00c007a3object ID on block? YSEG / OBJ: 0x66B7 CSC: 0x00.1891B9C ITC: 1 flg: o TYP: 1 - DATAFSL: 0 fnx: 0x0 Ver: 0x01itl XID UBA FLAG LCK SCN / FSC0X01 XID: 0x0001. 00a.000000E8 UBA: 0X00803494.0147.11 --U- 10 FSC 0x0000.01891B9EDATA_BLOCK_DUMP =============== Tsiz: 0x1fb8hsiz: 0x28pbl: 0x0ba76c44bdba: 0x00c007a3flag = ------------------------------------ --- ntab = 1nrow = 11FRRE = 7FSBO = 0x28fseo = 0x1c46avsp = 0x1df6tosp = 0x1df60xe: PTI [0] nrow = 11 OFFS = 00X12: PTI [0] OFFS = 0x1dcb --------- All rows of physics The location has changed, because the original position is not more than possible data 0x14: PTI [1] OFFS = 0x1db60x16: PTI [2] OFFS = 0x1DA10X18: PTI [3] OFFS = 0x1d8c0x1a: PTI [4] OFFS = 0x1d770x1c : PTI [5] OFFS = 0x1d620x1e: PTI [6] OFFS = 0x1ce90x20: PTI [7] sfll = -10x22: PTI [8] OFFS = 0x1cd40x24: PTI [9] OFFS = 0x1cbf0x26: PTI [10] OFFS = 0x1c46block_row_dump: Tab 0, Row 0, @ 0x1dcbtl: 21 fb: --h-fl - lb: 0x1 cc: 3col 0: [2] C1 02COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74COL 2: [1] 70TAB 0, ROW 1, @ 0x1db6tl: 21 FB: --H-FL - LB: 0x1 CC: 3COL 0: [2] C1 03COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74COL 2: [1] 70TAB 0, ROW 2, @ 0x1da1tl: 21 FB: --H-FL - LB: 0x1 CC: 3COL 0: [2] C1 04COL 1 : [12] 77 77 77 65 65 65 72 72 72 74 74 74COL 2: [1] 70TAB 0, ROW 3, @ 0x1d8ctl: 21 FB: --H-FL - LB: 0x1 CC: 3COL 0: [2 ] c1 05col 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74COL 2: [1] 70TAB 0, ROW 4, @
0x1D77TL: 21 FB: --H-FL - lb: 0x1 cc: 3col 0: [2] C1 06COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74COL 2: [1] 70TAB 0, Row 5, @ 0x1d62tl: 21 fb: --h-fl - lb: 0x1 cc: 3col 0: [2] C1 07COL 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74COL 2: [1 ] 70TAB 0, ROW 6, @ 0x1ce9TL: 121 FB: --H-FL - LB: 0x1 CC: 3col 0: [2] C1 14Col 1: [112] 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71COL 2: [1 ] 70TAB 0, ROW 8, @ 0x1cd4tl: 21 fb: --h-fl - lb: 0x1 cc: 3col 0: [2] C1 0acol 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74COL 2: [1] 70TAB 0, ROW 9, @ 0x1cbftl: 21 FB: --H-FL - lb: 0x1 cc: 3col 0: [2] C1 0bcol 1: [12] 77 77 77 65 65 65 72 72 72 74 74 74COL 2: [1] 70TAB 0, ROW 10, @ 0x1c46tl: 121 fb: --h-fl - lb: 0x1 cc: 3co L 0: [2] C1 14col 1: [112] 71 71 71 71 71 71 71 71 71 71 71 71 71 71 7177 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 71 7177 71 71 71 71 71 71 71 71 71 71 71COL 2: [1] 70nd_of_block_dumpend dump Data Blocks TSN: 2 File #: 3 minblk 1955 Maxblk 1955
SQL> Update TN SET B = LPAD ('SD', 999); 10 Rows Updated.sql> Commit; Commit Complete.SQL> ALTER System Dump DataFile 3 Block 1955; System Altered.SQL> Update TN Set B = 'QQQQQQQQQ' ; 10 rows updated.sql> commit; commit completed .sql> ALTER System Dump DataFile 3 block 1955; system altered. First update to let the record move, then update it, because the data is too large, it will not All the data after the migration is all posted, give a renewal result block header dump: 0x00c007a3object id on block? YSEG / OBJ: 0x66B7 CSC: 0x00.1891ba5 ITC: 1 FLG: O TYP: 1 - DataFSL: 1 fnx: 0x0 Ver: 0x01itl Xid Uba Flag LCK SCN / FSC0X01 XID: 0x0004.047.00000000E7 UBA: 0x00800618.00DF.08 --U- 11 FSC 0x1B2e.01891BA7DATA_BLOCK_DUMP =============== Tsiz: 0x1fb8hsiz: 0x28pbl: 0x0ba76c44bdba: 0x00c007a3flag = ----------- ntab = 1nrow = 11frre = 7fsbo = 0x28fseo = 0x2f6avsp = 0x3d0tosp = 0x1efe0xe: pti [0] nrow = 11 offs = 00x12: pti [0] OFFS = 0x35c ------- Location changes 0x14: PTI [1] OFFS = 0x34b0x16: PTI [2] OFFS = 0x33A0x18: PTI [3] OFFS = 0x3290x1a: PTI [4] OFFS = 0x3180x1c: PTI [5] OFFS = 0x3070x1e: PTI [6] OFFS = 0x2f60x20: PTI [7] sfll = -10x22: PTI [8] OFFS = 0x7f00x24: PTI [9] O FFS = 0x7da0x26: PTI [10] OFFS = 0x760block_row_dump: Tab 0, Row 0, @ 0x35ctl: 17 FB: --H-FL - lb: 0x1 CC: 3col 0: [2] C1 02COL 1: [7] 71 71 71 71 71 71 71COL 2: [2] 70 70TAB 0, ROW 1, @ 0x34btl: 17 FB: --H-FL - LB: 0x1 CC: 3COL 0: [2] C1 03COL 1: [7] 71 71 71 71 71 71 71COL 2: [2] 70 70TAB 0, ROW 2, @ 0x33tl: 17 FB: --H-FL - LB: 0x1 CC: 3col 0: [2] C1 04COL 1: [7] 71 71 71 71 71 71 71COL 2: [2] 70 70TAB 0, ROW 3, @
0x329TL: 17 FB: --H-FL - LB: 0x1 CC: 3col 0: [2] C1 05COL 1: [7] 71 71 71 71 71 71 71COL 2: [2] 70 70TAB 0, ROW 4, @ 0x318TL: 17 FB: --H-FL - LB: 0x1 CC: 3COL 0: [2] C1 06COL 1: [7] 71 71 71 71 71 71 71COL 2: [2] 70 70TAB 0, ROW 5, @ 0x307TL: 17 FB: --H-FL - LB: 0x1 CC: 3Col 0: [2] C1 07COL 1: [7] 71 71 71 71 71 71 71COL 2: [2] 70 70TAB 0, ROW 6, @ 0x2f6tl: 17 FB: --H-fl - lb: 0x1 cc: 3col 0: [2] C1 14COL 1: [7] 71 71 71 71 71 71 71COL 2: [2] 70 70TAB 0, ROW 8, @ 0x7F0 -------------- From ROW 8 - ROW 10 records have been migrated into new blocks, where the new block is reserved, the physical location of new blocks TL: 9 FB: --H ----- lb: 0x1 cc: 0nrid: 0x00c007a4.0 ------------ ROW 0 in blocks moving to the block number 0x00c007a4 (this block is 0x00c007A3) Tab 0, Row 9 , @ 0x7datl: 9 fb: --h ----- lb: 0x1 cc: 0nrid: 0x00c007a4.1 Migrate ROW 1 in blocks of Block No. 0x00c007A4 (this block is 0x00c007A3) Tab 0, Row 10, @ 0x760tl: 9 fb: --h ----- lb: 0x1 cc: 0nrid: 0x00c007a4.2 migrated to the block of Block No. 0x00C007A4 (this block is 0x00c007A3) end_of_block_dumpend dump Data Blocks TSN: 2 File # : 3 minblk 1955 Maxblk 1955
SQL> INSERT INTO TN VALUES (1, 1, 1); 1 row created.sql> commit; commit completed. SQL> ALTER System Dump DataFile 3 block 1955; system altered. Insert record, let's take a look, we discover the The block is not inserted, the record is inserted to another block (although the block is now the spatial usage rate) This is because of the release of FreeElist when Update, then return to FreeElist, after block 1956 Block header dump: 0x00c007a3Object id on Block Yseg / obj: 0x66b7 csc: 0x00.1891ba5 itc: 1 flg: O typ:? 1 - DATAfsl: 1 fnx: 0x0 ver: 0x01Itl Xid Uba Flag Lck Scn / Fsc0x01 xid: 0x0004.047.000000 E7 UBA: 0x00800618.00DF.08 --U- 11 FSC 0x1B2e.01891BA7DATA_BLOCK_DUMP =============== Tsiz: 0x1fb8hsiz: 0x28PBL: 0x0ba76c44bdba: 0x00c007a3flag = -------------------------------- --- ntab = 1nrow = 11FRRE = 7FSBO = 0x28fseo = 0x2F6AVSP = 0x3d0tosp = 0x1efe0xe: PTI [0] nrow = 11 OFFS = 00X12: PTI [0] OFFS = 0x35c0x14: PTI [1] OFFS = 0x34b0x16: PTI [2] OFFS = 0x33a0x18: PTI [3] OFFS = 0x3290x1a: PTI [4] OFFS = 0x3180x1c: PTI [5] OFFS = 0x3070x1e: PTI [6] OFFS = 0x2f60x20: PTI [7] sfll = -10x22: PTI [8] OFFS = 0x7f00x24: PTI [9] OFFS = 0x7DA0x26: PTI [10] OFFS = 0x760Block_row_dump: Tab 0, Row 0, @ 0x35ctl: 17 FB: --H-FL - LB: 0x1 CC: 3C OL 0: [2] C1 02COL 1: [7] 71 71 71 71 71 71 71COL 2: [2] 70 70TAB 0, ROW 1, @ 0x34btl: 17 FB: --H-FL - LB: 0x1 CC: 3COL 0: [2] C1 03COL 1: [7] 71 71 71 71 71 71 71COL 2: [2] 70 70TAB 0, ROW 2, @ 0x33tl: 17 FB: --H-FL - LB: 0x1 CC: 3col 0: [2] C1 04COL 1: [7] 71 71 71 71 71 71 71COL 2: [2] 70 70TAB 0, ROW 3, @ 0x329tl: 17 FB: --H-FL - LB: 0x1 CC: 3COL 0: [2] C1 05COL 1: [7] 71 71 71 71 71 71 71COL 2: [2] 70 70TAB 0, ROW 4, @
0x318TL: 17 FB: --H-FL - LB: 0x1 CC: 3COL 0: [2] C1 06COL 1: [7] 71 71 71 71 71 71 71COL 2: [2] 70 70TAB 0, ROW 5, @ 0x307TL: 17 FB: --H-FL - LB: 0x1 CC: 3Col 0: [2] C1 07COL 1: [7] 71 71 71 71 71 71 71COL 2: [2] 70 70TAB 0, ROW 6, @ 0x2f6tl: 17 FB: --H-fl - lb: 0x1 cc: 3col 0: [2] C1 14COL 1: [7] 71 71 71 71 71 71 71COL 2: [2] 70 70TAB 0, ROW 8, @ 0x7f0tl: 9 fb: --h ----- lb: 0x1 cc: 0nrid: 0x00c007a4.0tab 0, row 9, @ 0x7datl: 9 fb: --h ----- lb: 0x1 cc: 0NRID: 0x00c007A4 .1TAB 0, ROW 10, @ 0x760tl: 9 fb: --h ----- lb: 0x1 cc: 0nrid: 0x00c007a4.2nd_of_block_dumpend dump Data Blocks TSN: 2 File #: 3 minblk 1955 MaxBlk 1955
SQL> INSERT INTO TN SELECT 1,1,1 from all_objects where rownum <1001; 1000 rows created.sql> commit; commit completed .sql> ALTER system dump datafile 3 block 1955; system altered.sql> Insert 1000 records, We found that 600 of them were inserted into the block 1956, while this block was only inserted into 400 because of the order of freelist and we found that the records in this block have been completely reorganized, physical location is because insert The change happens that the physical location in Oracle's Block is possible to be reorganized, but the line number, this line number and physical location are recorded at the front, and quickly locate block header Dump when RowID query. : 0x00C007A3Object ID on block? YSEG / OBJ: 0X66B7 CSC: 0x00.1891bab ITC: 1 FLG: O TYP: 1 - DATAFSL: 0 fnx: 0x0 Ver: 0x01itl Xid Uba flag LCK SCN / FSC0X01 XID: 0x0006.01e.000000f2 UBA : 0x00801660.00Da.14 --u- 400 fsc 0x000000.01891baddata_block_dump =============== Tsiz: 0x1fb8hsiz: 0x346pbl: 0x0ba76c44bdba: 0x00c007a3flag = ------------------ -ntab = 1nrow = 0x346fseo = 0xF86AVSP = 0xc40tosp = 0xc400xe: PTI [0] nrow = 410 OFFS = 00x12: PTI [0] OFFS = 0x1fa7 Previous 7 record physical locations have changed but the line number is not Change 0x14: PTI [1] OFFS = 0x1f96 Previous 7 Recorded physical locations have changed but the line number has not changed 0x16: PTI [2] OFFS = 0x1f85 Previous 7 record physical locations have changed but the line number has not changed 0x18 : PTI [3] OFFS = 0x1f74 Previous 7 record physical locations have changed but line numbers No change 0x1a: PTI [4] OFFS = 0x1f63 Previous 7 record physical location has changed but line numbers have not changed 0x1c: PTI [5] OFFS = 0x1f52 Previous 7 record physical locations have changed but the line number has not changed 0x1e: PTI [6] OFFS = 0x1f41 Previous 7 Recorded physical locations have changed but line numbers have not changed 0x20: PTI [7] OFFS = 0x18b4 The line number has been inserted into 0x22: PTI [8] OFFS = 0x1f38 This line migration has not changed, because this does not need to update index 0x24: PTI [9] OFFS = 0x1f2f This line migration has not changed, because this does not need to update index 0x26: PTI [10] The record of the migration of the row does not change, because this is because this is not updated index 0x28: PTI [11] OFFS = 0x18be newly inserted record 0x2a: PTI [12] OFFS = 0x18c8 newly inserted record 0x2c: PTI [ 13] OFFS = 0x18D2 Newly inserted record 0x2e: PTI [14] OFFS =
0x18DC newly inserted record 0x30: PTI [15] OFFS = 0x18e6 newly inserted record 0x32: PTI [16] OFFS = 0x18f0 newly inserted record 0x34: PTI [17] OFFS = 0x18fa newly inserted record 0x36: PTI [18] OFFS = 0x1904 newly inserted record .......................................................... 省 省 省 b b _ _ r _:: Tab 0, Row 0, @ 0x1fa7tl: 17 FB: --H-FL- - lb: 0x0 cc: 3col 0: [2] C1 02COL 1: [7] 71 71 71 71 71 71 71COL 2: [2] 70 70TAB 0, ROW 1, @ 0x1f96tl: 17 FB: --H-FL- - lb: 0x0 cc: 3col 0: [2] C1 03COL 1: [7] 71 71 71 71 71 71 71COL 2: [2] 70 70TAB 0, ROW 2, @ 0x1f85tl: 17 FB: --H-FL- - lb: 0x0 cc: 3col 0: [2] C1 04COL 1: [7] 71 71 71 71 71 71 71COL 2: [2] 70 70TAB 0, ROW 3, @ 0x1f74tl: 17 fb: --h-fl- - lb: 0x0 cc: 3col 0: [2] C1 05COL 1: [7] 71 71 71 71 71 71 71COL 2: [2] 70 70TAB 0, ROW 4, @ 0x1f63tl: 17 FB: --H-FL- - lb: 0x0 cc: 3col 0: [2] C1 06COL 1: [7] 71 71 71 71 71 71 71COL 2: [2] 70 70TAB 0, ROW 5, @ 0x1f52tl: 17 FB: --H-FL- - lb: 0x0 cc: 3col 0: [2] C1 07COL 1: [7] 71 71 71 71 71 71 71COL 2: [2] 70 70TAB 0, ROW 6, @ 0x1f41tl: 17 FB: --H-FL- - lb: 0x0 cc: 3col 0: [2] C1 14COL 1: [7] 71 71 71 71 71 7 1 71COL 2: [2] 70 70TAB 0, ROW 7, @ 0x18b4tl: 10 FB: --H-FL - LB: 0x1 CC: 3col 0: [2] C1 02COL 1: [1] 31COL 2: [1 ] 31TAB 0, ROW 8, @ 0x1f38tl: 9 fb: --h ----- lb: 0x0 cc: 0nrid: 0x00c007a4.0tab 0, row 9, @ 0x1f2ftl: 9 FB: --H ----- LB: 0x0 cc: 0nrid: 0x00c007a4.1 Tab 0, Row 10, @ 0x1f26tl: 9 fb: --h ----- lb: 0x0 cc: 0nrid: 0x00c007a4.2tab 0, Row 11, @ 0x18betl: 10 FB: --H-fl - lb: 0x1 cc: 3col 0: [2] C1 02COL 1: [1] 31COL 2: [1] 31TAB 0, ROW 12, @ 0x18c8tl: 10 FB: --H-FL-- LB: 0x1 cc: 3col 0: [2] C1 02COL 1: [1] 31COL 2: [1] 31TAB 0, ROW 13, @ 0x18d2tl: 10 FB: --H-FL - lb: 0x1 CC: 3col 0 : [2] C1 02COL 1: [1] 31COL 2: [1] 31TAB 0, ROW 14, @
0x18DCTL: 10 FB: --H-FL - LB: 0x1 CC: 3col 0: [2] C1 02COL 1: [1] 31COL 2: [1] 31TAB 0, ROW 15, @ 0x18e6tl: 10 FB: - H-fl - lb: 0x1 cc: 3col 0: [2] C1 02COL 1: [1] 31COL 2: [1] 31TAB 0, ROW 16, @ 0x18f0tl: 10 FB: --H-FL - lb: 0x1 CC: 3col 0: [2] C1 02COL 1: [1] 31 omitted the back repeated data A row across blocks
Note that there is a field spanning Block by this example. When a row is written, it is actually written, and there is a field 1, 2, 3, 4, 5 to write field 5-4 --- 3--2 - 1 When crossing Block, it is the second block of the first 24 bytes of fields 1 and 2 in the second block, which means that even the field data is close to the end of the block. If there is an index, the BLOCK pointed to by RowID should actually be in the second block, the second block holds the pointer to the remaining part of the pointer SQL> Create Table Blocks (a char (2000), B char (2000) , C Char (2000), D Char (2000), E CHAR (2000)); Table Created. SQL> SET ServerOut on SQL> EXEC SHOW_SPACE ('blocks'); Free blocks ........ ................... 0 Total Blocks .......................... 16 Total Bytes ..................................................................... ............ 15 unused bytes .............................. 122880 Last Used ext fileId .. ................ 3 Last Used Ext Blockid ................. 32226 Last Used block .... ................... 1 PL / SQL Procedure SuccessFully Completed. SQL> INSERT INTO Blocks Values (1, 1, 1, 1, 1); 1 Row Created SQL> Commit; SQL> ALTER SYSTEM DUMP DATAFILE 3 block min 32227 block 32228; system altered. *** 2003-04-15 14: 54: 39.078Start Dump Data Blocks TSN: 2 File #: 3 minblk 32227 maxblk 32228buffer tsn: 2 rdba: 0x00c07de3 (3/32227) scn: 0x0000.01892035 seq: 0x01 flg: 0x02 tail: 0x20350601frmt: 0x02 chkval: 0x0000 type: 0x06 = trans dataBlock header dump: 0x00c07de3Object id on Block Yseg? / OBJ: 0x66C3 CSC: 0x00.1892033 ITC: 1 FLG: - TYP: 1 - DATAFSL: 0 fnx: 0x0 Ver: 0x01itl xid uba flag lck scn / fsc0x01 xid: 0x0003.01d.000000E9 UBA: 0x00800DAC.00D9.28 - -U- 1 fsc 0x0000.01892035Data_block_dump ========================================================================================================================================================= -1fsbo = 0x14fseo = 0x81AVSP = 0x6dtosp = 0x6d0Xeti [0] nrow =
1 OFFS = 0 This block has only one record 0x12Ri [0] OFFS = 0x81 This record is from this block 129 bytes to start 0x81 = 8 * 16 1 = 129 block_row_dump: Tab 0, Row 0, @ 0x81tl: 7991 The length of the BLOCK is 7991, 7991 129 = 8192 =
Block_size 8k fb: ----- lp- lb: 0x1 cc: 4 (this block contains 4 field contents) COL 0: [1976] ------ Here only 3976 bytes of this field 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 * *********************************************************** ************* ------- Indicates the display 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ****************************************** ******************************************************** 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *********** *************************************** ************************************ 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 202 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ************************************************************* ************************************** 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20end_of_block_dumpbuffer tsn: 2 rdba: 0x00c07de4 (3/32228) scn: 0x0000.01892035 seq: 0x01 flg: 0x02 tail : 0x20350601FRMT: 0x02 Chkval: 0x0000 Type: 0x06 =
trans dataBlock header dump: 0x00c07de4Object id on Block Yseg / obj: 0x66c3 csc: 0x00.1892033 itc: 1 flg: O typ: 1 - DATAfsl:? 0 fnx: 0x0 ver: 0x01Itl Xid Uba Flag Lck Scn / Fsc0x01 xid: 0x0003. 01d.000000E9 UBA: 0x00800DAC.00D9.29 --U- 1 fsc 0x0000.01892035Data_block_dump =============== Tsiz: 0x1fb8hsiz: 0x14pbl: 0x02556c44bdba: 0x00c07de4flag = ------------------ ----- ntab = 1nrow = 1frre = -1fsbo = 0x14fseo = 0x17c3avsp = 0x17aftosp = 0x17af0xeti [0] nrow = 1 offs = 00x12ri [0] offs = 0x17c3block_row_dump: tab 0, row 0, @ 0x17c3tl: 2037 fb: - -HF - N lb: 0x1 cc: 2 ---- This block only saves 2 fields of the Bank, and the contents of FB temporarily cannot be interpreted, you should migrate and connect to NRID: 0x00c07de3.0 ----- Represents a row of Row 0 in BLOCK 0X00C07DE3, COL 0: [2000] 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *********************** *********************************************************** 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20col 1: [24] --- second field in this block save only 24 bytes 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20end_of_block_dumpEnd dump data blocks tsn: 2 file #: 3 minblk 32227 maxblk 32228 final conclusions
1: When the data is started in the block, it is normal to insert 2: When the record is deleted, if the newly inserted data can be accommodated, then reuse 3: When the update is updated, if the ROW length does not increase, the position does not change If the length is increased, it is migrated to the forefront of the entire block (near the Block Header side) 4: When the row migration occurs, the migrated block after the original physical location and Row Number5: When the block re-returned freeelist When inserting records, the reorganization of block data may occur (Row Number does not change but physical location changes) The TAIL side is idle, which will lead to space reconstruction when INSERT, that is, the data stored in the position of the Header side is stored to the block of blocks, and the restructuring of the space has occurred. In fact, when inserting data or Update, if the total remaining space in the block is sufficient but it is very fragmented, and the zero space is not allowed to accommodate the internal reconstruction, which is inherently the restructuring of the block within the block. That is to say that the spatial restructuring of the Block level is automatic, and the segment level must use exp / IMP, alter ... motor, ctas, etc. Original reference: http://www.itpub.net/showthread .php? threereadid = 112239