我遇到了一个非常奇怪的Oracle LOB
行为。
情况:我们已对包含CLOB
列的IOT进行了分区。 CLOB
已设置单独的LOB
存储设置LOGGING RETENTION
和DISABLE IN ROW STORAGE
选项。 CHUNK
大小为8192bytes。 PCTFREE
设置为默认值(dba_tables
中为null)。
现在,我们需要创建一个加载了一定量CLOB
的测试用例。我们选择了19.5KB CLOB
。加载此CLOB
4000万次(用于执行测试,与内容无关) - 文件系统和dba_data_files
中的大小为1230GB。
问题:
我们估计大小为40mil。 CLOB
的大小为19.5KB到~780GB。我们如何获得450GB以上?我猜它与CHUNK
大小有关 - 19.5KB会使用3 CHUNK
s,因此大小为24KB,仍然只有960GB。 LOB
索引大约为2GB。
有没有人有想法?(对不起解释很抱歉)(P.S。运行ORACLE 11g)
提前谢谢!
答案 0 :(得分:1)
您的评论是正确的:"Data in CLOB columns is stored in a format that is compatible with UCS-2 when the database character set is multibyte, such as UTF8 or AL32UTF8"。 虽然我不会说这只是VARCHAR2的推断。 UTF8是一个变宽的字符集,并不总是需要2个字节。
15760个字符是31520个字节,只能容纳4个块,32768个字节。 32768 * 40000000/1024/1024/1024 = 1220GB。哪个不完美 匹配你的结果,但非常接近。我们需要看一些更详细的数字来寻找完美的匹配。