AUL 4现阶段对LOB CHUNK的支持情况

    通过试验, 发现LOB的一个CHUNK中的所有块必须是在一个Extent中的, 并且是连续的, 不相信的话你可以试试能不能指定CHUNK的大小的值为大于表的Next Extent的值? 基于这个规律, 在AUL 4中增加了对CHUNK的有限支持. 下面上用于测试的两张表, 只有一个字段, 为CLOB类型, 表中只有有一条记录, 内容相同:

SQL> SELECT TABLE_NAME,COLUMN_NAME,CHUNK FROM USER_LOBS;

TABLE_NAME      COLUMN_NAME       CHUNK
--------------- ------------ ----------
T_CHUNK2        COL1              32768
T_CHUNK1        COL1              16384

    接下来用新增的CHUNK选项指定表中所有LOB的CHUNK大小, 单位是数据块, 默认值是1, 从这儿我们可以看出如果一个表中有多个LOB字段, 且CHUNK大小不一样, AUL 4现在还是不支持的. 下面我们将LOB内容导出成独立的文件:

AUL> set clob_edian big
  Current CLOB_EDIAN is : BIG
AUL> set lob_storage 1
  Current LOB_STORAGE is : 1-FILE
AUL> set lob_convert 1
  Current LOB_CONVERT is : 1-GBK
AUL> unload table anysql.t_chunk1 chunk 2;
2006-12-19 12:58:18
Unload OBJD=9986 FILE=4 BLOCK=5243 CLUSTER=0 ...
LOB_0100147C_1FE8.dat
2006-12-19 12:58:18
AUL> unload table anysql.t_chunk2 chunk 4;
2006-12-19 12:58:25
Unload OBJD=9989 FILE=4 BLOCK=5523 CLUSTER=0 ...
LOB_01001594_1FE8.dat
2006-12-19 12:58:25

    上面的命令生成了两个文件: LOB_0100147C_1FE8.dat和LOB_01001594_1FE8.dat, 下面在OS上看一下文件大小, 并和原始数据进行文本比较:

C:\MYDUL>DIR LOB*
Volume in drive C has no label.
Volume Serial Number is 5CF4-08FE

Directory of C:\MYDUL

2006-12-19  12:58            63,681 LOB_0100147C_1FE8.dat
2006-12-19  12:58            63,681 LOB_01001594_1FE8.dat
               2 File(s)        127,362 bytes
               0 Dir(s)   9,507,389,440 bytes free

C:\MYDUL>diff LOB_0100147C_1FE8.dat c:\anysql\tnsnames.ora

C:\MYDUL>diff LOB_01001594_1FE8.dat c:\anysql\tnsnames.ora

C:\MYDUL>

    希望可以在将来完全解决CHUNK的问题.

留言 (3)

期待ing.

有点缺限会更美, 暂时告一段落了.

除非是有Bug, 否则不动了.

分区表的LOB还不支持, 还是有很多东西没有搞定啊.

发表留言: