免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1965 | 回复: 0
打印 上一主题 下一主题

关于ora-1652的一点总结–续(详解rowid,index entry header) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-03 00:23 |只看该作者 |倒序浏览
在上一篇关于ora-1652的一点总结中,有部分内容并未给出一个最终的结论,详见如下连接: http://www.killdb.com/2011/09/30 ... 80%bb%e7%bb%93.html 在本文中,对上篇文章中的疑问进行的详细的实验说明和解释,实验过程如下:
SQL> conn roger/roger
Connected.
SQL> create table ht1 as select * from sys.dba_objects where rownum <1000; Table created. SQL> create index idx_ht1 on ht1(object_id) tablespace roger; Index created.
SQL> select dump(object_id) from ht1 where object_id <20 order by object_id; DUMP(OBJECT_ID)
--------------------------
Typ=2 Len=2: 193,3
Typ=2 Len=2: 193,4
Typ=2 Len=2: 193,5
Typ=2 Len=2: 193,6
Typ=2 Len=2: 193,7
Typ=2 Len=2: 193,8
Typ=2 Len=2: 193,9
Typ=2 Len=2: 193,10
Typ=2 Len=2: 193,11
Typ=2 Len=2: 193,12
Typ=2 Len=2: 193,13 DUMP(OBJECT_ID)
--------------------------
Typ=2 Len=2: 193,14
Typ=2 Len=2: 193,15
Typ=2 Len=2: 193,16
Typ=2 Len=2: 193,17
Typ=2 Len=2: 193,18
Typ=2 Len=2: 193,19
Typ=2 Len=2: 193,20 18 rows selected.
SQL> select dump(object_id)
2    from ht1
3   where object_id > 500
4     and object_id < 510
5   order by object_id; DUMP(OBJECT_ID)
----------------------------------------
Typ=2 Len=3: 194,6,2
Typ=2 Len=3: 194,6,3
Typ=2 Len=3: 194,6,4
Typ=2 Len=3: 194,6,5
Typ=2 Len=3: 194,6,6
Typ=2 Len=3: 194,6,7
Typ=2 Len=3: 194,6,8
Typ=2 Len=3: 194,6,9
Typ=2 Len=3: 194,6,10 9 rows selected. SQL>
我们可以发现,该字段object_id有些是2个字节,有些是3个字节,那么我们应该以2还是3为准呢?
我想应该以该列的平均长度为准,通过分析该表,得到该列的平均长度。
SQL> analyze table ht1 compute statistics for table for all indexes for all columns; Table analyzed.
SQL> select table_name,COLUMN_NAME,DATA_LENGTH,AVG_COL_LEN,CHAR_LENGTH,CHAR_USED from user_tab_columns
2  where table_name='HT1'; TABLE_NAME     COLUMN_NAME        DATA_LENGTH AVG_COL_LEN CHAR_LENGTH C
-------------  -----------------  ----------- ----------- ----------- -
HT1            OWNER                       30           4          30 B
HT1            OBJECT_NAME                128          14         128 B
HT1            SUBOBJECT_NAME              30           1          30 B
HT1            OBJECT_ID                   22           3           0
HT1            DATA_OBJECT_ID              22           3           0
HT1            OBJECT_TYPE                 19           6          19 B
HT1            CREATED                      7           7           0
HT1            LAST_DDL_TIME                7           7           0
HT1            TIMESTAMP                   19          19          19 B
HT1            STATUS                       7           5           7 B
HT1            TEMPORARY                    1           1           1 B

TABLE_NAME     COLUMN_NAME        DATA_LENGTH AVG_COL_LEN CHAR_LENGTH C
-------------  -----------------  ----------- ----------- ----------- -
HT1            GENERATED                    1           1           1 B
HT1            SECONDARY                    1           1           1 B

13 rows selected. SQL> ---从这里得到object_id平均列长度为3. 下面我们再来看rowid是占据多数个字节。

全文请看原文博客链接,如下地址:

http://www.killdb.com/2011/10/02 ... x-entry-header.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP