本篇內(nèi)容主要講解“oracle lob分類規(guī)則有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“oracle lob分類規(guī)則有哪些”吧!
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序定制開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了港南免費(fèi)建站歡迎大家使用!
什么是lob?
LOBs:Large Objects的縮寫。一個(gè)lob最大可以容納8TB-128TB。 |
lob分類
1.內(nèi)部LOBs lob存儲(chǔ)在數(shù)據(jù)庫內(nèi)部,便于空間管理和讀取效率。內(nèi)部LOBs也分為永久和臨時(shí)。永久lob是存在與數(shù)據(jù)庫中的表里面。臨時(shí)lob是只有自己可見的在臨時(shí)表空間中存在的。永久lob支持事務(wù)處理和介質(zhì)恢復(fù)。 clob:存儲(chǔ)數(shù)據(jù)庫定義的字符集中的字符數(shù)據(jù),寬度固定,可以代替long類型。 blob:存儲(chǔ)二進(jìn)制數(shù)據(jù),可以代替long raw類型。 nclob:存儲(chǔ)在國家字符集中定義的字符數(shù)據(jù),支持變長寬度 2.外部LOBs 外部LOBs不存儲(chǔ)在數(shù)據(jù)庫內(nèi)部的表空間上,而是存儲(chǔ)于操作系統(tǒng)文件。BFILE類型是唯一的外部LOBs數(shù)據(jù)類型。BFILE類型是只讀的數(shù)據(jù)類型。 bfile:外部二進(jìn)制文件 |
lob于long或者long raw類型比較
相比之下,lob具有下面的優(yōu)點(diǎn): long和long raws類型最大只能存儲(chǔ)2G數(shù)據(jù)。 一張表只能有一個(gè)long或long raw類型的列,但是可以有很多不同lob類型的lob列。 lob支持分散讀,long只支持連續(xù)讀。 oracle建議用lob代替long類型。
一個(gè)lob實(shí)例有1個(gè)指針(locator)和一個(gè)值(value)。locator是lob value的物理存儲(chǔ)位置,lob value是lob對(duì)象存儲(chǔ)的具體數(shù)據(jù)。實(shí)際上表中的行只記錄了lob對(duì)象的指針,而不是存儲(chǔ)實(shí)際的值。
|
lob列的狀態(tài)
null:表格單元已經(jīng)建立,但是表格單元沒有指針也沒有值。 empty:在表格單元中已經(jīng)存在了一個(gè)lob實(shí)例,但是只有指針,沒有值。lob的長度是0。 populated:lob實(shí)例的指針和值都存在。 |
lob相關(guān)規(guī)則限制
1.不能指定lob列為主鍵。 2.oracle已經(jīng)限制了對(duì)遠(yuǎn)端LOBs對(duì)象的支持。只剩下三種方式: 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;
下面是不支持的,因?yàn)镈BMS_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)僅支持臨時(shí)lob對(duì)象,不能將這些存儲(chǔ)在table中作為永久lob: 任何lob類型的變長數(shù)組; 自定義類型中包括lob,該自定義類型又在變長數(shù)組中; 任何lob類型的anydata類型; 自定義類型中包括lob,該自定義類型又在anydata中。
5.lob列不能出現(xiàn)在order by,group by或者聚合函數(shù)中。
6.lob段的第一個(gè)區(qū)必須至少包括三個(gè)數(shù)據(jù)庫塊。
7.lob列上不能建索引。但是可以建域索引。
8.lob列不能用在select distinct中。
|
到此,相信大家對(duì)“oracle lob分類規(guī)則有哪些”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!