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

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

65

积分

0

好友

31

主题
1#
发表于 2012-5-6 16:29:56 | 查看: 6768| 回复: 1


学习datablock结构。发现

http://blog.csdn.net/tianlesoftware/article/details/6414765


写到

5.2 Table directory

For a
heap-organized table, this directory contains metadata about tables whose rows are stored in this block. Multiple tables can store rows in the same block.

-- metadata,元数据,指表的定义语句。



这我就有疑问了?如果一个表的数据在10000个datablock存在?
那么这10000个datablock难道都要存储这个表的定义信息?
其他详细信息如下

Data Block Format

Every data block has a format or internal structure that enables the database to track the data and free space in the block. This format is similar whether the data block contains table, index, or
table cluster data. Figure shows the format of an uncompressed data block.


.
Data Block Overhead


Oracle Database uses the block overhead to manage the block itself. The block overhead is not available to store user data. The block overhead includes the following parts:


5.1
Block header


This part contains general information about the block, including disk address and segment type. For blocks that are transaction-managed, the
block header contains active and historical transaction information.

A transaction entry is required for every transaction that updates the block. Oracle Database initially reserves space in the block header for transaction entries. In data blocks allocated to segments that support transactional changes, free space can also hold transaction entries when the header space is depleted. The space required for transaction entries is operating system dependent. However, transaction entries in most operating systems require approximately 23 bytes.


5.2 Table directory

For a
heap-organized table, this directory contains metadata about tables whose rows are stored in this block. Multiple tables can store rows in the same block.

-- metadata,元数据,指表的定义语句。



heap-organized table: A table in which the data rows are stored in no particular order on disk. By default, CREATE TABLE creates a heap-organized table.


2#
发表于 2012-5-6 23:04:41
ODM DATA:

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  




kdbt ==> Table Directory   , Table Directory的存在主要是为了cluster ,cluster 会在 同一个数据块内存放多个Table的数据

struct kdbt {

b2 kdbtoffs; /* OFFSet in the block from kdbpri */

b2 kdbtnrow; /* Number of Rows in the table */

}

一个kdbt  structure占用 4个字节 ,一个kdbt  structure 代表  一张表 , 有多个kdbt structure 代表该块是 Cluster

kdbt 中的 kdbtoffs 占用2个字节 , 表示该table起始的offset 偏移量,  kdbtnrow 占用2个字节, 代表该table在本block中的行数 Number of rows 。

kdbt Table Directory并不会记录 heap table的 定义。



BBED> p kdbt  
struct kdbt[0], 4 bytes                     @138     
   b2 kdbtoffs                              @138      0
   b2 kdbtnrow                              @140      83

回复 只看该作者 道具 举报

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

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

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

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

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