首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么JOBHISTORY场的长度是172?

为什么JOBHISTORY场的长度是172?
EN

Database Administration用户
提问于 2017-11-03 04:56:13
回答 1查看 46关注 0票数 0

应该是150。Varray是否在分配额外的空间?

EN

回答 1

Database Administration用户

发布于 2017-11-05 00:23:09

Varray存储varray的总长度和每个元素的长度,所以是的,它需要一些额外的字节。

我不知道关于这个主题的任何公开文件,我也不知道完整的内部陈述,所以下面是一个简单的例子。

代码语言:javascript
复制
create or replace type jobs_done as varray(5) of varchar2(30);
/
create table emp_job_his (empno number(6), jobhistory jobs_done);
insert into emp_job_his values (1, jobs_done(
  'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', 
  'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB', 
  'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC', 
  'DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD', 
  'EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE')
);
commit;
alter system checkpoint;

select
  dbms_rowid.rowid_relative_fno(rowid) as fno,
  dbms_rowid.rowid_block_number(rowid) as block_number
from emp_job_his;

       FNO BLOCK_NUMBER
---------- ------------
         4          134

alter system dump datafile 4 block 134;

垃圾场的相关部分:

代码语言:javascript
复制
col  1: [162]
 88 01 a2 01 01 00 05 1e 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41
 41 41 41 41 41 41 41 41 41 41 41 41 41 1e 42 42 42 42 42 42 42 42 42 42 42
 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 42 1e 43 43 43 43 43
 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43
 1e 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
 44 44 44 44 44 44 1e 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45
 45 45 45 45 45 45 45 45 45 45 45 45

第三个字节,a2,是列的长度,以字节= 162 (col 1: [162])为单位。

第七个字节05是数组= 5中的元素数。

从那以后,每个元素都以长度+数据的形式存储。长度是1e = 30,数据是字母A = 0x41的30倍,依此类推。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/190012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档