您好,登錄后才能下訂單哦!
本篇內容主要講解“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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。