【发布时间】:2013-08-02 13:56:09
【问题描述】:
我遇到了 Oracle LOB 的一个非常奇怪的行为。
情况:我们对包含 CLOB 列的 IOT 进行了分区。 CLOB 具有单独的 LOB 存储设置,带有 LOGGING RETENTION 和 DISABLE IN ROW STORAGE 选项。 CHUNK 大小为 8192 字节。 PCTFREE 设置为默认值(dba_tables 中为空)。
现在,我们需要创建一个加载了一定数量的CLOBs 的测试用例。我们选择了 19.5KB CLOB。加载此CLOB 4000 万次后(用于性能测试,与内容无关) - 文件系统和dba_data_files 中的大小为 1230GB。
问题:
我们估计大小为 4000 万。 CLOBs 大小为 19.5KB 到 ~780GB。我们是如何获得 450GB 以上的?我猜它与CHUNK 大小有关——19.5KB 将使用 3 个CHUNKs,因此大小为 24KB,但仍然只有 960GB。 LOB 索引约为 2GB。
有人有想法吗?(抱歉解释不佳)(P.S.运行 ORACLE 11g)
提前谢谢你!
【问题讨论】:
-
将此额外的 28% 视为使用 Oracle 支付的税款。 :-)
-
数据文件中可能有其他内容。根据 DBA_SEGMENTS 的大小是多少?
-
你的块大小是多少?如果是 16k,那么这些数字看起来应该是正确的(每行两个 16k 块)。
-
嗨,DBA_SEGMENTS 显示完全相同的大小。块大小为 8KB
-
出现另一个问题 - 我查看了 CLOB 的长度,它是 15760 个字符。数据库采用 UTF8 格式,因此每个字符使用 2 个字节。因此,CLOB 是否只是存储为 VARCHAR/CHAR 的外推?数字将适合这种方式。我可能在这里错了。
标签: oracle oracle11g clob database-administration lob