共計 2195 個字符,預(yù)計需要花費(fèi) 6 分鐘才能閱讀完成。
本篇內(nèi)容主要講解“oracle lob 分類規(guī)則有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓丸趣 TV 小編來帶大家學(xué)習(xí)“oracle lob 分類規(guī)則有哪些”吧!
什么是 lob?
LOBs:Large Objects 的縮寫。一個 lob 最大可以容納 8TB-128TB。
lob 分類
1. 內(nèi)部 LOBs
lob 存儲在數(shù)據(jù)庫內(nèi)部,便于空間管理和讀取效率。內(nèi)部 LOBs 也分為永久和臨時。永久 lob 是存在與數(shù)據(jù)庫中的表里面。臨時 lob 是只有自己可見的在臨時表空間中存在的。永久 lob 支持事務(wù)處理和介質(zhì)恢復(fù)。
clob:存儲數(shù)據(jù)庫定義的字符集中的字符數(shù)據(jù),寬度固定,可以代替 long 類型。
blob:存儲二進(jìn)制數(shù)據(jù),可以代替 long
raw 類型。
nclob:存儲在國家字符集中定義的字符數(shù)據(jù),支持變長寬度
2. 外部 LOBs
外部 LOBs 不存儲在數(shù)據(jù)庫內(nèi)部的表空間上,而是存儲于操作系統(tǒng)文件。BFILE 類型是唯一的外部 LOBs 數(shù)據(jù)類型。BFILE 類型是只讀的數(shù)據(jù)類型。
bfile: 外部二進(jìn)制文件
lob 于 long 或者 long raw 類型比較
相比之下,lob 具有下面的優(yōu)點:
long 和 long raws 類型最大只能存儲 2G 數(shù)據(jù)。
一張表只能有一個 long 或 long raw 類型的列,但是可以有很多不同 lob 類型的 lob 列。
lob 支持分散讀,long 只支持連續(xù)讀。
oracle 建議用 lob 代替 long 類型。
一個 lob 實例有 1 個指針(locator)和一個值(value)。locator 是 lob value 的物理存儲位置,lob value 是 lob 對象存儲的具體數(shù)據(jù)。實際上表中的行只記錄了 lob 對象的指針,而不是存儲實際的值。
lob 列的狀態(tài)
null:表格單元已經(jīng)建立,但是表格單元沒有指針也沒有值。
empty:在表格單元中已經(jīng)存在了一個 lob 實例,但是只有指針,沒有值。lob 的長度是 0。
populated:lob 實例的指針和值都存在。
lob 相關(guān)規(guī)則限制
1. 不能指定 lob 列為主鍵。
2.oracle 已經(jīng)限制了對遠(yuǎn)端 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. 遠(yuǎn)程 lob 的函數(shù)返回標(biāo)量的,如下面:
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,不是標(biāo)量:
CREATE TABLE tab AS SELECT DBMS_LOB.SUBSTR(clob_col)
from tab@dbs2;
2.3 數(shù)據(jù)接口.
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. 如下數(shù)據(jù)結(jié)構(gòu)僅支持臨時 lob 對象,不能將這些存儲在 table 中作為永久 lob:
任何 lob 類型的變長數(shù)組;
自定義類型中包括 lob,該自定義類型又在變長數(shù)組中;
任何 lob 類型的 anydata 類型;
自定義類型中包括 lob,該自定義類型又在 anydata 中。
5.lob 列不能出現(xiàn)在 order by,group by 或者聚合函數(shù)中。
6.lob 段的第一個區(qū)必須至少包括三個數(shù)據(jù)庫塊。
7.lob 列上不能建索引。但是可以建域索引。
8.lob 列不能用在 select
distinct 中。
到此,相信大家對“oracle lob 分類規(guī)則有哪些”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!