zoukankan      html  css  js  c++  java
  • 叶子节点包含rowid信息

     
     然后,我们从中随便挑一个叶子节点,对其进行转储。假设就选row#0行所指向的叶子节点,根据dba的值:
     
     25226402可以知道,文件号为6,数据块号为60578。将其转储以后,其内容如下所示,我只显示与分支节点不同的部分。
      
      ----- begin tree dump
    branch: 0x103151b 16979227 (0: nrow: 7, level: 2)
       branch: 0x1031735 16979765 (-1: nrow: 419, level: 1)
          leaf: 0x103151c 16979228 (-1: nrow: 359 rrow: 359)
          leaf: 0x103151d 16979229 (0: nrow: 359 rrow: 359)
          leaf: 0x103151e 16979230 (1: nrow: 359 rrow: 359)
          leaf: 0x103151f 16979231 (2: nrow: 359 rrow: 359)
          leaf: 0x1031520 16979232 (3: nrow: 359 rrow: 359)
          leaf: 0x1031521 16979233 (4: nrow: 359 rrow: 359)
          leaf: 0x1031522 16979234 (5: nrow: 359 rrow: 359)
          leaf: 0x1031523 16979235 (6: nrow: 359 rrow: 359)
          leaf: 0x1031524 16979236 (7: nrow: 359 rrow: 359)
          leaf: 0x1031525 16979237 (8: nrow: 359 rrow: 359)
    	  
    16979228
    
    select value from v$diag_info where name='Default Trace File';
    
    SQL> select dbms_utility.data_block_address_file(16979228),
           dbms_utility.data_block_address_block(16979228)
      from dual;   2    3  
    
    DBMS_UTILITY.DATA_BLOCK_ADDRESS_FILE(16979228) DBMS_UTILITY.DATA_BLOCK_ADDRESS_BLOCK(16979228)
    ---------------------------------------------- -----------------------------------------------
    					     4						202012
    						 
    alter system dump datafile 4 block 202012;
      
    Leaf block dump
    ===============
    header address 139655992351332=0x7f0431d09a64
    kdxcolev 0
    KDXCOLEV Flags = - - -
    kdxcolok 0
    kdxcoopc 0x80: opcode=0: iot flags=--- is converted=Y
    kdxconco 2
    kdxcosdc 0
    kdxconro 359
    kdxcofbo 754=0x2f2
    kdxcofeo 1570=0x622
    kdxcoavs 816
    kdxlespl 0
    kdxlende 0
    kdxlenxt 16979229=0x103151d
    kdxleprv 0=0x0
    kdxledsz 0
    kdxlebksz 8032
    row#0[8014] flag: ------, lock: 0, len=18
    col 0; len 8; (8):  35 30 30 30 30 20 20 20  
    col 1; len 6; (6):  01 03 67 b9 00 07
    row#1[7996] flag: ------, lock: 0, len=18
    col 0; len 8; (8):  35 30 30 30 30 20 20 20
    col 1; len 6; (6):  01 03 7d 76 00 61
    row#2[7978] flag: ------, lock: 0, len=18
    col 0; len 8; (8):  35 30 30 30 30 20 20 20
    col 1; len 6; (6):  01 03 7d 7f 00 5e
    row#3[7960] flag: ------, lock: 0, len=18
    col 0; len 8; (8):  35 30 30 30 30 20 20 20
    col 1; len 6; (6):  01 03 7e 42 00 64
    row#4[7942] flag: ------, lock: 0, len=18
    col 0; len 8; (8):  35 30 30 30 30 20 20 20
    col 1; len 6; (6):  01 03 7f 5e 00 7b
    
    
    row#0[8014] flag: ------, lock: 0, len=18
    col 0; len 8; (8):  35 30 30 30 30 20 20 20    ---50000
    col 1; len 6; (6):  01 03 67 b9 00 07          ---
    
    DECLARE
      n VARCHAR2(2000);
    BEGIN
      DBMS_STATS.convert_raw_value('35', n);
      DBMS_OUTPUT.put_line(n);
      DBMS_STATS.convert_raw_value('30', n);
      DBMS_OUTPUT.put_line(n);
      DBMS_STATS.convert_raw_value('30', n);
      DBMS_OUTPUT.put_line(n);
      DBMS_STATS.convert_raw_value('30', n);
      DBMS_OUTPUT.put_line(n);
      DBMS_STATS.convert_raw_value('30', n);
      DBMS_OUTPUT.put_line(n);
      DBMS_STATS.convert_raw_value('20', n);
      DBMS_OUTPUT.put_line(n);
      DBMS_STATS.convert_raw_value('20', n);
      DBMS_OUTPUT.put_line(n);
      DBMS_STATS.convert_raw_value('20', n);
      DBMS_OUTPUT.put_line(n);
    
    END;
    
    
    转换后为50000
    
    col 1是rowid,01 00 0c 8f 00 00是rowid的一部分值,也是16进制的.,先要转换成2进制的,
    
    再通过各个位数代表的意义计算文件号,块号和和行号。
    01 00 0c 8f 00 00 先转换为2进制:(注意前面先补足0)
    10000000000001100100011110000000000000000
    
    col 1; len 6; (6):  
    01 03 67 b9 00 07          ---
    
    00000001  00000011 01100111 10111001 00000000 00000111
    
    00000001  00000011 01100111 10111001 00000000 00000111
    
    然后串起来之后前10位 0000000100 表示文件号,=4 2进制转换为10进制表示4
    
    然后是接下来的22位 000000 00000000 00001100表示块号
    
    0000110110011110111001 2进制转换为10进制为223161 
    
    最后面的的16位表示行号
    0000000000000111 2进制转换为10进制为7,行号为7
    
    
    col 0; len 8; (8):  35 30 30 30 30 20 20 20
    
    col 1; len 6; (6):  01 03 7f 5e 00 7b
    
    00000001 000000011 01111111   01011110 00000000 01111011
    
    0000000100 --4
    
    00000110111111101011110 -- 229214
    
    0000000001111011 --123
    
    
    select owner, segment_name, segment_type
      from dba_extents
     where file_id = 4
       and 223161 between block_id and block_id + blocks - 1;
    
    
    SQL> select owner, segment_name, segment_type
      2    from dba_extents
      3   where file_id = 4
      4     and 223161 between block_id and block_id + blocks - 1;
      
      
    OWNER                          SEGMENT_NAME                                                                     SEGMENT_TYPE
    ------------------------------ -------------------------------------------------------------------------------- ------------------
    TEST                           TEST                                                                             TABLE
    
    
    select owner, segment_name, segment_type
      from dba_extents
     where file_id = 4
       and 229214 between block_id and block_id + blocks - 1;
       
     SQL> select owner, segment_name, segment_type
      2    from dba_extents
      3   where file_id = 4
      4     and 229214 between block_id and block_id + blocks - 1;
    OWNER                          SEGMENT_NAME                                                                     SEGMENT_TYPE
    ------------------------------ -------------------------------------------------------------------------------- ------------------
    TEST                           TEST                                                                             TABLE
    
    
    1	AAAVvMAAEAAA2e5AAH	50000   	javax/swing/text/ViewFactory
    2	AAAVvMAAEAAA312ABh	50000   	javax/swing/text/ViewFactory
    3	AAAVvMAAEAAA31/ABe	50000   	javax/swing/text/ViewFactory
    4	AAAVvMAAEAAA35CABk	50000   	javax/swing/text/ViewFactory
    5	AAAVvMAAEAAA39eAB7	50000   	javax/swing/text/ViewFactory
    6	AAAVvMAAEAAA3/kABB	50000   	javax/swing/text/ViewFactory
    7	AAAVvMAAEAAA4BWAAh	50000   	javax/swing/text/ViewFactory
    8	AAAVvMAAEAAA4EGABo	50000   	javax/swing/text/ViewFactory
    9	AAAVvMAAEAAA4HEAAc	50000   	javax/swing/text/ViewFactory
    10	AAAVvMAAEAAA4JKAA9	50000   	javax/swing/text/ViewFactory
    11	AAAVvMAAEAAA4KCAAa	50000   	javax/swing/text/ViewFactory
    12	AAAVvMAAEAAA4OfAA3	50000   	javax/swing/text/ViewFactory
    13	AAAVvMAAEAAA4R9ACW	50000   	javax/swing/text/ViewFactory
    14	AAAVvMAAEAAA4UCAAV	50000   	javax/swing/text/ViewFactory
    15	AAAVvMAAEAAA4ULAAa	50000   	javax/swing/text/ViewFactory
    16	AAAVvMAAEAAA4Z3AAE	50000   	javax/swing/text/ViewFactory
    17	AAAVvMAAEAAA4c4AB5	50000   	javax/swing/text/ViewFactory
    18	AAAVvMAAEAAA4eDAAc	50000   	javax/swing/text/ViewFactory
    19	AAAVvMAAEAAA4emADI	50000   	javax/swing/text/ViewFactory
    20	AAAVvMAAEAAA4jAAAb	50000   	javax/swing/text/ViewFactory
    21	AAAVvMAAEAAA4m2AA1	50000   	javax/swing/text/ViewFactory
    22	AAAVvMAAEAAA4pdABT	50000   	javax/swing/text/ViewFactory
    23	AAAVvMAAEAAA4p2AAb	50000   	javax/swing/text/ViewFactory
    24	AAAVvMAAEAAA4uoAAV	50000   	javax/swing/text/ViewFactory
    25	AAAVvMAAEAAA4y4ABv	50000   	javax/swing/text/ViewFactory
    26	AAAVvMAAEAAA4zBABC	50000   	javax/swing/text/ViewFactory
    27	AAAVvMAAEAAA40sACw	50000   	javax/swing/text/ViewFactory
    28	AAAVvMAAEAAA44MACT	50000   	javax/swing/text/ViewFactory
    29	AAAVvMAAEAAA47FAAl	50000   	javax/swing/text/ViewFactory
    30	AAAVvMAAEAAA49BABX	50000   	javax/swing/text/ViewFactory
    31	AAAVvMAAEAAA490ACB	50000   	javax/swing/text/ViewFactory
    32	AAAVvMAAEAAA5DYAA6	50000   	javax/swing/text/ViewFactory
    
    
    找个rowid 测试下:
    SQL> select rowid,
           a.goodid,
           dbms_rowid.rowid_relative_fno('AAAVvMAAEAAA2e5AAH') fno,
           dbms_rowid.rowid_block_number('AAAVvMAAEAAA2e5AAH') bkno,
           dbms_rowid.rowid_row_number('AAAVvMAAEAAA2e5AAH') rno
      from test a
     where  a.goodid= 50000;  2    3    4    5    6    7  
    
    ROWID		   GOODID	   FNO	     BKNO	 RNO
    ------------------ -------- ---------- ---------- ----------
    AAAVvMAAEAAA2e5AAH 50000	     4	   223161	   7
    AAAVvMAAEAAA312ABh 50000	     4	   223161	   7
    AAAVvMAAEAAA31/ABe 50000	     4	   223161	   7
    AAAVvMAAEAAA35CABk 50000	     4	   223161	   7
    AAAVvMAAEAAA39eAB7 50000	     4	   223161	   7
    AAAVvMAAEAAA3/kABB 50000	     4	   223161	   7
    AAAVvMAAEAAA4BWAAh 50000	     4	   223161	   7
    AAAVvMAAEAAA4EGABo 50000	     4	   223161	   7
    AAAVvMAAEAAA4HEAAc 50000	     4	   223161	   7
    AAAVvMAAEAAA4JKAA9 50000	     4	   223161	   7
    AAAVvMAAEAAA4KCAAa 50000	     4	   223161	   7
    AAAVvMAAEAAA4OfAA3 50000	     4	   223161	   7
    AAAVvMAAEAAA4R9ACW 50000	     4	   223161	   7
    AAAVvMAAEAAA4UCAAV 50000	     4	   223161	   7
    AAAVvMAAEAAA4ULAAa 50000	     4	   223161	   7
    AAAVvMAAEAAA4Z3AAE 50000	     4	   223161	   7
    AAAVvMAAEAAA4c4AB5 50000	     4	   223161	   7
    AAAVvMAAEAAA4eDAAc 50000	     4	   223161	   7
    AAAVvMAAEAAA4emADI 50000	     4	   223161	   7
    AAAVvMAAEAAA4jAAAb 50000	     4	   223161	   7
    AAAVvMAAEAAA4m2AA1 50000	     4	   223161	   7
    AAAVvMAAEAAA4pdABT 50000	     4	   223161	   7
    AAAVvMAAEAAA4p2AAb 50000	     4	   223161	   7
    AAAVvMAAEAAA4uoAAV 50000	     4	   223161	   7
    AAAVvMAAEAAA4y4ABv 50000	     4	   223161	   7
    AAAVvMAAEAAA4zBABC 50000	     4	   223161	   7
    AAAVvMAAEAAA40sACw 50000	     4	   223161	   7
    AAAVvMAAEAAA44MACT 50000	     4	   223161	   7
    AAAVvMAAEAAA47FAAl 50000	     4	   223161	   7
    AAAVvMAAEAAA49BABX 50000	     4	   223161	   7
    AAAVvMAAEAAA490ACB 50000	     4	   223161	   7
    AAAVvMAAEAAA5DYAA6 50000	     4	   223161	   7
    
    32 rows selected.
  • 相关阅读:
    JAVA基础——编程练习(二)
    JAVA基础——面向对象三大特性:封装、继承、多态
    JVM内存
    50. Pow(x, n) (JAVA)
    47. Permutations II (JAVA)
    46. Permutations (JAVA)
    45. Jump Game II (JAVA)
    43. Multiply Strings (JAVA)
    42. Trapping Rain Water (JAVA)
    41. First Missing Positive (JAVA)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13348385.html
Copyright © 2011-2022 走看看