真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oraclelob簡(jiǎn)單介紹

何為L(zhǎng)OB?

創(chuàng)新互聯(lián)公司致力于互聯(lián)網(wǎng)網(wǎng)站建設(shè)與網(wǎng)站營(yíng)銷(xiāo),提供網(wǎng)站制作、成都做網(wǎng)站、網(wǎng)站開(kāi)發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營(yíng)銷(xiāo)、微信小程序、公眾號(hào)商城、等建站開(kāi)發(fā),創(chuàng)新互聯(lián)公司網(wǎng)站建設(shè)策劃專(zhuān)家,為不同類(lèi)型的客戶(hù)提供良好的互聯(lián)網(wǎng)應(yīng)用定制解決方案,幫助客戶(hù)在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢(shì)。

lob為oracle數(shù)據(jù)庫(kù)的一個(gè)大對(duì)象數(shù)據(jù)類(lèi)型,可以存儲(chǔ)超過(guò)4000bytes的字符串,二進(jìn)制數(shù)據(jù),OS文件等大對(duì)象信息.最大可存儲(chǔ)的容量根oracle的版本和oracle 塊大小有關(guān).

有那幾種可供選擇的LOB類(lèi)型?

目前ORACLE提供了CLOB,NCLOB,BLOB,BFILE共四種LOB類(lèi)型,CLOB,NLOB為大字符串類(lèi)型,NLOB為多語(yǔ)言集字符類(lèi)型,類(lèi)似于NVARCHAR類(lèi)型,用他們代替以前的LONG類(lèi)型;BLOG為大二進(jìn)制類(lèi)型,用來(lái)代替以前的LONG RAW類(lèi)型;BFILE可存儲(chǔ)操作系統(tǒng)中的各種文件.

何為Internal LOBs 、External LOBs?

Internal LOBs指的是LOB數(shù)據(jù)存儲(chǔ)在oracle的tablespace中,CLOB,NCLOB,BLOG都是Internal LOBs; 而External LOBs指的是LOB數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)外部的操作系統(tǒng)文件中,BFIEL是唯一的External LOBs.BFILE提供了讓我們可以在SQL中訪(fǎng)問(wèn)外部文件的方法.

LOB到底能存多大的數(shù)據(jù)呢?

BFILE :Maximum size: 4 GB  Maximum size of a file name: 255 characters  Maximum size of a directory name: 30
          characters Maximum number of open BFILEs: The maximum number of BFILEs is limited by the value of the
          SESSION_MAX_OPEN_FILES initialization parameter, which is itself limited by the maximum number of open 
          files the operating system will allow.
BLOB: Maximum size: (4 GB - 1) * DB_BLOCK_SIZE initialization parameter (8 TB to 128 TB)  The number of LOB columns
         per table is limited only by the maximum number of columns per table (that is,10001).
CLOB: Maximum size: (4 GB - 1) * DB_BLOCK_SIZE initialization parameter (8 TB to 128 TB) The number of LOB columns
         per table is limited onlyby the maximum number of columns per table (that is,10001).
NCLOB :Maximum size: (4 GB - 1) * DB_BLOCK_SIZE initialization parameter (8 TB to 128 TB) The number of LOB columns
  per table is limited only by the maximum number of columns per table (that is,10001).

LOB可以用在什么地方?

LOB除了可以用在TABLE中定義列的類(lèi)型外,還可以用來(lái)存儲(chǔ)XML數(shù)據(jù),ORACLE的集合類(lèi)型,看下面的例子:

1) create table lobtest(a varchar2(20), b clob, c blob) tablespace users; –lob表的定義

2) LOB存儲(chǔ)集合類(lèi)型

create tablespace person_lob datafile size 102464K autoextend on next 100M maxsize 1024000K extent management local uniform size 1M segment space management auto;
/
alter user mayp quota unlimited on person_lob;

create or replace type person_att is object(id number(5),name varchar2(30),sex varchar2(1),age number(5,2));
/
create or replace type person_atts is varray(5) of person_att;
/
create table person(person_id number(5),attribute1 person_atts)
varray attribute1 store as lob person_attribute(
tablespace person_lob
enable storage in row
chunk 16384
pctversion 5
cache reads
index person_lob_idx)
tablespace users
pctfree 0
/
上面定義了一個(gè)用lob存儲(chǔ)varray類(lèi)型數(shù)據(jù)的例子.

LOB段有哪些屬性?

默認(rèn)情況下,當(dāng)定義了含有LOB字段的table后, oracle會(huì)自動(dòng)為每個(gè)LOB創(chuàng)建兩個(gè)段,lob segment和lob index segment. lob segment存儲(chǔ)了每個(gè)lob的具體的值,而lob index segment則存儲(chǔ)了每個(gè)lob值的地址.lob segment、lob index segment和table segment存儲(chǔ)在同一個(gè)表空間中.oracle為lob段提供了單獨(dú)的段屬性.我們?cè)趧?chuàng)建table時(shí)可以定義將lob和table分別存儲(chǔ)在不同的表空間中。平常定義lob時(shí),我們必須考慮以下幾個(gè)比較重要的屬性:

chunk:比oracle block size更大的一種邏輯塊,專(zhuān)用于LOB數(shù)據(jù)的存儲(chǔ),默認(rèn)為db_block_size的大小,如果手動(dòng)定義必須定義為db_block_size的倍數(shù).最大不能超過(guò)32K。不合理的chunk定義不及浪費(fèi)存儲(chǔ)空間,而且還會(huì)影響性能.那么在定義前必須了解應(yīng)用, 每個(gè)LOB列的數(shù)據(jù)的平均大小,盡量減少LOB的空間浪費(fèi).看下面的表格能說(shuō)明一切:

  Data Size                     CHUNK Size    Disk Space Used to Store the LOB  Space Utilization(Percent)
  3500 enable storage in row    irrelevant    3500 in row                        100  3500 disable storage in row   32 KB         32 KB                              10
  3500 disable storage in row   4 KB          4 KB                               90  33 KB                         32 KB         64 KB                              51
  2 GB +10                      32 KB         2 GB + 32 KB                       99+

上面表格用一些數(shù)據(jù)說(shuō)明了chunk跟數(shù)據(jù)之間的存儲(chǔ)關(guān)系,更形象的說(shuō)明了磁盤(pán)空間的利率問(wèn)題。 紅色標(biāo)記的部分說(shuō)明了不合理的chunk定義.必須注意到的LOB中比chunk浪費(fèi)的空間是不可以重用的.

disable/enable storage in row: 默認(rèn)情況下為enable storage in row, 在沒(méi)有分離lob段的情況下,table中的每行數(shù)據(jù)都存儲(chǔ)在同一個(gè)block中,這樣如果lob列很大時(shí),可能會(huì)造成嚴(yán)重的行鏈接;當(dāng)lob段和table段分離的情況下,oracle會(huì)自動(dòng)將小于4k的lob數(shù)據(jù)存儲(chǔ)在table segment,將大于4k的lob數(shù)據(jù)存儲(chǔ)在lob段.如果設(shè)置為 disable storage in row的情況時(shí),在lob段和table段分離的情況下, 不管lob數(shù)據(jù)多大,oracle都會(huì)將lob數(shù)據(jù)存儲(chǔ)在lob段,這樣就出現(xiàn)了上面的
3500 disable storage in row 32 KB ,32 KB ,10情況,浪費(fèi)了90%的存儲(chǔ)空間.

pctversion n /retention:這兩個(gè)屬性用來(lái)解決lob段的一致性讀問(wèn)題。lob的特殊性決定它不能使用undo/rollback segment來(lái)管理自己的更新的old version,通常lob會(huì)在自己所在的表空間中劃分一部分空間來(lái)管理自己的undo,保證read consistent.lob中更新原理是在lob segment中分配新的chunk插入新的數(shù)據(jù),保留舊的鏡像,如果一個(gè)數(shù)據(jù)有多個(gè)更新存在的話(huà), 那么就會(huì)存在多個(gè)版本.pctversion用來(lái)定義lob segment中undo區(qū)域的大小,pctverision 是一個(gè)百分比,定義所有l(wèi)ob空間用來(lái)存放前鏡像的百分比,如果前鏡像使用空間超過(guò)這個(gè)百分比了,oracle不自動(dòng)擴(kuò)展這部分的大小, 會(huì)重用這些前鏡像的空間.如果一個(gè)lob segment段的更新很頻繁的情況下,那么該lob段的增長(zhǎng)可能會(huì)很快.retention是9i的新參數(shù), 只能用在tablespace采用ASSM的情況,在lob更新的時(shí)候,前鏡像會(huì)保留一段時(shí)間, 具體的時(shí)間由undo_retention參數(shù)決定.決定采用乃種undo 方式,必須對(duì)應(yīng)用測(cè)試后在決定.

nocache/cache reads/cache:定義LOB的cache 方式,nocache為不cache任何 lob數(shù)據(jù);cache reads為在lob read的情況下cache數(shù)據(jù);cache為讀寫(xiě)都cache數(shù)據(jù).

lob創(chuàng)建的例子:
create table person_new(id number(5),name varchar2(30),remark clob,photo blob not null)
lob (remark) store as person_remark(
tablespace person_lob
enable storage in row
chunk 8192
pctversion 2
cache reads
index person_remark_idx)
lob (photo) store as person_photo(
tablespace person_lob
disable storage in row
chunk 16384
pctversion 2
cache reads
index person_photo_idx)
tablespace users
pctfree 10
/

LOB可以在SQL環(huán)境操作嗎?

LOB可以像使用其他數(shù)據(jù)類(lèi)型一樣,可以進(jìn)行DML操作.

insert into person_new values(1,’robin.ma’,'he is a goold boy’,empty_blob());

update person_new set remark=’he is a goog boy,he is from Beijing China’ where id = 1;

delete from person_new where id = 1;

commit;

create table bfile_test(files bfile) tablespace users;

insert into bfile_test values(bfilename(’EXPORT’,'c.dat’));

commit;

SQL> select * from bfile_test;
SP2-0678: Column or attribute type can not be displayed by SQL*Plus
SQL> select * from person_new;
SP2-0678: Column or attribute type can not be displayed by SQL*Plus

SQL> select remark from person_new;

REMARK
——————————————————————————–
he is a goog boy,he is from Beijing China

從上面的例子可以查看,BLOG和BFIEL 是不能直接在sql*plus顯示的.

可以操作LOB的API有哪些?

PL/SQL可以用DBMS_LOB操作任何的LOB,BFILE對(duì)象,Oracle還提供了OCI編程接口操作LOB。Java,C#都提供了相應(yīng)的API操作LOB。

怎樣將其他字符類(lèi)型轉(zhuǎn)換成CLOB,二進(jìn)制類(lèi)型轉(zhuǎn)換成BLOB?

通過(guò)TO_CLOB可以將CHAR,NCHAR,VARCHAR2,NVARCHAR2,NCLOB類(lèi)型轉(zhuǎn)換成CLOB;
通過(guò)TO_LOB可以將LONG RAW轉(zhuǎn)換成BLOB,LONG轉(zhuǎn)換成CLOB;
通過(guò)TO_NCLOB可以將CHAR,NCHAR,VARCHAR2,NVARCHAR2,CLOB轉(zhuǎn)換成NCLOB。

LOB對(duì)象可以db link遠(yuǎn)程操作嗎?

除了BFILE,CLOB,BLOB可以局部的訪(fǎng)問(wèn)和操作遠(yuǎn)程LOB對(duì)象.目前下列操作是允許的:

CREATE TABLE AS SELECT …FROM table@remote;
INSERT INTO .. SELECT * FORM table@remote;
UPDATE …SET .. = (SELECT ..FROM table@remote);
INSERT INTO TABLE@REMOTE(…) AS SELECT * FROM LOCAL_TABLE;
UPDATE remote@table SET .. = (SELECT .. FROM local_table);
DELETE FROM remote@table WHERE …..

LOB相關(guān)的SQL function和DBMS_LOB不允許訪(fǎng)問(wèn)和操作遠(yuǎn)程的LOB對(duì)象。

LOB列可以索引嗎?

目前CLOB列支持Oracle Text Index,Domain Index,Function-Base Index,Extensible Index.

LOB支持分區(qū)表嗎?

可以在分區(qū)表使用LOB列,并且還支持exchange partition,move partition,merge partition等操作.

LOB支持Index-organization table嗎?

oracle支持在index-organization table中創(chuàng)建clob,blog和bfile列, 但不支持在分區(qū)的index-organization table中創(chuàng)建lob列.

參考:Oracle Database Application Developer’s Guide - Large Objects 10g Release 2 (10.2)


本文名稱(chēng):oraclelob簡(jiǎn)單介紹
網(wǎng)站地址:http://weahome.cn/article/ggieee.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部