日期:2014-05-16 浏览次数:20422 次
像Oracle这种关系型数据库,比较擅长处理结构化的数据,那么对于非结构化的数据,Oracle是怎么处理和存储的呢?Lob (Large Object)是Oracle专门用来处理半结构化和非结构化数据,它是一个大对象数据类型,可以存储超过4000字节的字符串、二进制数据。
有两种Lob,非常是Internal Lob和External Lob。所谓Internal Lob是指Lob数据存储在Oracle数据文件里,External Lob是指Lob数据存储在数据库外部的操作系统里。
Internale Lob包括:
1)CLOB (Character Lob):用于存储字符串类型的Lob,如文本和XML文件等,字符串已数据库字符集编码;
2)BLOB (Binary Lob):用于存储二进制类型的Lob;
3)NCLOB (National Character Lob):和CLOB类似,但字符串已国家字符集编码。
External Lob包括:
1)BFILE (Binary File Lob):数据库存储一个执行外部文件的指针,所以它是只读的
SYS@TEST16> create table test.lobtest(b blob,c clob); Table created. SYS@TEST16> select OWNER,TABLE_NAME,COLUMN_NAME,SEGMENT_NAME,INDEX_NAME from dba_lobs where table_name='LOBTEST'; OWNER TABLE_NAME COLUMN_NAME SEGMENT_NAME INDEX_NAME ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ TEST LOBTEST B SYS_LOB0000101291C00001$$ SYS_IL0000101291C00001$$ TEST LOBTEST C SYS_LOB0000101291C00002$$ SYS_IL0000101291C00002$$如上例所示,每个lob字段都对应两个segment,其中存放lob数据的以SYS_LOB开头,存放索引以SYS_IL开头。