设为首页 加入收藏

TOP

Oracle索引的dumpleafblock(五)
2015-11-21 02:02:52 来源: 作者: 【 】 浏览:3
Tags:Oracle 索引 dumpleafblock
rrow: 296) leaf: 0x10015c2 16782786 (171: nrow: 296 rrow: 296) leaf: 0x10015c3 16782787 (172: nrow: 300 rrow: 300) leaf: 0x10015c4 16782788 (173: nrow: 298 rrow: 298) leaf: 0x10015c5 16782789 (174: nrow: 293 rrow: 293) leaf: 0x10015c6 16782790 (175: nrow: 301 rrow: 301) leaf: 0x10015c7 16782791 (176: nrow: 1 rrow: 1) ----- end tree dump


06:56:42 sys@FS> execute :file#:=dbms_utility.data_block_address_file(to_number('100150f','xxxxxxxxx'));

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.00
06:57:09 sys@FS> execute :block#:=dbms_utility.data_block_address_block(to_number('100150f','xxxxxxxxx'));

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.00
06:57:21 sys@FS> print file#

     FILE#
----------
         4

06:57:27 sys@FS>  print block#

    BLOCK#
----------
      5391



退出sqlplus,并再次进入sqlplus(为的是能生成在一个新的trc中)

F:\oracle\product\10.2.0\db_1\BIN>sqlplus / as sysdba

SQL*Plus: Release 10.2.0.4.0 - Production on Thu Apr 9 06:59:56 2015

Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options


06:59:57 sys@FS> alter system dump datafile 4 block 5391;

System altered.

Elapsed: 00:00:00.14
07:00:00 sys@FS>



在udump下获得trc文件:该文件有1600多行,因此不全部列出。以“Leaf block dump”为关键字搜索该文件:

Leaf block dump
===============
header address 128074340=0x7a24264
kdxcolev 0
KDXCOLEV Flags = - - -
kdxcolok 0
kdxcoopc 0x80: opcode=0: iot flags=--- is converted=Y
kdxconco 3
kdxcosdc 0
kdxconro 288
kdxcofbo 612=0x264
kdxcofeo 1442=0x5a2
kdxcoavs 830
kdxlespl 0
kdxlende 0
kdxlenxt 16782608=0x1001510
kdxleprv 16782606=0x100150e
kdxledsz 0
kdxlebksz 8036
row#0[8013] flag: ------, lock: 0, len=23
col 0; len 5; (5):  31 30 36 31 31 -------------->这是索引列的值
col 1; len 7; (7):  78 73 04 08 0f 3c 19--------->这是索引列的值
col 2; len 6; (6):  01 00 14 26 01 66------------>这是16进制的rowid 
row#1[7990] flag: ------, lock: 0, len=23
col 0; len 5; (5):  31 30 36 31 32
col 1; len 7; (7):  78 73 04 08 0f 3c 19
col 2; len 6; (6):  01 00 14 26 01 67
row#2[7967] flag: ------, lock: 0, len=23
col 0; len 5; (5):  31 30 36 31 33
col 1; len 7; (7):  78 73 04 08 0f 3c 19
col 2; len 6; (6):  01 00 14 26 01 68
row#3[7944] flag: ------, lock: 0, len=23
col 0; len 5; (5):  31 30 36 31 34
col 1; len 7; (7):  78 73 04 08 0f 3c 19
col 2; len 6; (6):  01 00 14 26 01 69

.....................................

row#287[1442] flag: ------, lock: 0, len=23
col 0; len 5; (5):  31 30 38 37 30
col 1; len 7; (7):  78 73 04 08 0f 3c 19
col 2; len 6; (6):  01 00 14 27 00 eb
----- end of leaf block dump -----
End dump data blocks tsn: 4 file#: 4 minblk 5391 maxblk 5391



下面来分析16进制的rowid:

01 00 14 26 01 66  --->这是16进制

00000001 00000000 00010100 00100110 00000001 01100110  --->这是换算成2进制后的(对01用calc.exe换算,对00用calc.exe换算,对14用calc.exe换算,等等)

00000001 00 ---->文件号 :4 ------------------------------------->4是换算成10进制后的值(使用calc.exe换算)
           000000 00010100 00100110 ----->块号 :5158 ------------------------->5158是换算成10进制后的值(使用calc.exe换算)
                                    00000001 01100110   ---->行号:358 ------------->358是是换算成10进制后的值(使用calc.exe换算)

 

前十位表示文件号
中间22位表示块号 
最后16位表示行号



下面来分析2个索引值:

col 0; len 5; (5):  31 30 36 31 31 -------------->这是索引列的值
col 1; len 7; (7):  78 73 04 08 0f 3c 19--------->这是索引列的值

使用函数f_get_from_dump将上述值转换 (该函数来自travel大师:http://www.traveldba.com/wp-content/uploads/scripts/f_get_from_dump.sql)

首页 上一页 2 3 4 5 下一页 尾页 5/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Oracle中setserveroutputon介绍 下一篇玩转oracle学习第七天

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: