Oracle | 大对象(LOB)数据类型

       版本说明:Oracle 11g

       今天再次与BLOB、CLOB相逢,此前没有详细的去文档查看,现将文档Oracle Database SQL Language ReferenceLOB部分的内容整理如下。


       Large Object (LOB) Data Types

       内置的LOB数据类型BLOBCLOBNCLOB(内部存储)和BFILE(外部存储)可以存储大量的、非结构化的数据,例如文本,图像,视频,数据和空间数据。BLOBCLOB以及NCLOB数据可高达(2^32 -1个字节)*(LOB存储的参数CHUNK的值)。如果数据库中的表空间是标准块大小,并且在创建LOB列时CHUNK使用了LOB存储参数的缺省值,那么这相当于(2^32 -1字节)*(数据库块大小) 。尽管您的操作系统可能会对此最大值加以限制,但BFILE数据最多可达2^64个字节。

       在创建表时,您可以选择为LOB列或LOB对象属性指定不同的表空间和存储特性,以及为表指定的属性。

       如果您在创建LOB列时启用行存储,那么CLOB、NCLOB和BLOB值最多内联存储4000个字节。大于4000字节的LOB始终存储在外部。有关更多信息,请参阅ENABLE STORAGE IN ROW

       LOB列包含可以引用内部(数据库中)或外部(数据库外)LOB值的LOB定位器。从表中选择LOB实际上返回LOB定位器,而不是整个LOB值。在lob上的DBMS_LOB包和Oracle Call Interface (OCI)操作是通过这些定位器执行的。

       LOB类似于LONGLONG RAW类型,但在以下方面有所不同:

  • LOB可以是对象类型(用户定义的数据类型)的属性。

  • LOB定位器存储在表列中,包含或不包含实际的LOB值。BLOB、NCLOB和CLOB值可以存储在单独的表空间中。BFILE数据存储在服务器上的一个外部文件中。

  • 访问LOB列时,将返回定位器。

  • LOB的大小可以达到(2^32-1字节)*(数据库块大小)。BFILE数据最多可达2^64-1字节,不过您的操作系统可能会对这个最大值加以限制。

  • LOB允许高效,随机,分段访问和操纵数据。

  • 您可以在表中定义多个LOB列。

  • 除了之外NCLOB,您可以在对象中定义一个或多个LOB属性。

  • 您可以声明LOB绑定变量。

  • 您可以选择LOB列和LOB属性。

  • 您可以插入新行或更新包含一个或多个LOB列的现有行或具有一个或多个LOB属性的对象。在更新操作中,您可以将内部LOB值设置为NULL,清空或用数据替换整个LOB。您可以设置BFILENULL或使其指向不同的文件。

  • 您可以使用另一个LOB行列交集或LOB属性更新LOB行列交集或LOB属性。

  • 您可以删除包含LOB列或LOB属性的行,从而也删除LOB值。对于BFILE,不删除实际的操作系统文件。

       只需发出INSERT或UPDATE语句,就可以访问和填充内联LOB列(存储在数据库中的LOB列)或LOB属性(存储在数据库中的对象类型列的属性)的行。

LOB列的限制  

       LOB列受许多规则和限制的约束。有关完整列表,请参阅Oracle Database SecureFiles和Large Objects Developer's Guide

      也可以参考:

BFILE数据类型

       BFILE数据类型允许访问存储在Oracle数据库外部文件系统中的二进制文件lob。BFILE列或属性存储BFILE定位器,该定位器用作指向服务器文件系统上二进制文件的指针。定位器维护目录名和文件名。

       可以使用BFILENAME函数更改BFILE的文件名和路径,而不影响基表。有关此内置SQL函数的更多信息,请参阅BFILENAME

       二进制文件lob不参与事务,并且不可恢复。相反,底层操作系统提供文件完整性和持久性。BFILE数据最多可达2^64-1字节,不过您的操作系统可能会对这个最大值施加限制。

       数据库管理员必须确保外部文件存在,并且Oracle进程对该文件具有操作系统读取权限。

       BFILE数据类型启用对大型二进制文件的只读支持。您不能修改或复制这样的文件。Oracle提供api来访问文件数据。用于访问文件数据的主要接口是DBMS_LOB包和Oracle调用接口(OCI)。

       也可以参考:

       有关LOB和 CREATE DIRECTORY的更多信息,请参见 Oracle Database SecureFiles和Large Objects Developer's Guide and Oracle Call Interface Programmer's Guide

BLOB数据类型

        BLOB数据类型存储非结构化的二进制大对象。BLOB对象可以看作没有字符集语义的位流。BLOB对象可以存储最多(4 gigabytes -1) * (LOB存储的CHUNK参数值)的二进制数据。如果数据库中的表空间是标准块大小,并且在创建LOB列时使用了LOB storage的CHUNK参数的默认值,那么这相当于(4 gigabytes -1) *(数据库块大小)。

       BLOB对象支持完整的事务。通过SQL、DBMS_LOB包或Oracle调用接口(OCI)所做的更改将完全参与事务。可以提交和回滚BLOB值操作。但是,不能在一个事务中将BLOB定位器保存在PL/SQL或OCI变量中,然后在另一个事务或会话中使用它。

CLOB数据类型

        CLOB数据类型存储单字节和多字节字符数据。支持固定宽度和可变宽度字符集,并且都使用数据库字符集。CLOB对象可以存储最多(4 gigabytes -1) * (LOB存储的CHUNK参数的值)的字符数据。如果数据库中的表空间是标准块大小,并且在创建LOB列时使用了LOB存储的CHUNK参数的默认值,那么这相当于(4 gigabytes -1) *(数据库块大小)。

        CLOB对象支持完整的事务。通过SQL、DBMS_LOB包或Oracle调用接口(OCI)所做的更改将完全参与事务。可以提交和回滚CLOB值操作。但是,不能在一个事务中将CLOB定位器保存在PL/SQL或OCI变量中,然后在另一个事务或会话中使用它。

NCLOB数据类型

        NCLOB数据类型存储Unicode数据。支持固定宽度和可变宽度字符集,并且都使用国家字符集。NCLOB对象可以存储最多(4 gigabytes -1) * (LOB存储的CHUNK参数值)的字符文本数据。如果数据库中的表空间是标准块大小,并且在创建LOB列时使用了LOB存储的CHUNK参数的默认值,那么这相当于(4 gigabytes -1) *(数据库块大小)。

        NCLOB对象支持的事务。通过SQL、DBMS_LOB包或OCI所做的更改完全参与事务。可以提交和回滚NCLOB值操作。但是,您不能在一个事务中将NCLOB定位器保存在PL/SQL或OCI变量中,然后在另一个事务或会话中使用它。

参考资料

       Oracle Database SQL Language Reference

 

Tank

2019.7.29

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据类型: 1、CHAR数据类型,该类型是固定长度的字符串,如果没指定大小,则默认占用一字节,如果输入的小于指定的长度,则数据库用空格填充至固定长度,如果用户输入的大于指定的长度,则数据库返回错误信息 2、varchar2,用于存储可变长度的字符串,使用该数据类型可节省磁盘空间,但存储效率没有CHAR高 3、NCHAR和nvarchar2,NCHAR和CHAR区别在于NCHAR用来存储Unicode字符集类型,即双字节字符数据,CHAR是一个字节,而NCAHR是一个字符(两个字节),前者是CHAR(1)无法插入‘的’,后者是NCHAR(1)可以插入‘的’ 4、NUMBER示数数据类型,NUMBER(P,S),P为精度,示数据的总位数,S为范围,示小数点右边数字的位数 5、DATE数据类型,使用7个字节固定长度,每个字节分别存储世纪,年,月,日 ,时,分,秒,ORACLE中SYSDATE函数的功能是返回当前的日期和时间 6、TIMESTAMP数据类型,和DATE相似,但是这个类型的秒精确到小数点后6位,而DATE没有秒的小数部分 7、LOB数据类型用于存储大型的,没有被结构化的数据,例如二进制文件,图片文件,LOB主要分为BLOB和CLOBBLOB数据类型用于存储二进制对象:图像,音频,视频...CLOB数据类型用于存储字符格式的大型对象 8、ORACLE其实也支持INTEGER,FLOAT,DOUBLE,VARCHAR,最好用ORACLE自身的NUMBER 和 VARCHAR2

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值