翻译:陈拓 chentuo@ms.xab.ac
2006 年 6 月16 日
操纵大对象
Copyright © Oracle Corporation, 2001. All rights reserved.
进度表: 时间 主题
80 分钟 讲演
40 分钟 练习
120 分钟 总共
目标
完成本课程后, 您应当能够:
• 比较和对比 LONG 和大对象 (LOB) 数据类型
• 创建并维护 LOB 数据类型
• 区分内部和外部大对象的区别
• 使用 DBMS_LOB PL/SQL 包
• 说明临时大对象的用途
8­2 Copyright © Oracle Corporation, 2001. All rights reserved.plsql配置oracle主目录
本课目标
数据库有用于存储大对象的 LONG。可是,这种内建于数据库的机制不像在 Oracle8 中新 提供的大对象 (LOB) 数据类型那样好用。本课叙述这种新的数据类型的特性,并与早期的数据 类型进行比较。用例子介绍 LOB 类型的语法和使用。
注:LOB 是一种数据类型,不要与对象类型混淆。
什么是 LOB ?
LOBs用于存储大的非结构化的数据,例如:文本、图
象、电影和声音波形。
8­3 Copyright © Oracle Corporation, 2001. All rights reserved.
概览
一个LOB是一个用于存储象文本、图形图像、视频剪辑等等这样的大的、非结构化数据的 数据类型。结构化的数据象客户的记录可能只有几百个字节,但即使很是少量的多媒体数据可能 就会是几千倍之大。还有,多媒体数据可能驻留在操作系统文件上,这些文件需要从数据库中访 问。
有四种大对象数据类型:
· BLOB 表示二进制大对象,例如一个视频剪辑。
· CLOB 表示一个字符大对象。
· NCLOB 表示一个多字节字符大对象。
· BFILE 表示一个存储在数据库外部的一个操作系统二进制文件。 BFILE 列或属性存储一 个指到外部文件的文件位置。
·
LOBs 按特点分两类,按照它们的被 Oracle 服务器的解释 (二进制或字符) 和它们的存 储方式。LOBs 可以被存储在数据库内部或在主机文件中。有两类 LOBs:
- 内部 LOBs (CLOB, NCLOB, BLOB) 被存储在数据库中。
- 外部文件 (BFILE) 被存储在数据库外部。
Oracle9i 服务器在 CLOB 和 V ARCHAR2 数据类型之间实现隐式转换。其他的在 LOBs 之间的隐式转换是不允许的,例如,如果用户创建一个带有一个 CLOB 列的表 T,和一个带有 一个 BLOB 列的表 S,数据不能直接在这两个列之间传递。
BFILEs 只能以只读模式从一个 Oracle 服务器中被访问。
8­4 Copyright © Oracle Corporation, 2001. All rights reserved.
对比 LONG  和 LOB  数据类型
随即访问数据
顺序访问数据 数据在线或离线存储 数据在线存储
SELECT  返回位置 SELECT  返回数据
最大 4 GB 最大 2 GB
每个表可以有多个 LOB  列 每个表只能有单个 LONG  列
LOB LONG  和 LONG RAW
LONG 和 LOB 数据类型
LONG 和 LONG RAW 数据类型是以前用于非结构化数据的, 例如二进制图像或地理信息, 这些数据类型被 LOB 数据类型取代。Oracle9i 提供一个 LONG­to­LOB API 来从 LONG 列迁 移到 LOB 列。
LOB 的功能与旧类型的对比如下。
LONGs 代表 LONG 和 LONG RAW ,LOBs 代表所有 LOB 数据类型:
- 一个表可以有多个 LOB 列和对象类型属性。一个表只能有一个 LONG 列。
- LONGs 的最大尺寸是 2 GB ;LOBs 可以到 4 GB 。
· LOBs 返回位置;LONGs 返回数据。
· LOBs 在表中存储一个位置和数据在不同的段中, 除非数据小于 4,000 字节; LONGs 在 相同的数据块中存储所有数据。另外,LOBs 允许数据被存储在一个单独的段和表空间 中,或在一个主机文件中。
· LOBs 可以是对象类型属性;LONGs 不能。
· LOBs 通过类似文件接口支持随机分段访问数据;LONGs 受顺序分段访问的限制。 TO_LOB 函数可以被用于转换在列中的 LONG 和 LONG RAW 值到 LOB 值。你可以在 一个 INSERT 语句的子查询的 SELECT 列表中使用它。
8­5 Copyright © Oracle Corporation, 2001. All rights reserved.
一个 LOB 的解剖
LOB  列存储到 LOB  的值的位置
LOB  值 LOB  位置
表的 LOB  列
LOB 的构成
一个 LOB 有两个不同的部分:
· LOB 值:组成被存储的实际对象的数据。
· LOB 位置:一个指针,用于定位存储在数据库中的 LOB 值得位置。
不管是否 LOB 的值被存储在行中, 你都可以认为一个 LOB 定位器是一个指向 LOB 值得 实际位置的指针。
一个 LOB 列不包含数据;它包含 LOB 值的位置。
当一个用户创建一个内部 LOB 时, 存储在 LOB 段中的值和一个指向行外 LOB 值得定位 器被放置在表中相应行的 LOB 列中。
为了不用 SQL DML 访问和操纵 LOBs ,你必须创建一个 LOB 定位器。编程接口操作 LOB 值,用这些定位器以类似操作系统文件方式处理。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。