Oracle数据库中的大对象(LOB)数据类型介绍
一、LOB数据类型的介绍
大对象(LOB)数据类型允许我们保存和操作非结构化和半结构化数据,如文档、图形图像、视频片段、声音文件和XML文件等。DMBS_LOB 包被设计用于操作 LOB 数据类型。从 Oracle 12c 开始,根据数据库块大小,LOB 最大可以存储 128TB 的数据,一个表可以有一个或多个 LOB 数据类型的列,如 二进制大对象(BLOB)、字符大对象(CLOB)、国家字符大对象(NCLOB)和BFILE。
重要的是,每当在表中创建 LOB 列时,实际上会创建两个不同的段: LOBSEGMENT 和 LOBINDEX。LOBINDEX 指向存储在对应 LOBSEGMENT 中的 LOB “大块(chunks)”(注:chunk 是一个或多个 Oracle 块。默认的 chunk 大小等于表空间的块大小,最大值是 32KB)。在某些情况下,LOB 可能存储为“内联(inline)”,即存储在表段内,但内联存储通常用于相当小(小于 4000 字节)或为 NULL 的 LOB 数据。在这种情况下,LOB 值将直接存储在表段内。
二、CLOB 、 BLOB、NCLOB和BFILE 之间的区别
BLOB(Binary Large Object):内部二进制大对象,可用来存储无结构的二进制数据。类似于row 和 long row,常用与大图片的存储。可存储的最大大小为 4G 字节。
CLOB(Character Large Object):内部字符大对象,用于存储对应于数据库定义的字符集的单字节字符的大型数据块,不支持宽度不等的字符集。类似于long类型,常用与大文本的存储。可存储的最大大小为 4G 字节。
NCLOB:国家语言字符集大对象,用于存储数据库中的固定宽度单字节或多字节字符的大型数据块,不支持宽度不等的字符集。可存储的最大大小为 4G 字节。
BFILE:外部二进制文件,当大型二进制对象的大小大于 4G 字节时,BFILE 数据类型用于将其存储在数据库外的操作系统文件中;当其大小不足 4G 字节时,则将其存储在数据库内部的操作系统文件中,BFILE 列存储文件定位程序,此定位程序指向服务器上的大型二进制文件。
- 它们都是 Oracle 数据库的大对象(LOB)数据类型,Oracle 提供专门的包对其操作。
- BLOB、CLOB、NCLOB 这三种大对象(LOB),用来保存较大的图形文件或带格式的文本文件,如 Microsoft Word 文档,以及音频、视频等非文本文件,最大长度是 4GB。
LOB 有几种类型,取决于您使用的字节的类型,Oracle 8i 实实在在地讲这些数据存储在数据库内部保存。可以执行读取、存储、写入等特殊操作。
三、参考网络上的其他分析(BLOB、CLOB和NCLOB之间的主要区别)
(1)指代不同
- BLOB:是指图像中的一块连通区域,BLOB分析就是对前景/背景分离后的二值图像。
- CLOB:是内置类型,将字符大对象(Character Large Object)存储为数据库表某一行中的一个列值。
- NCLOB:长度可变的字符大对象。
(2)特点不同
- BLOB:对运动目标在图像平面上的轨迹进行估计的问题。
- CLOB:CLOB对象包含一个指向 SQL CLOB 数据的逻辑指针而不是数据本身。CLOB对象在被创建的事务处理期间有效。
- NCLOB:大小可变的CLOB对象,指向 SQL CLOB 数据的逻辑指针。

(3)数据保存方式不同
- BLOB:使用二进制保存数据。
- CLOB:使用 CHAR 来保存数据。
- NCLOB:使用 NCHAR 来保存数据。
Oracle数据库中的大对象(LOB)数据类型介绍的更多相关文章
- Oracle数据库中的重要对象
数据库中的重要对象:表.视图.序列.函数.存储过程.索引.同义词1.表:用PL/SQL Developer 软件打开 Scott的DEPT表查看SQL,可以看见DEPT表创建的脚本-- Create ...
- Mysql 数据库中9大对象
MySql 数据库9中对象1.表2.索引3.视图4.图表:数据库表之间的关系视图,并不常用5.规则6.缺省值:数据列的默认值7.触发器8.存储过程9.用户
- Oracle数据库中实现mysql数据库中auto-increment功能
在Mysql数据库中,想要实现一条数据的自增一功能(即插入此数据时填写null即可,系统自动+1),可直接在所在列使用语句auto-increment. id int primary key auto ...
- 详解大数据采集引擎之Sqoop&采集oracle数据库中的数据
一.Sqoop的简介: Sqoop是一个数据采集引擎/数据交换引擎,采集关系型数据库(RDBMS)中的数据,主要用于在RDBMS与HDFS/Hive/HBase之间进行数据传递,可以通过sqoop i ...
- Statement和PreparedStatement的特点 MySQL数据库分页 存取大对象 批处理 获取数据库主键值
1 Statement和PreparedStatement的特点 a)对于创建和删除表或数据库,我们可以使用executeUpdate(),该方法返回0,表示未影向表中任何记录 b)对于创建和 ...
- ORACLE数据库中执行计划出现INTERNAL_FUNCTION一定是隐式转换吗?
ORACLE数据库中,我们会使用一些SQL语句找出存在隐式转换的问题SQL,其中网上流传的一个SQL语句如下,查询V$SQL_PLAN的字段FILTER_PREDICATES中是否存在INTERNAL ...
- Oracle数据库中调用Java类开发存储过程、函数的方法
Oracle数据库中调用Java类开发存储过程.函数的方法 时间:2014年12月24日 浏览:5538次 oracle数据库的开发非常灵活,不仅支持最基本的SQL,而且还提供了独有的PL/SQL, ...
- 查找Oracle数据库中的重复记录
本文介绍了几种快速查找ORACLE数据库中的重复记录的方法. 下面以表table_name为例,介绍三种不同的方法来确定库表中重复的记录 方法1:利用分组函数查找表中的重复行:按照某个字段分组,找出行 ...
- oracle 数据库中(创建、解锁、授权、删除)用户
上文我们已经建立了名为orcl66的数据库. 想要在数据库中创建.修改用户需要我们以管理员权限登录到数据库中. 首先我们通过sqlplus命令登录连接数据库. 输入sqlplus命令--用户名: sy ...
随机推荐
- Spine学习七 - spine动画资源+ Unity Mecanim动画系统
前面已经讲过 Spine自己动画状态机的动画融合,但是万一有哥们就是想要使用Unity的动画系统,那有没有办法呢?答案是肯定的,接下来,就说说如何实现: 1. 在project面板找打你导入的Spin ...
- Java8 日期和时间类
新的日期和时间API 新的日期和时间类解决了Date和Calendar类出现的问题 浅尝 LocalDate 日期类 LocalDate of = LocalDate.of(2018, 7, 13); ...
- 跟着兄弟连系统学习Linux-【day06】
day06-20200603 p21.用户管理命令 [useradd 用户名]添加用户 [passwd 用户名] 设置密码
- Java得到指定日期的时间
//得到指定日期(几天前/几天后)整数往后推,负数往前移动private Date getAppointDay(int num) throws ParseException { DateFormat ...
- 【新阁教育】基于Log4Net实现日志信息双向存储(含源码)
1.引言 在上位机开发中,日志记录是必不可少的,我们可以通过日志记录做日志分析及错误追踪.初学者会采用txt文本写入来实现日志保存,但是文本写入不是线程安全,当存在多个线程同时写入日志时,就会出现一些 ...
- 搭建MQTT学习平台
关于MQTT协议的介绍就不赘述了,网上资料非常多,直接入正题. MQTT协议的实现非常多,我选择了一个非常轻量级的开源项目来学习MQTT协议——mosquitto,官网:www.mosquitto.o ...
- 用华为HMS ML kit人体骨骼识别技术,Android快速实现人体姿势动作抓拍
你有没有过这种体验,拍照时对着镜头,脑子一片空白.表情僵硬.手和脚无处安放,最后拍出来的照片很是奇怪.拍照软件中的固定姿势抓拍功能可以帮助你:选择一个你想要的姿势模板,当你摆出同款姿势时,软件会进 ...
- 【征文活动】为自己发“声” —— 声网RTC征文大赛在园子里征稿
2020年8月20日,声网Agora入驻园子的新楼盘--博客园品牌专区.9月,我们与声网Agora再度合作,「为自己发"声"- RTC 征文大赛」在园子里征稿. RTC(Real- ...
- 强大的 Node.js Web 框架 - Daze.js
去年年初对 Node.js 比较感兴趣,也用了很多 Node.js 的框架,但是开发体验不是特别好,我之前也是后端转前端,然后再接触 Node.js ,所以用过挺多的服务端框架,相对js而言,设计一款 ...
- 执行引擎(Execution Engine)基础知识
概述 执行引擎是Java虚拟机的核心组成部分之一 虚拟机是一个相对于"物理机"的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器.缓存.指令集和操作系统 ...