本篇内容主要讲解“oracle lob分类规则有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“oracle lob分类规则有哪些”吧!
什么是lob?
LOBs:Large Objects的缩写。一个lob最大可以容纳8TB-128TB。 |
lob分类
1.内部LOBs lob存储在数据库内部,便于空间管理和读取效率。内部LOBs也分为永久和临时。永久lob是存在与数据库中的表里面。临时lob是只有自己可见的在临时表空间中存在的。永久lob支持事务处理和介质恢复。 clob:存储数据库定义的字符集中的字符数据,宽度固定,可以代替long类型。 blob:存储二进制数据,可以代替long raw类型。 nclob:存储在国家字符集中定义的字符数据,支持变长宽度 2.外部LOBs 外部LOBs不存储在数据库内部的表空间上,而是存储于操作系统文件。BFILE类型是唯一的外部LOBs数据类型。BFILE类型是只读的数据类型。 bfile:外部二进制文件 |
lob于long或者long raw类型比较
相比之下,lob具有下面的优点: long和long raws类型最大只能存储2G数据。 一张表只能有一个long或long raw类型的列,但是可以有很多不同lob类型的lob列。 lob支持分散读,long只支持连续读。 oracle建议用lob代替long类型。
一个lob实例有1个指针(locator)和一个值(value)。locator是lob value的物理存储位置,lob value是lob对象存储的具体数据。实际上表中的行只记录了lob对象的指针,而不是存储实际的值。
|
lob列的状态
null:表格单元已经建立,但是表格单元没有指针也没有值。 empty:在表格单元中已经存在了一个lob实例,但是只有指针,没有值。lob的长度是0。 populated:lob实例的指针和值都存在。 |
lob相关规则限制
1.不能指定lob列为主键。 2.oracle已经限制了对远端LOBs对象的支持。只剩下三种方式: 2.1 Create table as select or insert as select.
CREATE TABLE t AS SELECT * FROM table1@remote_site; INSERT INTO t SELECT * FROM table1@remote_site; UPDATE t SET lobcol = (SELECT lobcol FROM table1@remote_site); INSERT INTO table1@remote_site SELECT * FROM local_table; UPDATE table1@remote_site SET lobcol = (SELECT lobcol FROM local_table); DELETE FROM table1@remote_site
2.2 Functions on remote LOBs returning scalars.远程lob的函数返回标量的,如下面:
CREATE TABLE tab AS SELECT DBMS_LOB.GETLENGTH@dbs2(clob_col) len FROM tab@dbs2; CREATE TABLE tab AS SELECT LENGTH(clob_col) len FROM tab@dbs2;
下面是不支持的,因为DBMS_LOB.SUBSTR返回LOB,不是标量:
CREATE TABLE tab AS SELECT DBMS_LOB.SUBSTR(clob_col) from tab@dbs2;
2.3 数据接口. You can insert a character or binary buffer into a remote CLOB or BLOB, and select a remote CLOB or BLOB into a character or binary buffer. For example (in PL/SQL):
SELECT clobcol1, type1.blobattr INTO varchar_buf1, raw_buf2 FROM table1@remote_site; INSERT INTO table1@remotesite (clobcol1, type1.blobattr) VALUES varchar_buf1, raw_buf2; INSERT INTO table1@remotesite (lobcol) VALUES ('test'); UPDATE table1 SET lobcol = 'xxx';
3.簇表不能包括lob列 4.如下数据结构仅支持临时lob对象,不能将这些存储在table中作为永久lob: 任何lob类型的变长数组; 自定义类型中包括lob,该自定义类型又在变长数组中; 任何lob类型的anydata类型; 自定义类型中包括lob,该自定义类型又在anydata中。
5.lob列不能出现在order by,group by或者聚合函数中。
6.lob段的第一个区必须至少包括三个数据库块。
7.lob列上不能建索引。但是可以建域索引。
8.lob列不能用在select distinct中。
|
到此,相信大家对“oracle lob分类规则有哪些”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。