oracle lob值是什么,关于Oracle数据库LOB大字段总结

概述

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

Oracle 11gR2 文档:

http://download.oracle.com/docs/cd/E11882_01/Appdev.112/e18294/adlob_tables.htm#ADLOB45267

4ddcbb2ecdedeab702f67b075719366b.png

一、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数据类型分类

2.1、按存储数据的类型分:

(1)字符类型:

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

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

(2)二进制类型:

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

(3)二进制文件类型:

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

2.2、按存储方式分:

(1)存储在内部表空间(内部LOB):

CLOB,NLOB和BLOB

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

BFILE

二、Lob的存储

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

80cd94e14b839a193b357c5304bf7bba.png

如上例所示,每个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;

0d133108dedf825c4217f1a6a2b53f3c.png

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

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

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

129fb624bdfc31448614524d1ec1eadc.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529662.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Oracle19C的dbhome,Windows server 安装Oracle19c (WINDOWS.X64_193000_db_home.zip) 过程碰到的问题总结...

Oracle19c的下载地址:链接: https://pan.baidu.com/s/1snqyViOAoeffAztPes_Tvw提取码: 9kb6Oracle19c的安装过程:解压缩安装包:解压结果 以管理员方式运行setup开始安装 一直默认走到安装完成即可创建用户cmd执行sqlplus命令,输入…

oracle数据库配置管理,Oracle配置管理

一、连接Oracle1、Oracle建立连接的过程无论是通过sqlplus命令连接还是第三方工具远程连接到Oracle,都需要建立客户端与服务端之间的连接。Oracle Net Service组件就是为了用于建立连接的,这个组件在安装Oracle时已经安装。1)在服务器端有一个listener监…

linux内核 默认路由表,[Linux] linux路由表-Go语言中文社区

路由表用于决定数据包从哪个网口发出,其主要判断依据是目标IP地址Linux路由表其实有2个主要概念:按顺序走路由策略,在路由策略对应的路由表中匹配规则路由策略(rule)路由表(table)查看所有的路由策略,32766那个策略最有用,对应的main路由表也是默认展示的…

linux添加源地址ping,实战经验:Linux Source NAT在Ping场景下的应用

原标题:实战经验:Linux Source NAT在Ping场景下的应用有时候,有这样的一种需求:需要修改IP数据包中的源地址,比如,从某一个主机发送Ping包到另一个主机,需要修改源地址为另一个源(通常&#xff…

Linux升级glibc版本汉字乱码,Linux CentOS6升级glibc库过程

CentOS6升级glibc库过程hadoop无法加载native库,可能原因是 glibc库版本过低,需要升级。第一:安装以下软件yum -y install zlib zlib-devel gcc gcc-c libtool openssl openssl-devel automake autoconf libtool pcre*第二、查看系统glibc版本…

linux图形界面 革命,Windows 95带来的革命

CDECDE1993年6月-在“公用桌面环境“是与Sun,惠普,IBM和合资Unix系统实验室。CDE,通用桌面环境(CommonDesktopEnvironment)的缩写。CDE是一种运行于UNIX,基于Motif部件工具箱开发的商业桌面环境。惠普的OpenVMS采用CDE作为标准的桌…

real time linux pdf,【整理】ubuntu real time Linux

ubuntu real timeUbuntu不支持实时可参考看看如何才能支持想要自己编译实时内核的话参考去:下载:The Real Time Preempt Patch然后自己编译即可。对于实时系统所支持的功能和特性以及平台,详见这里提供了 已编译好的实时的Debian相关内容或参…

苹方字体 for linux,苹果苹方字体

苹果苹方字体是一款很实用的字体软件,苹果苹方字体是为中国苹果用户打造的全新字体,共有六种字重,使用方便,能够满足用户在阅读时不同的字体需求,并且苹果苹方字体还可以在安卓、Linux 等其他平台和设备上使用&#xf…

c语言龙贝格积分法实验报告,数值作业:龙贝格算法计算积分C语言实现

数值作业:龙贝格算法计算积分C语言实现数值作业:龙贝格算法计算积分C语言实现根据Romberg算法计算定积分,和变步长的Simpson算法的输入都一样.算法基本分析:输入a,b(积分上下限),n为积分区间等分数,eps为计算精度,我这…

w ndows7文档加密取消,win7文件夹怎么加密?windows7文件加密方法

win7文件夹怎么加密?电脑文件隐私问题一直都是很多用户的关注重点,尤其是自己电脑经常被他人使用的朋友。也许使用第三方软件为文件夹加密比较方便,但如果能够不借助“外力”完成这一任务就更加完美。下面,我们就一起来看看windows7文件加密…

小世界网络模型代码 c 语言,新的小世界网络模型实现文本特征的提取方法与流程...

本发明涉及语义网络技术领域,具体涉及新的小世界网络模型实现文本特征的提取方法。背景技术:目前常用的文本特征提取方法,包括词频-反文档频率方法—TF-IDF、信息增益方法、互信息等方法;TF-IDF的简单结构并不能有效地反映词汇或短…

米4用linux刷机救转,小米4变砖之后如何刷机自救?大神教你小米4线刷救砖方法...

三:使用miflash工具刷机的步骤本工具适用于小米,华为,联想等手机品牌高通版本,不只是小米专用,教程仅供参考,看完一遍后再刷机。第一步:刷机工具安装1.下载小米手机刷机工具MiPhone2015731&…

com.android.phone已停止运行怎么解决方法,com.android.phone已停止运行怎么解决

在安卓手机上,不少用户都会遇过com.android.phone已停止的弹窗,尤其经常刷机的最明显。导致的原因实在太多,有刷机步骤不对的,乱改系统文件的,这里小编综合网上的情况以及自身经历,给广大安卓用户一个com.a…

android动画放大后缩小,Android 补间动画 scale(缩放)

今天又遇到了关于Android 动画方面的问题,免不了一番疯狂找资料,所幸解决了自己的问题,为了避免以后遇到同样的问题,再次到处找资料,于是决定写篇随笔记录下来,方便自己方便大家^_^;废话就不说了…

android 机器人动画,Android 5.X与Android4.X版本机器人动画的区别以及制作动画的方法...

今天翻了下墙,解决了一直以来的疑惑问题:为什么Android5.0以及6.0的recovery版本,机器人动画怎么就只有一张图片?这个问题,我百思不得其解,看了很多网文,也只是有了个概念。请参考以下文档&…

android .9编译,在Ubuntu 9.04下编译Android源码

一直都是刷官方的版本,准备自己编译一下刷机。首先是下载,Android的源码是托管在Linux Kernel的源码站点,所以版本工具是git。关于git的使用和安装请见我的另一篇文章《在Ubuntu Server上安装Git》。创建一个存放Andorid的目录,然…

android rn框架开发的例子,RN与安卓通信架构篇

本篇文章介绍的搭建Android与Rn之间的简易通信架构,需要了解通信的基本使用的同学可以参考下面的链接开篇先上图 - “简易版的通信架构图”RN与Android之间通信的架构图本架构实现的功能有:自定义通信规则,并以Json作为数据传输格式进行传输实…

go 生成hash_go基础之map-写在前面(一)

为什么分析map在计算机编程语言当中,用的最多的数据结构估计就是map。map以他近乎o(1)的查找效率和修改效率让他在大多数场景下都比较受青睐。map的常规的实现方式都是hash其他数据结构,如java是hash红黑树,而我现在即将要分析的go的实现方式…

大学数学建模大赛是用计算机,北京大学第十届“江泽涵杯”数学建模与计算机应用竞赛试题...

消息来源:http://www.math.pku.edu.cn:8000/news/read.php?newsid8014A题:投篮问题投篮是篮球运动中一项关键性技术,是一项重要的得分手段。在篮球赛中有三种特殊的投篮方式,“三分球”、“两分球”和“一分球(罚篮)”。其中&…

dynamo方程怎么写_【简明自控】为什么特征方程如此重要

简明自动控制——为什么特征方程如此重要。热场视频:自平衡杆-双轴反作用轮倒立摆_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com顶个棍子!具有主动脚轮的全向移动机器人_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com我自行车怎么少…