这是前些日子时候一个客户向我咨询的一个问题,今天空出手来,整理出来与大家分享下。客户发过来的是两张截图,不过为保护客户数据信息安全,因此不便将原图贴出,不过我仍会以最清晰的方式将问题描述清楚。
用户USER_A下有两张表:DATA01_CONTENT和DATA02_CONTENT,并且这两张表均含有一个CLOB数据类型的字段。客户的疑问是表DATA01_CONTENT的大小是141GB,其lob 数据段为17GB;而DATA02_CONTENT表的大小为9GB,而LOB字段大小为31GB。可对比下面两个结果集:
OWNER SEGMENT_NAME USED_MB
———– —————————— ———-
USER_A SYS_LOB0000028519C00002$$ 17,626
USER_A DATA01_CONTENT 141,194
OWNER SEGMENT_NAME USED_MB
———- —————————— ———-
USER_A SYS_LOB0000031872C00005$$ 31,833
USER_A DATA02_CONTENT 9,022
由于之前很少关注LOB相关的内容,更没有深入研究过其原理,所以看一开始看到这种差别时,心里也是非常的奇怪,苦思冥想无解之后,求教了公司资深顾问勇哥,通过勇哥简单描述后,我略有所悟,于是也就查询了相关的文档,求到正解之后,也随即向客户解释了该问题。
我们在创建包含有LOB数据类型的表时,通常都会在STORE AS字句中定义一些关于LOB的参数,比如ENABLE/DISABLE STORAGE IN ROW、CHUNK、PCTVERSION等,这次呢,就着重关注下ENABLE/DISABLE STORAGE IN ROW。
该参数在之前的一篇文章做过一次介绍,请参考:Oracle LOB相关系列一。
如果在STORE AS字句中指定了ENABLE STORAGE IN ROW,那么Oracle将会采用IN ROW的方式存储LOB data,即如果插入的LOB data大小小于3964 byte,那么LOB数据将会存储于LOB列所属表(基表)的数据段中;如果插入的LOB数据大小大于3964 byte,那么LOB数据将会存储于LOB segment中。
而如果在STORE AS字句中指定了DISABLE STORAGE IN ROW,那么Oracle将会采用OUT OF ROW的方式存储LOB data。即不管插入的LOB data是多少byte,Oracle都将LOB data存储到相应的LOB Segment中。
通过查询DATA01_CONTENT和DATA02_CONTENT表中CLOB列存储数据的平均大小,发现DATA02_CONTENT的LOB列中平均每行存储的LOB data大都大于3964 byte(故表DATA02_CONTENT表本身较小而LOB SEGMENT就比较大);而DATA01_CONTENT的LOB列中平均每行存储的LOB data大都小于3964 byte(故表DATA01_CONTENT表本身较大而LOB SEGMENT较小)。
分享到:
相关推荐
关于Clob类型在Hibernate中 的应用小结关于Clob类型在Hibernate中 的应用小结关于Clob类型在Hibernate中 的应用小结关于Clob类型在Hibernate中 的应用小结
大数据量,返回值虽然是CLOB,依然会报错; CLOB变量需要dbms_lob.createtemporary,临时表空间中,建立临时LOB。 大数据量,返回值虽然是CLOB,依然会报错; CLOB变量需要dbms_lob.createtemporary,临时表空间中,...
介绍了利用Hibernate将一个长字符串转换为流存储至Clob字段中,然后再从Clob字段中读出来,转换为字符串输出的方式
java操作oracle clob,基础教程,教你clob在java中的用法,简单易学。
CLOB、BLOB___CLOB与BLOB的区别
向Oracle数据库插入Clob大段文本解决方法
DELPHI的CLOB和BLOB存取处理
数据库中clob类型转换的问题 数据库中clob类型转换的问题
mybatis 对clob类型转换,解决clob类型数据插入数据库报异常问题
JDBC读写Oracle的CLOB字段
clob数据库表结构如下clob数据库表结构如下clob数据库表结构如下
CLOB字段处理 对CLOB进行存取的例子
clob的保存和修改clob的保存和修改clob的保存和修改clob的保存和修改clob的保存和修改
用Hiberate处理CLOB字段 ;通过Hiberate处理CLOB类型的数据;
weblogic下转换oracle 的clob类型经常报转型错误,本例子通过反射解决weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB转型成oracle.sql.CLOB问题
java操作oracle的clob字段,clob字段 添加 修改
Oracle导出Clob,Blob工具 ,支持导出CLob工具版本2,解决上个版本导出时间有问题的bug
把oracle数据库中字段类型为clob的字段值以字符串的形式读取出来
向orcale数据库中插入一个txt格式的文本文档,即clob类型的数据
关于在oracle数据库中读取clob大字段问题