在ORACLE数据库中,DBA_OBJECTS视图中OBJECT_TYPE为LOB的对象是什么东西呢?其实OBJECT_TYPE为LOB就是大对象(LOB),它指那些用来存储大量数据的数据库字段。

Oracle 11gR2 文档:

一、LOB 分类

LOB大对象主要是用来存储大量数据的数据库字段,在Oracle 9iR2 中LOB的最大容量是4G,Oracle 10g 最大8T,Oracle 11g 最大是128T。具体取决于blocksize 的大小。

The built-in LOB data types BLOB, CLOB, and NCLOB (stored internally) and BFILE (stored externally) can store large and unstructured data such as text, image, video, and spatial data. The size of BLOB, CLOB, and NCLOB data can be up to (232-1 bytes) * (the value of the CHUNK parameter of LOB storage).

1. Oracle 支持4 种类型的LOB:

CLOB:字符LOB。这种类型用于存储大量的文本信息,如XML 或者只是纯文本。这个数据类型需要进行字符集转换,也就是说,在获取时,这个字段中的字符会从数据库的字符集转换为客户的字符集,而在修改时会从客户的字符集转换为数据库的字符集。

NCLOB:这是另一种类型的字符LOB。存储在这一列中的数据所采用的字符集是数据库的国家字符集,而不是数据库的默认字符集。

BLOB:二进制LOB。这种类型用于存储大量的二进制信息,如字处理文档,图像和你能想像到的任何其他数据。它不会执行字符集转换。应用向BLOB 中写入什么位和字节,BLOB就会返回什么为和字节。

BFILE:二进制文件LOB。这与其说是一个数据库存储实体,不如说是一个指针。带BFILE列的数据库中存储的只是操作系统中某个文件的一个指针。这个文件在数据库之外维护,根本不是数据库的一部分。BFILE 提供了文件内容的只读访问。

2. LOB数据类型分类

(1) 按存储数据的类型分:

字符类型:

CLOB:存储大量 单字节 字符数据。

NLOB:存储定宽 多字节 字符数据。

二进制类型:

BLOB:存储较大无结构的二进制数据。

二进制文件类型:

BFILE:将二进制文件存储在数据库外部的操作系统文件中。存放文件路径。

(2) 按存储方式分:

存储在内部表空间(内部LOB):CLOB,NLOB和BLOB

指向外部操作系统文件(外部LOB):BFILE

二、Lob的存储

我们建立含有lob字段的表时,oracle会自动为lob字段建立两个单独的segment,一个用来存放数据,另一个用来存放索引,并且它们都会存储在对应表指定的表空间中。

如上例所示,每个lob字段都对应两个segment,其中存放lob数据的以SYS_LOB开头,存放索引以SYS_IL开头。

LOB 按“块”(chunk)或(piece)来存储,每个片段都可以访问。

三、Lob与其它类型的转换

通过TO_CLOB可以将CHAR,NCHAR,VARCHAR2,NVARCHAR2,NCLOB类型转换成CLOB;

通过TO_LOB可以将LONG RAW转换成BLOB,LONG转换成CLOB;

通过TO_NCLOB可以将CHAR,NCHAR,VARCHAR2,NVARCHAR2,CLOB转换成NCLOB。

四、Oracle数据库的SYS_LOB

看看你的表里是不是存在blog,clob等类型的字段,当我们所建立的表中含有lob型的数据时,oracle会为每个lob字段生成一个独立的segment用来存放数据,同时也建立了独立的index segment .oracle对它们是单独管理的。

普通表只会新增一个或两个段对象.类型为TABLE和INDEX,数据就存放在表段中.索引就放在索引段中。但是LOB列则额外新增了两个段对象,类型为LOBSEGMENT和LOBINDEX,LOBINDEX用于指向LOB段,找出其中的某一部分,所以存储在表中的LOB存储的是一个地址,或者说是一个指针,实际上表中的lob列中存的是一个地址段.然后在lobindex找到所有的地址段.然后在lobSegment中把所有地址段的值都读取了来。所以lobSegment就保存了LOG列的真正的数据,所以会非常大,并且独立于原始表存在。

先看看这个对应的表的字段是否有数据,如果有你就无法删除这个sys_lob$的对象。想减少空间的占用就清理历史数据,或者重新导出导入下。

五、相关概念

关于LOB,我们可以使用dbms_metadata来获得它的完整的脚本:

SELECT DBMS_METADATA.GET_DDL( 'TABLE', 'LOB_TABLE' ) FROM DUAL

1. 表空间

保存lob数据的表空间可以不同于保存表数据的表空间,为LOB数据单独使用一个表空间有利于备份和恢复以及空间管理但是lobindex和lobsegment必须在同一个表空间中

2. IN ROW

ENABLE STORAGE IN ROW

DISABLE STORAGE IN ROW

控制LOB数据是否总与表分开存储(存储在lobsegment中),或是有时可以与表一同存储,而不用单独放在lobsegment中。

如果设置了ENABLE STORAGE IN ROW,而不是DISABLE STORAGE IN ROW,小LOB(最多4,000字节)就会像VARCHAR2一样存储在表本身中。只有当LOB超过了4,000字节时,才会“移出”到lobsegment中

默认行为是启用行内存储ENABLE STORAGE IN ROW,如果lob存储的数据大小能在表本身中放下,建议采用内联存储

3. CHUNK

块(chunk)是逻辑上连续的一组数据库块(block),这也是LOB的最小分配单元。,每个LOB实例(每个行外存储的LOB值)会占用至少一个CHUNK。一个CHUNK有一个LOB值使用,每个chunk的大小应该尽可能与实际lob数据的大小相近,以减少浪费空间;

4. PCTVERSION

控制lob的读一致性。

PCTVERSION控制着用于实现LOB数据版本化的已分配LOB空间的百分比(这些数据库块由某个时间点的LOB所用,并处在lobsegment的HWM以下)。对于许多使用情况来说,默认设置12%就足够了,因为在很多情况下,你只是要INSERT和获取LOB(通常不会执行LOB的更新;LOB往往会插入一次,而获取多次)。因此,不必为LOB版本化预留太多的空间(甚至可以没有)。

如果你的应用确实经常修改LOB,假设很频繁地读LOB,与此同时另外某个会话正在修改这些LOB,12%可能就太小了。如果处理LOB时遇到一个ORA-22924错误,解决方案不是增加undo表空间的大小,也不是增加undo保留时间(UNDO_RETENTION),如果你在使用手动undo管理,那么增加更多RBS空间也不能解决这个问题。而是应该使用以下命令:

ALTER TABLE tabname MODIFY LOB (lobname) ( PCTVERSION n)

增加lobsegment中为实现数据版本化所用的空间大小。

5. CACHE

控制lobsegment数据是否存储在缓冲区缓存中。默认的NOCACHE指示,每个访问都是从磁盘的一个直接读

ALTER TABLE tabname MODIFY LOB (lobname) ( CACHE );

ALTER TABLE tabname MODIFY LOB (lobname) ( NOCACHE );

六、查看ORACLE的LOB(BLOB和CLOB)对象占用的大小

1. 查看Oracle中表空间及表数据大小

Select Segment_Name, Sum(bytes) / 1024 / 1024

From User_Extents

where SEGMENT_NAME LIKE 'SYS_LOB%'

GROUP BY Segment_Name

order by Sum(bytes) / 1024 / 1024 desc;

从返回的结果看,有一个segment名为"SYS_LOB0000701017C00045$$"的对象占用了大量的空间,这种带有SYS_LOB***即LOB(BLOB和CLOB)对象占用数据库的空间名称。

2. 根据segment_name,就可以从 dba_lobs 表里查到是哪个表,哪个字段

SELECT * FROM DBA_LOBS WHERE SEGMENT_NAME LIKE 'SYS_LOB0000701017C00045$$';

索引,使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。 在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。

mysql lob字段_数据库的LOB大字段的一些总结相关推荐

  1. mysql 备用字段_数据库设计之备用字段

    备用字段,也称 预留字段 . 相关描述: 在数据表中,不仅设计了当前所需要的字段,而且还在其中留出几个字段作为备用. 举例说明,我设计了一个人员表(Person),其中已经添加了各种必要的字段,包括姓 ...

  2. 数据库中clob类型对应java,java 操作数据库clob类型大字段

    java 操作数据库clob类型大字段 java 操作数据库clob类型大字段,处理工具类如下: package org.shefron.utils; import java.io.StringRea ...

  3. mysql 邮箱长度_数据库中电子邮件地址的最佳长度是多less?

    数据库中电子邮件地址的最佳长度是多less? 这里是我查询的一部分,反映了EMAIL_ADDRESS列的数据types和属性: EMAIL_ADDRESS CHARACTER VARYING(20) ...

  4. 数据库调优策略:优化MySQL服务器、优化数据库结构、大表优化、隐藏索引对调优的帮助

    文章目录 1. 数据库调优的措施 1.1 调优的目标 1.2 定位调优问题 1.3 调优的维度和步骤 2. 优化MySQL服务器 2.1 优化服务器硬件 2.2 优化MySQL的参数 3. 优化数据库 ...

  5. 财务数据mysql库设计_数据库设计规范 - MySQL

    数据库设计规范 表达是与否概念的字段,必须使用 is_xxx的方式命名,数据类型是 unsigned tinyint( 1表示是,0表示否) 任何字段如果为非负数,必须是 unsigned. 表名.字 ...

  6. mysql 存储视频_数据库中怎样存储视频?谢谢各位

    root@ytt:/var/lib/mysql-files# for i in `seq 1 100`; do cp 微信图片_20190711095019.jpg "$i".jp ...

  7. mysql临时表索引_数据库查询优化——给临时表建索引

    平时查询数据库时为了查询更加快速,一般都会用到临时表,如select * into #t from tableA ,但是如果数据过大,但但用临时可能也很慢,这时候可以给临时表建个索引,如CREATE  ...

  8. mysql设计体会_数据库设计心得体会

    组名:NoobStruggle. 成员:刘海天.胡亮.谭晓杰.宁君辉. 一.分析需求 对于每一个项目,数据库的设计都是至关重要的,它关系到后端进行接口开发时实现的难度,数据库中数据的可维护性,一致性, ...

  9. 数据库原理及应用mysql班答案_数据库原理与应用(MYSQL)答案

    [多选题]下面选项中,可以查看视图相关信息的语句是 (4.0分) [单选题]下面关于SQL全称的说法中,正确的是 (2.0分) [多选题]下面选项中,属于浮点数的类型是 (2.0分) [多选题]下面选 ...

  10. mysql数据结构丢失_数据库谈一谈MySQL中的事务

    我们都知道,计算机处理的速度非常地快,但是再快的计算机,也面临着这样的问题,同一个时间里面有着非常多的请求都要对统一资源发生操作.所以,在数据库中,引入事务来解决这样的问题. 我们举个简单的例子,我在 ...

最新文章

  1. python课程与c+课程有什么不同-C和Python我该先学什么?
  2. 云钉一体应用创新:音视频如何带来灵活高效的协同体验
  3. 关于清单,有几点我觉得比较重要。
  4. 明明知道银行存款会贬值,为什么还有那么多人把钱放在银行?
  5. Discuz!X1 to Discuz!NT3.1论坛转换工具 v1.0
  6. 如何七周成为数据分析师
  7. 万稞pw80线切割编程软件_零基础如何快速学习UG数控编程?
  8. 计算机课程说课ppt模板,信息技术说课ppt模板
  9. java计算机毕业设计飞机航班信息查询系统演示视频2021MyBatis+系统+LW文档+源码+调试部署
  10. ios模拟器 安装ipa_安装ipa到模拟器
  11. Python 自动批量生成发卡平台卡密信息并导入数据库
  12. matlab 模拟光源,基于 Matlab 的激光光斑模拟.pdf
  13. 面试时被问有没有别家offer,回答没有,面试总是挂!回答有,就说我是面试选手,欺骗公司!...
  14. vue二维码生成与图片下载
  15. Django在Terminal中python manage.py startapp myapp报name ‘os‘ is not defined
  16. mysql aced是什么_memcached编译安装及缓存mysql测试
  17. JS如何区分对象和数组
  18. HBase安装以及基本操作
  19. Excel汉字转全拼以及首字母
  20. 记录下Mac生成安卓证书

热门文章

  1. CSS:absolute绝对定位
  2. ​你不是真正的“匿名”:如何划定匿名数据和去识别化数据?
  3. android6.0 power按键深入分析
  4. Firefox 插件 FlashGot 创建 Axel 下载任务
  5. 小勇机器人如何绑定_‎App Store 上的“小勇机器人”
  6. excel打开很慢_Excel打开很慢的解决方法
  7. excel拆分单元格内容_Excel办公软件教程
  8. 使用phpStudy显示3306端口被占用,该怎么办?
  9. ionic3利用ion-multi-picker实现国际区号选择
  10. 算法设计技巧: Primal-Dual