Oracle数据库数据恢复、性能优化

找回密码
注册
搜索
热搜: 活动 交友 discuz
发新帖

65

积分

0

好友

31

主题
1#
发表于 2012-5-6 17:44:49 | 查看: 3958| 回复: 1
对于datablock中的rowdirectory描述如下


.3 Row directory

For a heap-organized table, this directory describes the location of rows in the data portion of the block.


After space has been allocated in the row directory, the database does not reclaim this space after row deletion. Thus, a block that is currently empty but formerly had up to 50 rows continues to have 100 bytes allocated for the row directory. The database reuses this space only when new rows are inserted in the block.



Some parts of the block overhead are fixed in size, but the total size is variable. On average, the block overhead totals 84 to 107 bytes.



我的问题如下
1)"Some parts of the block overhead are fixed in size, but the total size is variable. On average, the block overhead totals 84 to 107 bytes"
   只要如何理解,some parts 指哪些 parts呢?
   另外我想知道row directory占用data block的大小比例是固定的吗?
   
2)“this directory describes the location of rows in the data portion of the block
     这个具体是如何描述的,是每一行的偏移地址吗?

3)“ After space has been allocated in the row directory, the database does not reclaim this space after row deletion”这个不是太理解,我是这个意思,一行(row piece)大小应当是固定的?假设数据区能存放50行数据,完全可一开始就把行的位置分配好啊?不存在回收的问题啊?
2#
发表于 2012-5-6 22:25:53
ODM DATA:

BBED> set block 200
        BLOCK#          200

BBED> map /v
File: /s01/lost1.dbf (0)
Block: 200                                   Dba:0x00000000
------------------------------------------------------------
KTB Data Block (Table/Cluster)

struct kcbh, 20 bytes                      @0      
    ub1 type_kcbh                           @0      
    ub1 frmt_kcbh                           @1      
    ub1 spare1_kcbh                         @2      
    ub1 spare2_kcbh                         @3      
    ub4 rdba_kcbh                           @4      
    ub4 bas_kcbh                            @8      
    ub2 wrp_kcbh                            @12      
    ub1 seq_kcbh                            @14      
    ub1 flg_kcbh                            @15      
    ub2 chkval_kcbh                         @16      
    ub2 spare3_kcbh                         @18      

struct ktbbh, 96 bytes                     @20      
    ub1 ktbbhtyp                            @20      
    union ktbbhsid, 4 bytes                 @24      
    struct ktbbhcsc, 8 bytes                @28      
    b2 ktbbhict                             @36      
    ub1 ktbbhflg                            @38      
    ub1 ktbbhfsl                            @39      
    ub4 ktbbhfnx                            @40      
    struct ktbbhitl[3], 72 bytes            @44      

struct kdbh, 14 bytes                      @124     
    ub1 kdbhflag                            @124     
    b1 kdbhntab                             @125     
    b2 kdbhnrow                             @126     
    sb2 kdbhfrre                            @128     
    sb2 kdbhfsbo                            @130     
    sb2 kdbhfseo                            @132     
    b2 kdbhavsp                             @134     
    b2 kdbhtosp                             @136     

struct kdbt[1], 4 bytes                    @138     
    b2 kdbtoffs                             @138     
    b2 kdbtnrow                             @140     

sb2 kdbr[70]                               @142     

ub1 freespace[905]                         @282     

ub1 rowdata[7001]                          @1187   

ub4 tailchk                                @8188  





1. "Some parts of the block overhead are fixed in size "

以下部分的长度 在block 结构中是固定的大小的。

kcbh       ==> block header structure 块头结构包括 block type、format等信息 kcbh的大小固定为20bytes
kdbh      ==>  data header structure  数据头结构 包括kdbhnrow、freespace等信息  固定为 14bytes
ktbbh    ==>  ktbbh排除 ktbbhitl ITL结构的部分是固定的 24bytes
tailchk  ==>  Tailchk: 保存在块结尾用于校验的数据,长度4个字节,内部结构名tailchk。



2.“row directory占用data block的大小比例是固定的吗?“

不是 。

kdbr ==> Row Directory

一个kdbr 结构占用2个字节 ,记录了 一条row piece 的offset , ROW directory 占用的比例等于 2 * kdbhnrow/ block_size

sb2 kdbr[83]                               @142


BBED> p kdbhnrow
b2 kdbhnrow                                 @126      83

kdbhnrow    ==> Number  of rows

BBED> p *kdbr[0]
rowdata[6915]
-------------
ub1 rowdata[6915]                           @8100     0x2c

BBED> x /r offset 8100
rowdata[6915]                               @8100   
-------------
flag@8100: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8101: 0x00
cols@8102:   13

col    0[3] @8103:  0x53  0x59  0x53
col   1[21] @8107:  0x4b  0x55  0x24  0x5f  0x50  0x52  0x4f  0x58  0x59  0x5f
0x52  0x4f  0x4c  0x45  0x5f  0x4c  0x49  0x53  0x54  0x5f  0x54
col    2[0] @8129: *NULL*
col    3[3] @8130:  0xc2  0x46  0x38
col    4[0] @8134: *NULL*
col    5[4] @8135:  0x54  0x59  0x50  0x45
col    6[7] @8140:  0x78  0x6e  0x04  0x14  0x09  0x1c  0x14
col    7[7] @8148:  0x78  0x6e  0x04  0x14  0x09  0x1c  0x14
col   8[19] @8156:  0x32  0x30  0x31  0x30  0x2d  0x30  0x34  0x2d  0x32  0x30
0x3a  0x30  0x38  0x3a  0x32  0x37  0x3a  0x31  0x39
col    9[5] @8176:  0x56  0x41  0x4c  0x49  0x44
col   10[1] @8182:  0x4e
col   11[1] @8184:  0x4e
col   12[1] @8186:  0x4e


BBED> p *kdbr[1]
rowdata[6829]
-------------
ub1 rowdata[6829]                           @8014     0x2c

BBED> x /r offset 8014
rowdata[6829]                               @8014   
-------------
flag@8014: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8015: 0x00
cols@8016:   13

col    0[3] @8017:  0x53  0x59  0x53
col   1[19] @8021:  0x53  0x59  0x53  0x5f  0x59  0x4f  0x49  0x44  0x30  0x30
0x30  0x30  0x30  0x30  0x36  0x39  0x35  0x36  0x24
col    2[0] @8041: *NULL*
col    3[3] @8042:  0xc2  0x46  0x3a
col    4[0] @8046: *NULL*
col    5[4] @8047:  0x54  0x59  0x50  0x45
col    6[7] @8052:  0x78  0x6e  0x04  0x14  0x09  0x1c  0x14
col    7[7] @8060:  0x78  0x6e  0x04  0x14  0x09  0x1c  0x14
col   8[19] @8068:  0x32  0x30  0x31  0x30  0x2d  0x30  0x34  0x2d  0x32  0x30
0x3a  0x30  0x38  0x3a  0x32  0x37  0x3a  0x31  0x39
col    9[5] @8088:  0x56  0x41  0x4c  0x49  0x44
col   10[1] @8094:  0x4e
col   11[1] @8096:  0x4e
col   12[1] @8098:  0x4e

回复 只看该作者 道具 举报

您需要登录后才可以回帖 登录 | 注册

QQ|手机版|Archiver|Oracle数据库数据恢复、性能优化

GMT+8, 2024-12-25 12:31 , Processed in 0.047161 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部
TEL/電話+86 13764045638
Email service@parnassusdata.com
QQ 47079569