ITPub博客

首页 > 数据库 > Oracle > dump索引结构

dump索引结构

原创 Oracle 作者:liiinuuux 时间:2016-04-15 10:08:05 0 删除 编辑
创建一张表T,及索引ITN
SQL> create table t as select * from dba_objects;

Table created.

SQL> create index itn on t(object_name);

Index created.

查看索引结构
SQL> select object_id from dba_objects where object_name = 'ITN';

 OBJECT_ID
----------
     87926

alter session set events 'immediate trace name treedump level 87926';

/u01/app/oracle/diag/rdbms/test/test/trace/test_ora_2924.trc
branch: 0x417179 4288889 (0: nrow: 2, level: 2)  <<<<<<<<<< 根节点level最大,是2,叶子节点level是0
    branch: 0x418f38 4296504 (-1: nrow: 309, level: 1)  <<<<<<<<除了根节点之外,其它节点的编号从-1开始
       leaf: 0x41717a 4288890 (-1: nrow: 187 rrow: 187)
       leaf: 0x41717b 4288891 (0: nrow: 184 rrow: 184)
...
...

根节点4288889
SQL> select dbms_utility.data_block_address_file(4288889) file_id, dbms_utility.data_block_address_block(4288889) block_id from dual;

   FILE_ID   BLOCK_ID
---------- ----------
         1      94585

alter system dump datafile 1 block 94585;


/u01/app/oracle/diag/rdbms/test/test/trace/test_ora_3155.trc
...
Branch block dump
=================
header address 140576901511748=0x7fda9c473a44
kdxcolev 2                  <<<<<<<<<<<<<<<<<<< level=2
KDXCOLEV Flags = - - -
kdxcolok 0
kdxcoopc 0x80: opcode=0: iot flags=--- is converted=Y
kdxconco 2
kdxcosdc 0
kdxconro 1
kdxcofbo 30=0x1e
kdxcofeo 8039=0x1f67
kdxcoavs 8009
kdxbrlmc 4296504=0x418f38  <<<<<<<<<<<<<<<<<< 4296504是freedump中的第一个分支节点
kdxbrsno 0
kdxbrbksz 8056
kdxbr2urrc 0
row#0[8039] dba: 4296627=0x418fb3
col 0; len 11; (11):  4d 52 56 5f 4f 4c 41 50 32 5f 50  <<<<<<<<<<索引的健值
col 1; TERM
----- end of branch block dump -----

把健值转化成字符串
select chr(to_number('4d','xx'))||
       chr(to_number('52','xx'))||
       chr(to_number('56','xx'))||
       chr(to_number('5f','xx'))||
       chr(to_number('4f','xx'))||
       chr(to_number('4c','xx'))||
       chr(to_number('41','xx'))||
       chr(to_number('50','xx'))||
       chr(to_number('32','xx'))||
       chr(to_number('5f','xx'))||
       chr(to_number('50','xx')) from dual;

CHR(TO_NUMB
-----------
MRV_OLAP2_P

SQL> select object_name from t where object_name like 'MRV_OLAP2_P%';

OBJECT_NAME
--------------------------------------------------------------------------------
MRV$OLAP2_POP_CUBES
MRV$OLAP2_POP_DIMENSIONS
MRV_OLAP2_POP_CUBES
MRV_OLAP2_POP_DIMENSIONS



查看第一个分支节点
SQL> select dbms_utility.data_block_address_file(4296504) file_id, dbms_utility.data_block_address_block(4296504) block_id from dual;

   FILE_ID   BLOCK_ID
---------- ----------
         1     102200


alter system dump datafile 1 block 102200;

/u01/app/oracle/diag/rdbms/test/test/trace/test_ora_3766.trc
...
Branch block dump
=================
header address 140454403013188=0x7fbe16cc7a44
kdxcolev 1             <<<<<<<<<<<<< level=1
KDXCOLEV Flags = - - -
kdxcolok 0
kdxcoopc 0x80: opcode=0: iot flags=--- is converted=Y
kdxconco 2
kdxcosdc 0
kdxconro 308
kdxcofbo 644=0x284
kdxcofeo 652=0x28c
kdxcoavs 8
kdxbrlmc 4288890=0x41717a   <<<<<<<<<<<<第一个叶子节点
kdxbrsno 0
kdxbrbksz 8056
kdxbr2urrc 0
row#0[8020] dba: 4288891=0x41717b  <<<<<<<<<<<<是从第二个叶子节点开始的,第一个叶子节点的键已经在根节点(上一级分支)处显示了。
col 0; len 24; (24):
 2f 31 30 65 62 35 66 65 66 5f 41 6e 79 4e 6f 64 65 43 6f 75 6e 74 65 72   <<<<<<<<<<<<<<键值
col 1; len 6; (6):  00 41 8c 31 00 39        <<<<<<<<<<<<<<叶子节点的dba
row#1[7978] dba: 4288892=0x41717c
col 0; len 30; (30):
 2f 31 31 66 32 37 39 35 61 5f 44 54 44 47 72 61 6d 6d 61 72 43 68 69 6c 64
 72 65 6e 4c 69
col 1; len 6; (6):  00 41 8b 18 00 07
row#2[7937] dba: 4288893=0x41717d
col 0; len 29; (29):
 2f 31 32 65 32 65 32 38 65 5f 53 6e 6d 70 4d 69 62 54 72 65 65 54 72 65 65
 4e 6f 64 65
col 1; len 6; (6):  00 41 8a 37 00 15
...
...

row0 col1:
select
chr(to_number('2f','xx'))||chr(to_number('31','xx'))||chr(to_number('30','xx'))||chr(to_number('65','xx'))||
chr(to_number('62','xx'))||chr(to_number('35','xx'))||chr(to_number('66','xx'))||chr(to_number('65','xx'))||
chr(to_number('66','xx'))||chr(to_number('5f','xx'))||chr(to_number('41','xx'))||chr(to_number('6e','xx'))||
chr(to_number('79','xx'))||chr(to_number('4e','xx'))||chr(to_number('6f','xx'))||chr(to_number('64','xx'))||
chr(to_number('65','xx'))||chr(to_number('43','xx'))||chr(to_number('6f','xx'))||chr(to_number('75','xx'))||
chr(to_number('6e','xx'))||chr(to_number('74','xx'))||chr(to_number('65','xx'))||chr(to_number('72','xx'))
from dual;

CHR(TO_NUMBER('2F','XX')
------------------------
/10eb5fef_AnyNodeCounter

SQL> select object_name, object_type from t where object_name like '/10eb5fef_AnyNodeCounter%';

OBJECT_NAME                    OBJECT_TYPE
------------------------------ -------------------
/10eb5fef_AnyNodeCounter       JAVA CLASS
/10eb5fef_AnyNodeCounter       SYNONYM




来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26239116/viewspace-2081661/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 共享内存
下一篇: mmap
请登录后发表评论 登录
全部评论

注册时间:2012-11-12

  • 博文量
    94
  • 访问量
    353430