联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
BBED> map /v File: /opt/oracle/oradata/xifenfei/xff01.dbf (2) Block: 530 Dba:0x00800212 ------------------------------------------------------------ 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, 72 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[2], 48 bytes @44 struct kdbh, 14 bytes @92 ub1 kdbhflag @92 b1 kdbhntab @93 b2 kdbhnrow @94 sb2 kdbhfrre @96 sb2 kdbhfsbo @98 sb2 kdbhfseo @100 b2 kdbhavsp @102 b2 kdbhtosp @104 struct kdbt[1], 4 bytes @106 b2 kdbtoffs @106 b2 kdbtnrow @108 sb2 kdbr[101] @110 ub1 freespace[4270] @312 ub1 rowdata[3606] @4582 ub4 tailchk @8188 BBED> //////////////////////////////////////////////////////////////////////////////////////// //////////// Block Header Structure, 20 bytes////////////////////////////////////////// BBED> p kcbh struct kcbh, 20 bytes @0 ub1 type_kcbh @0 -- Block Type -- 01 - Undo segment header -- 02 - Undo data block -- 03 - Save undo header -- 04 - Save undo data block -- 05 - Data segment header -- 06 - Trans data, KTB managed data block(with ITL) -- 07 - Temp table data block (no ITL) -- 08 - Sort key -- 09 - Sort Run -- 10 - Segment free list block -- 11 - Data file header ub1 frmt_kcbh @1 -- Block Format 1=Oracle7, 2=Oracle8+ ub1 spare1_kcbh @2 -- Not used, filler field ub1 spare2_kcbh @3 -- Not used, filler field ub4 rdba_kcbh @4 -- RDBA (4 bytes) - Relative Data Block Address ub4 bas_kcbh @8 -- SCN Base (4 bytes) ub2 wrp_kcbh @12 -- SCN Wrap (2 bytes) ub1 seq_kcbh @14 -- Sequence Number, incremented for every change made to the block at the same SCN ub1 flg_kcbh @15 -- Flag: -- 0x01 New Block -- 0x02 Delayed Logging Chang advanced SCN/seq -- 0x04 Check value saved - block XOR's to Zero -- 0x08 Temporary block ub2 chkval_kcbh @16 -- Optional block checksum (if DB_BLOCK_CHECKSUM=TRUE) ub2 spare3_kcbh @18 -- Not used, filler field ///////////////////////////////////////////////////////////////////////////////////////// /////////Transaction Fixed Header Structure, 72 Bytes//////////////////////////////////// BBED> p ktbbh struct ktbbh, 72 bytes @20 ub1 ktbbhtyp @20 -- Block type (1=DATA, 2=INDEX) union ktbbhsid, 4 bytes @24 -- Segment/Object ID struct ktbbhcsc, 8 bytes @28 -- SCN at last block cleanout b2 ktbbhict @36 -- Number of ITL slots ub1 ktbbhflg @38 -- 0=on the freelist ub1 ktbbhfsl @39 -- ITL TX freelist slot ub4 ktbbhfnx @40 -- DBA of next block on the freelist struct ktbbhitl[2], 48 bytes @44 -- ITL list index, each ITL takes up 24 bytes ////////////////////////////////////////////////////////////////////////////////////////// ///////////////Data Header Structure, 14 bytes//////////////////////////////////////////// BBED> p kdbh struct kdbh, 14 bytes @100 ub1 kdbhflag @100 -- N=pctfree hit(clusters) -- F=do not put on freelist -- K=flushable cluster keys b1 kdbhntab @101 -- Number of tables (>1 in clusters) b2 kdbhnrow @102 -- Number of rows (2 bytes) sb2 kdbhfrre @104 -- First free row entry index; -1=you have to add one sb2 kdbhfsbo @106 -- Freespace begin offset sb2 kdbhfseo @108 -- Freespace end offset b2 kdbhavsp @110 -- Available space in the block b2 kdbhtosp @112 -- Total available space when all TXs commit //////////////////////////////////////////////////////////////////////////////////////// /////////////////////Table Directory Entry Structure, 4 bytes/////////////////////////// BBED> p kdbt struct kdbt[1], 4 bytes @114 b2 kdbtoffs @114 b2 kdbtnrow @116 //////////////////////////////////////////////////////////////////////////////////////// ////////////////// Row Directory /////////////////////////////////////////////////////// BBED> p kdbr[100] sb2 kdbr[100] @310 //////////////////////////////////////////////////////////////////////////////////////// ///////////////// Free Space /////////////////////////////////////////////////////////// BBED> p freespace[4269] ub1 freespace[4269] @4581 /////////////////////////////////////////////////////////////////////////////////////// /////////////////////Row Data////////////////////////////////////////////////////////// BBED> p rowdata[3605] ub1 rowdata[3605] @8187 0x00 ////////////////////////////////////////////////////////////////////////////////////// /////////////////////Block Tail Check, 4 bytes//////////////////////////////////////// BBED> p tailchk ub4 tailchk @8188 0x24500601
说明事宜:
1、tailchk=Lower order two bytes of SCN Base(bas_kcbh) + Block Type(type_kcbh) + SCN Seq(seq_kcbh)
2、块的scn为:scn=wrp_kcbh+bas_kcbh
求scn语句:select to_char(to_number(‘scn’,’xxxxxxxxxx’),’999999999999′) from dual;
3、dba求文件号,块号为:
set serveroutput on declare p_dba VARCHAR2 (255) :='0x00800212'; l_str VARCHAR2 (255) DEFAULT NULL; BEGIN l_str := 'datafile# is:' || DBMS_UTILITY.data_block_address_file (TO_NUMBER (LTRIM (p_dba, '0x'),'xxxxxxxx')) || chr(10)||'datablock is:' || DBMS_UTILITY.data_block_address_block (TO_NUMBER (LTRIM (p_dba, '0x'),'xxxxxxxx')); dbms_output.put_line(l_str); END;