ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle LOB

Oracle LOB

原创 Linux操作系统 作者:tolywang 时间:2008-09-18 17:41:21 0 删除 编辑

 

在 Oracle9i Release 2 之前,LOB 最多只能存储 4G 数据;从Oracle10g Release 1 开始,可以存储 8-128T 的数据,取决于你的数据库的块大小。

 

PL/SQL中你可以定义如下的 LOB 字段类型:

(1)BFILE:二进制文件。定义一个 BFILE 变量,它指向操作系统的一个文件,Oracle会将其视为二进制数据进行处理。该文件存储于数据库外。

(2)BLOB:二进制大对象。定义一个 BLOB 变量,它指向一个二进制大对象的位置。该二进制大对象存储于数据库中。

(3)CLOB:字符型大对象。定义一个 CLOB 变量,该字符型大对象存储于数据库中。

(4)NCLOB:National Language Support (NLS) character large object. Declares a variable that holds a LOB locator pointing to a large block of single-byte, fixed-width multibyte, or variable-width multibyte character data stored inside the database. 用来存储多字节的字符数据(定宽的多字节国家字符集数据)。

存储于 Oracle 数据库内的大字段类型(如blob,clob,nclob等),可以参与 Oracle 的事务处理。而存储于数据库外的大字段类型(如bfile)则不能参与 Oracle 的事务处理,不能被提交和回滚,只能依据文件系统来保证数据的完整性。

至于LONG和LONG RAW,Oracle已经不推荐使用了。它们的存在,只是为了向前兼容。你应该从LONG 转向BLOG和CLOB, 如果你的系统中存在 LOGN 类型的字段,可以参考《Application Developer''s Guide》中的Large Objects 将 LONG 字段转为 LOB 字段。

 

1、LONG和LOB的比较 

LONG/LONG RAW       LOB 

--------------------------------------------------------- 

表中只能有一个列        可以有多列 

最大2G                 最大4G(10g更大) 

SELECT返回值          SELECT返回指针 

存放在DB内            可以在DB内或者外 

不支持OBJECT类型     支持 

顺序存取                随机存取 

---------------------------------------------------------- 

备注: NCLOB不支持OBJECT类型 

LOB小于4000字节时是内部存放 

 

 

2、LOB解析   

LOB有两个不同的部分 

- LOB值:  LOB代表的数据 

- LOB指针:LOB存放数据的位置 

LOB列内部不存放数据,而是LOB值的位置。当创建内部LOB时,值存放在LOB SEGMENT中,指向OUT-OF-LIN数据的指针放在列中。对外部LOB,只在列中存放位置。 

比如下面的建表中BLOB字段指针存放在PDM_DATA字段中,但是真正的LOB值(二进制文件内容)存放在用户定义LOB_TS表空间的LOB SEGMENT中 :

 

 

 

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/35489/viewspace-448910/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    14690001