<强>何为LOB ? 强>
LOB为oracle数据库的一个大对象数据类型,可以存储超过4000字节的字符串,二进制数据,OS文件等大对象信息。最大可存储的容量根甲骨文的版本和oracle块大小有关。
<>强有那几种可供选择的LOB类型?强>
目前甲骨文提供了CLOB, NCLOB, BLOB, BFILE共四种LOB类型,CLOB, NLOB为大字符串类型,NLOB为多语言集字符类型、类似于NVARCHAR类型,用他们代替以前的长类型;博客为大二进制类型,用来代替以前的长原始类型;BFILE可存储操作系统中的各种文件。
<>强何为内部LOB,外部LOB ? 强>
内部LOB指的是LOB数据存储在甲骨文的表空间中,CLOB, NCLOB,博客都是内部LOB;而外部LOB指的是LOB数据存储在数据库外部的操作系统文件中,BFIEL是唯一的外部LOBs.BFILE提供了让我们可以在SQL中访问外部文件的方法。
<>强LOB到底能存多大的数据呢?强>
<前> BFILE : Maximum 大小:4,GB , Maximum size of a file 名称:,255,characters , Maximum size of a directory 名称:30 ,,,,,,,,,characters Maximum number of open BFILEs:,, Maximum number of BFILEs is limited by 从而value of ,,,,,,,,,SESSION_MAX_OPEN_FILES initialization 参数,,which is itself limited by 从而maximum number of open ,,,,,,,,,files 从而operating system will 允许。 大小:BLOB: Maximum (4, GB 作用;1),*,DB_BLOCK_SIZE initialization parameter (8, TB 用128年,结核病),,,number of LOB 列 ,,,,,,,,per table is limited only by 从而maximum number of columns per table (that 是,10001)。 大小:CLOB: Maximum (4), GB 作用;1),*,DB_BLOCK_SIZE initialization parameter (8, TB 用128年,结核病),从而number of LOB 列 ,,,,,,,,per table is limited onlyby 从而maximum number of columns per table (that 是,10001)。 NCLOB : Maximum 大小:,(4,GB 作用;1),*,DB_BLOCK_SIZE initialization parameter (8, TB 用128年,结核病),从而number of LOB 列 per 才能table is  limited only by 从而maximum number of columns per table (that 是,10001)。<强> LOB可以用在什么地方?强>
LOB除了可以用在表中定义列的类型外,还可以用来存储XML数据,甲骨文的集合类型,看下面的例子:
1)创建表lobtest (varchar2 (20), b clob, c blob)表空间用户;LOB表的定义
2) LOB存储集合类型
上创建表空间功能大小102464 k autoextend person_lob未来100 m最大容量1024000 k范围管理本地均匀大小1 m段空间管理汽车;
/
改变用户mayp配额无限person_lob;
创建或替换person_att类型是对象(身份证号码(5),名字varchar2(30),性别varchar2(1)、年龄(5,2)数量),
/
创建或替换类型person_atts varray (5) person_att;
/
创建表的人(person_id(5)数量,attribute1 person_atts)
varray attribute1商店LOB person_attribute (
表空间person_lob
中启用存储行
16384
pctversion 5块缓存读
指数person_lob_idx)
表空间用户pctfree 0
/
上面定义了一个用LOB存储varray类型数据的例子。
<>强LOB段有哪些属性?强>
默认情况下,当定义了含有LOB字段的表后,oracle会自动为每个LOB创建两个段,LOB段和LOB索引段。lob段存储了每个lob的具体的值,而lob索引段则存储了每个lob值的地址。lob, lob索引段和表段存储在同一个表空间中.oracle为lob段提供了单独的段属性。我们在创建表时可以定义将lob和表分别存储在不同的表空间中。平常定义lob时,我们必须考虑以下几个比较重要的属性:
<强>块:>强比甲骨文块大小更大的一种逻辑块,专用于lob数据的存储,默认为db_block_size的大小,如果手动定义必须定义为db_block_size的倍数。最大不能超过32 k。不合理的块定义不及浪费存储空间,而且还会影响性能。那么在定义前必须了解应用,每个LOB列的数据的平均大小,尽量减少LOB的空间浪费。看下面的表格能说明一切:
<>之前,,Data Size ,,,,,,,,,,,,,,,,,,,, CHUNK Size ,,, Disk Space Used 用Store 从而LOB , Space 利用率(%) null null null