標籤:
[Oracle] Lob介紹 像Oracle這種關係型資料庫,比較擅長處理結構化的資料,那麼對於非結構化的資料,Oracle是怎麼處理和儲存的呢?Lob (Large Object)是Oracle專門用來處理半結構化和非結構化資料,它是一個大對象資料類型,可以儲存超過4000位元組的字串、位元據。 Lob的類型有兩種Lob,非常是Internal Lob和External Lob。所謂Internal Lob是指Lob資料存放區在Oracle資料檔案裡,External Lob是指Lob資料存放區在資料庫外部的作業系統裡。Internale Lob包括:1)CLOB (Character Lob):用於儲存字串類型的Lob,如文本和XML檔案等,字串已資料庫字元集編碼;2)BLOB (Binary Lob):用於儲存二進位類型的Lob;3)NCLOB (National Character Lob):和CLOB類似,但字串已國家字元集編碼。External Lob包括:1)BFILE (Binary File Lob):資料庫儲存一個執行外部檔案的指標,所以它是唯讀 Lob的儲存我們建立含有lob欄位的表時,oracle會自動為lob欄位建立兩個單獨的segment,一個用來存放資料,另一個用來存放索引,並且它們都會儲存在對應表指定的資料表空間中。看下面這個例子:?
| 1234567891011 |
[sql][email protected]> create table test.lobtest(b blob,c clob); Table created. [email protected]> select OWNER,TABLE_NAME,COLUMN_NAME,SEGMENT_NAME,INDEX_NAME from dba_lobs where table_name=‘LOBTEST‘; OWNER TABLE_NAME COLUMN_NAME SEGMENT_NAME INDEX_NAME ------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------ TEST LOBTEST B SYS_LOB0000101291C00001$$ SYS_IL0000101291C00001$$ TEST LOBTEST C SYS_LOB0000101291C00002$$ SYS_IL0000101291C00002$$ |
如上例所示,每個lob欄位都對應兩個segment,其中存放lob資料的以SYS_LOB開頭,存放索引以SYS_IL開頭。 Lob與其它類型的轉換通過TO_CLOB可以將CHAR,NCHAR,VARCHAR2,NVARCHAR2,NCLOB類型轉換成CLOB;通過TO_LOB可以將LONG RAW轉換成BLOB,LONG轉換成CLOB;通過TO_NCLOB可以將CHAR,NCHAR,VARCHAR2,NVARCHAR2,CLOB轉換成NCLOB。
[Oracle] Lob介紹