ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 新插入的数据为什么没有放在block的最后?(五)

新插入的数据为什么没有放在block的最后?(五)

原创 Linux操作系统 作者:sdusun 时间:2019-07-07 15:57:05 0 删除 编辑
当出现sfll=**时,新插入数据的存放位置会发生变化

1 操作:

SQL> insert into t4
2 values (21,'b','b');

已创建 1 行。

SQL> alter system dump datafile 1 block 60650;

系统已更改。

SQL> commit;

提交已完成。

SQL> alter system dump datafile 1 block 60650; 我这里只是为了区分出2次的不同>

系统已更改。

2 查看block里面数据的结构变化:

我们来看新插入记录后block中发生的变化
查看trace文件中trace 1的内容:
*** 2007-05-10 16:03:42.000
*** SESSION ID:(12.432) 2007-05-10 16:03:42.000
Start dump data blocks tsn: 0 file#: 1 minblk 60650 maxblk 60650
buffer tsn: 0 rdba: 0x0040ecea (1/60650)
scn: 0x0000.0021a65b seq: 0x01 flg: 0x00 tail: 0xa65b0601
frmt: 0x02 chkval: 0x0000 type: 0x06=trans data
Block header dump: 0x0040ecea
Object id on Block? Y
seg/obj: 0x814d csc: 0x00.21972d itc: 2 flg: O typ: 1 - DATA
fsl: 0 fnx: 0x0 ver: 0x01

Itl Xid Uba Flag Lck Scn/Fsc
0x01 0x0004.017.00000896 0x00800349.008c.4e C--- 0 scn 0x0000.00218670
0x02 0x000a.012.00000893 0x008005f2.00a4.3b ---- 1 fsc 0x0000.00000000

data_block_dump,data header at 0x307105c
===============
tsiz: 0x1fa0
hsiz: 0x36
pbl: 0x0307105c
bdba: 0x0040ecea
76543210
flag=--------
ntab=1
nrow=18
frre=5
fsbo=0x36
fseo=0x1dcb
avsp=0x1dfb
tosp=0x1dfb
0xe:pti[0] nrow=18 offs=0 <来看这里,新插入一条记录,还是18条。因为新数据插入到了 0x18:pri[3] 这个位置>
0x12:pri[0] offs=0x1e3b
0x14:pri[1] offs=0x1e52
0x16:pri[2] offs=0x1e69
0x18:pri[3] offs=0x1dcb <这里原先sfll=5>
0x1a:pri[4] offs=0x1e0d
0x1c:pri[5] sfll=17 <如果再有新数据插入的话,就会插到这里>
0x1e:pri[6] offs=0x1ec5
0x20:pri[7] offs=0x1edc
0x22:pri[8] offs=0x1ef3
0x24:pri[9] offs=0x1f0a
0x26:pri[10] offs=0x1f23
0x28:pri[11] offs=0x1f3c
0x2a:pri[12] offs=0x1f55
0x2c:pri[13] offs=0x1f6e
0x2e:pri[14] offs=0x1f87
0x30:pri[15] offs=0x1df6
0x32:pri[16] offs=0x1ddf
0x34:pri[17] sfll=-1
block_row_dump:
tab 0, row 0, @0x1e3b
tl: 23 fb: --H-FL-- lb: 0x0 cc: 3
col 0: [ 2] c1 02
col 1: [ 9] 61 61 61 62 62 62 63 63 31
col 2: [ 6] 6c 69 75 71 6a 31
tab 0, row 1, @0x1e52
tl: 23 fb: --H-FL-- lb: 0x0 cc: 3
col 0: [ 2] c1 03
col 1: [ 9] 61 61 61 62 62 62 63 63 32
col 2: [ 6] 6c 69 75 71 6a 32
tab 0, row 2, @0x1e69
tl: 23 fb: --H-FL-- lb: 0x0 cc: 3
col 0: [ 2] c1 04
col 1: [ 9] 61 61 61 62 62 62 63 63 33
col 2: [ 6] 6c 69 75 71 6a 33
tab 0, row 3, @0x1dcb <插入的新数据id=21>
tl: 10 fb: --H-FL-- lb: 0x2 cc: 3
col 0: [ 2] c1 16
col 1: [ 1] 62
col 2: [ 1] 62
tab 0, row 4, @0x1e0d
tl: 23 fb: --H-FL-- lb: 0x0 cc: 3
col 0: [ 2] c1 06
col 1: [ 9] 61 61 61 62 62 62 63 63 35
col 2: [ 6] 6c 69 75 71 6a 35
tab 0, row 6, @0x1ec5
tl: 23 fb: --H-FL-- lb: 0x0 cc: 3
col 0: [ 2] c1 08
col 1: [ 9] 61 61 61 62 62 62 63 63 37
col 2: [ 6] 6c 69 75 71 6a 37
tab 0, row 7, @0x1edc
tl: 23 fb: --H-FL-- lb: 0x0 cc: 3
col 0: [ 2] c1 09
col 1: [ 9] 61 61 61 62 62 62 63 63 38
col 2: [ 6] 6c 69 75 71 6a 38
tab 0, row 8, @0x1ef3
tl: 23 fb: --H-FL-- lb: 0x0 cc: 3
col 0: [ 2] c1 0a
col 1: [ 9] 61 61 61 62 62 62 63 63 39
col 2: [ 6] 6c 69 75 71 6a 39
tab 0, row 9, @0x1f0a
tl: 25 fb: --H-FL-- lb: 0x0 cc: 3
col 0: [ 2] c1 0b
col 1: [10] 61 61 61 62 62 62 63 63 31 30
col 2: [ 7] 6c 69 75 71 6a 31 30
tab 0, row 10, @0x1f23
tl: 25 fb: --H-FL-- lb: 0x0 cc: 3
col 0: [ 2] c1 0c
col 1: [10] 61 61 61 62 62 62 63 63 31 31
col 2: [ 7] 6c 69 75 71 6a 31 31
tab 0, row 11, @0x1f3c
tl: 25 fb: --H-FL-- lb: 0x0 cc: 3
col 0: [ 2] c1 0d
col 1: [10] 61 61 61 62 62 62 63 63 31 32
col 2: [ 7] 6c 69 75 71 6a 31 32
tab 0, row 12, @0x1f55
tl: 25 fb: --H-FL-- lb: 0x0 cc: 3
col 0: [ 2] c1 0e
col 1: [10] 61 61 61 62 62 62 63 63 31 33
col 2: [ 7] 6c 69 75 71 6a 31 33
tab 0, row 13, @0x1f6e
tl: 25 fb: --H-FL-- lb: 0x0 cc: 3
col 0: [ 2] c1 0f
col 1: [10] 61 61 61 62 62 62 63 63 31 34
col 2: [ 7] 6c 69 75 71 6a 31 34
tab 0, row 14, @0x1f87
tl: 25 fb: --H-FL-- lb: 0x0 cc: 3
col 0: [ 2] c1 10
col 1: [10] 61 61 61 62 62 62 63 63 31 35
col 2: [ 7] 6c 69 75 71 6a 31 35
tab 0, row 15, @0x1df6
tl: 23 fb: --H-FL-- lb: 0x0 cc: 3
col 0: [ 1] 80
col 1: [ 9] 74 68 65 20 66 69 72 73 74
col 2: [ 7] 75 20 67 75 65 73 73
tab 0, row 16, @0x1ddf
tl: 23 fb: --H-FL-- lb: 0x0 cc: 3
col 0: [ 2] c1 15
col 1: [ 8] 74 68 65 20 6c 61 73 74
col 2: [ 7] 75 20 67 75 65 73 73
end_of_block_dump
End dump data blocks tsn: 0 file#: 1 minblk 60650 maxblk 60650

实际上我们来select以下数据,可以看到21位于id=3与id=5的数据之间,
这样,我们就可以理解为什么id=21的这条数据没有插入到最后了。
SQL> select * from t4;

ID NAME ADDR
---------- ---------- --------
1 aaabbbcc1 liuqj1
2 aaabbbcc2 liuqj2
3 aaabbbcc3 liuqj3
21 b b
5 aaabbbcc5 liuqj5
7 aaabbbcc7 liuqj7
8 aaabbbcc8 liuqj8
9 aaabbbcc9 liuqj9
10 aaabbbcc10 liuqj10
11 aaabbbcc11 liuqj11
12 aaabbbcc12 liuqj12

ID NAME ADDR
---------- ---------- --------
13 aaabbbcc13 liuqj13
14 aaabbbcc14 liuqj14
15 aaabbbcc15 liuqj15
0 the first u guess
20 the last u guess

已选择16行。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/593324/viewspace-376205/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2005-09-13

  • 博文量
    116
  • 访问量
    118267