设为首页 收藏本站
查看: 761|回复: 0

[经验分享] oracle B*Tree索引的理解 续

[复制链接]

尚未签到

发表于 2016-8-10 07:48:24 | 显示全部楼层 |阅读模式
1 转储索引块信息解释  1.1 通用索引块头
  kdxcolev: index level (0 represents leaf blocks) 索引级别,0表示是叶子块
  kdxcolok: denotes whether structural block transaction is occurring标示结构块事块是否发生;
  kdxcoopc: internal operation code内部操作码
  kdxconco: index column count索引列数量,包括ROWID
  kdxcosdc: count of index structural changes involving block块中索引结构改变的数量
  kdxconro: number of index entries (does not include kdxbrlmc pointer) 索引条目的数量,不包括kdxbrlmc指针
  kdxcofbo: offset to beginning of free space within block块中空闲空间的开始位置
  kdxcofeo: offset to the end of free space (ie. first portion of block containing index data) 块中空闲空间的结束位置
  kdxcoavs: available space in block (effectively area between the two fields above) 块中的可用空间数量(kdxcofbo-kdxcofeo)
  1.2 分支头区域
  kdxbrlmc:如果索引值小于第一个值(row#0),则为该索引值所在的块地址;
  kdxbrsno:最后更改的索引条目;
  kdxbrbksz:可使用的块空间。
  1.3 叶块头区域
  kdxlespl:块拆分时被清除的未提交数据的字节数;
  kdxlende:被删除的条目数;
  kdxlenxt:下一个叶块的RBA;
  kdxleprv:上一个叶块的RBA;
  kdxlebksz:可使用的块空间(默认小于分支的可用空间)。
  2 使用treedump
  今天一位CSDN的网友告诉我,可以treedump使用更方便的查看索引的结构。基于原来的例子,继续学习一下。
  2.1 实验
  SQL> select object_id from dba_objects where object_name = 'TI';
  OBJECT_ID
  ----------
   53432
  SQL> alter session set events 'immediate trace name TREEDUMP level 53432';
  Session altered
  2.2 查看转储文件
  ----- begin tree dump
  branch: 0x280000c 41943052 (0: nrow: 3, level: 1) 对应块12
   leaf: 0x280000d 41943053 (-1: nrow: 6 rrow: 6) 对应块13,6行数据(1,10,2,3,31,41)
   leaf: 0x280000f 41943055 (0: nrow: 2 rrow: 2) 对应块15,2行数据(5,6)
   leaf: 0x280000e 41943054 (1: nrow: 1 rrow: 1) 对应块14,1行数据(7)
  ----- end tree dump
  nrow:索引条目的数量(包含delete项);
  rrow:当前块中的索引条目数量(不包含delete项);
  level:分支块等级(分支块为1,叶块为0)。
  2.3 分析leaf信息
  0280000F的十进制数是41943055。
  SQL> select to_number('0280000F', 'XXXXXXXX') DECNUM from dual;
   DECNUM
  ----------
   41943055
  从leaf后的值得到FILE#,BLOCK#。
  SQL> select dbms_utility.data_block_address_file(to_number('0280000F', 'xxxxxxxx')) file#,
   2 dbms_utility.data_block_address_block(to_number('0280000F', 'xxxxxxxx')) block#
   3 from dual;
   FILE# BLOCK#
  ---------- ----------
   10 15
  3 转储branch块,与上面结论比较
  branch块:12
  leaf块:13,14,15
  SQL> alter system dump datafile 10 block 12;
  System altered
  
  row#0[8042] dba: 41943055=0x280000f文件号10,块号15
  col 0; len 1; (1): 35 此块中的最小的key值5
  col 1; TERM
  row#1[8049] dba: 41943054=0x280000e文件号10,块号14
  col 0; len 1; (1): 37此块中的最小的key值7
  col 1; TERM
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-255743-1-1.html 上篇帖子: oracle 数据备份导入imp导出exp 下篇帖子: oracle B*Tree索引的理解
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表