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

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

35

积分

0

好友

3

主题
1#
发表于 2012-5-14 11:33:08 | 查看: 4824| 回复: 2
SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE    10.2.0.4.0      Production
TNS for IBM/AIX RISC System/6000: Version 10.2.0.4.0 - Productio
NLSRTL Version 10.2.0.4.0 - Production



BBED> print kdbr
sb2 kdbr[0]                                 @118      7970
sb2 kdbr[1]                                 @120      8040
sb2 kdbr[2]                                 @122      8020
sb2 kdbr[3]                                 @124      7996
BBED> print *kdbr[0]
rowdata[0]
----------
ub1 rowdata[0]                              @8070     0x3c
BBED> print *kdbr[1]
rowdata[70]
-----------
ub1 rowdata[70]                             @8140     0x3c
BBED> print *kdbr[2]
rowdata[50]
-----------
ub1 rowdata[50]                             @8120     0x3c
BBED> print *kdbr[3]
rowdata[26]
-----------
ub1 rowdata[26]                             @8096     0x3c


刘老大:
kdbr 含有ROW DIRECTORY的信息。118 是 kdbr[0]  的偏移量。里面的值是7970。

刚开始我以为 kdbr[0]  里面的值会是 行1的偏移量,后来发现不是, print *kdbr[0]  打印出来的8070  才是。
那么这个kdbr[0] 中的 7970  主要用来干啥的。
2#
发表于 2012-5-14 14:56:30
BBED> map /v
File: lost1.dbf (0)
Block: 20                                    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[77]                               @142     

ub1 freespace[813]                         @296     

ub1 rowdata[7079]                          @1109   

ub4 tailchk                                @8188   


BBED> p kdbr[0]
sb2 kdbr[0]                                 @142      7970

BBED> p *kdbr[0]
rowdata[6985]
-------------
ub1 rowdata[6985]                           @8094     0x2c


kdbr 实际记录的是相对offset

FOR ASSM

real offset = kdbr[n] +  76 + (itls-1) *24

FOR Example


    struct ktbbhitl[3], 72 bytes            @44 ==> indicate  there is 3 ITLS
        
        

*kdbr[0]= kdbr[0] + 76 + (3-1 ) *24 = 7970 + 76+ 48= 8094



BBED> p kdbr[1]
sb2 kdbr[1]                                 @144      7876


BBED> p *kdbr[1]
rowdata[6891]
-------------
ub1 rowdata[6891]                           @8000     0x2c


*kdbr[1]= kdbr[1] + 76 + (3-1 ) *24 = 7876 + 76+ 48= 8000


FOR MSSM

real offset= kdbr[n] + 68  + (itls-1) *24

回复 只看该作者 道具 举报

3#
发表于 2012-5-14 15:18:37
ML V5

解决了困惑我的一个问题。

回复 只看该作者 道具 举报

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

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

GMT+8, 2024-11-15 17:52 , Processed in 0.053409 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

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