首页 » 网站建设 » oraclephplob技巧_一文看懂Oracle数据库LOB大年夜字段类型存储及相关敕令

oraclephplob技巧_一文看懂Oracle数据库LOB大年夜字段类型存储及相关敕令

访客 2024-12-12 0

扫一扫用手机浏览

文章目录 [+]

Oracle 11gR2 文档:

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

oraclephplob技巧_一文看懂Oracle数据库LOB大年夜字段类型存储及相关敕令

oraclephplob技巧_一文看懂Oracle数据库LOB大年夜字段类型存储及相关敕令
(图片来自网络侵删)
一、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,一个用来存放数据,另一个用来存放索引,并且它们都会存储在对应表指定的表空间中。

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

后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下!

标签:

相关文章

php导出tcpdf技巧_PHP将html生成pdf文件TCPDF

前段韶光做打印条约时,要天生pdf文件,以是就看了一下,有很多种天生办法,我这里用的是TCPDF,想用可以自行下载一下 下面举例解...

网站建设 2024-12-14 阅读0 评论0

php正则抓取断定技巧_PHP采集 抓取

一、 什么是php采集程序?二、 为什么要采集?三、 采集些什么?四、 如何采集?五、 采集思路六、 采集范例程序七、 采集心得什...

网站建设 2024-12-14 阅读0 评论0