您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

Oracle 中关于超过253列内部数据的存储

2025/5/5 22:29:10发布30次查看
建表语句declare v_sql varchar2(32767) ;begin v_sql :=
建表语句
declare
  v_sql varchar2(32767) ;
begin
  v_sql := 'create table test ( ' ;
  for i in 1..500 loop
    v_sql := v_sql || 'name'||i||' varchar2(2000) ,' ;
  end loop ;
  v_sql := substr(v_sql,1,length(v_sql)-1) ;
  v_sql := v_sql || ');' ;
  dbms_output.put_line(v_sql) ;
end ;
复制粘贴创建表
_dex@david> desc test
name                                                  null?    type
----------------------------------------------------- -------- ------------------------------------
name1                                                          varchar2(2000)
name2                                                          varchar2(2000)
name3                                                          varchar2(2000)
.....
name500                                                        varchar2(2000)
_dex@david> insert into test (name500) values (lpad(1,300,'d')) ;
1 row created.
_dex@david> select
  2  length(t.name500),
  3  dbms_rowid.rowid_relative_fno(t.rowid) as fno#,
  4  dbms_rowid.rowid_block_number(t.rowid) as blk#,
  5  dbms_rowid.rowid_row_number(t.rowid) as row#
  6  from dex.test t
  7  /
length(t.name500)      fno#      blk#      row#
----------------- ---------- ---------- ----------
              300          4        925          1
                1          4        925          3
              300          4        925          5
使用bbed查看
首先看row#为1长度为300的数据
bbed> set dba 4,925
        dba            0x0100039d (16778141 4,925)
bbed> p kdbr
sb2 kdbr[0]                                @142      7504
sb2 kdbr[1]                                @144      7250
sb2 kdbr[2]                                @146      6991
sb2 kdbr[3]                                @148      6737
sb2 kdbr[4]                                @150      6177
sb2 kdbr[5]                                @152      5923
bbed> p *kdbr[1]
rowdata[1327]
-------------
ub1 rowdata[1327]                          @7374    0x28
bbed> dump /v offset 7374 count 128
file: /u01/apps/oracle/oradata/david/users01.dbf (4)
block: 925    offsets: 7374 to 7501  dba:0x0100039d
-------------------------------------------------------
2801f501 00039d00 00ffffff ffffffff l (.õ.............
ffffffff ffffffff ffffffff ffffffff l ................
ffffffff ffffffff ffffffff ffffffff l ................
ffffffff ffffffff ffffffff ffffffff l ................
ffffffff ffffffff ffffffff ffffffff l ................
ffffffff ffffffff ffffffff ffffffff l ................
ffffffff ffffffff ffffffff ffffffff l ................
ffffffff ffffffff ffffffff ffffffff l ................
这些是row piece header
2801f501 00039d00 00
1个字节的flag=28
16进制28=二进制00101000=--h-f---=head of rowpiece + first data piece
1个字节的lb(itl slot)=01
1个字节的cc column count=f5=245 (因为最后一列name500不为空,所以null都需要使用ff来表示,也就是说需要存储500列的数据)
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product