成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關于Oracle數據庫LOB大字段總結

數據庫 其他數據庫
在ORACLE數據庫中,DBA_OBJECTS視圖中OBJECT_TYPE為LOB的對象是什么東西呢?其實OBJECT_TYPE為LOB就是大對象(LOB),它指那些用來存儲大量數據的數據庫字段。

在ORACLE數據庫中,DBA_OBJECTS視圖中OBJECT_TYPE為LOB的對象是什么東西呢?其實OBJECT_TYPE為LOB就是大對象(LOB),它指那些用來存儲大量數據的數據庫字段。

Oracle 11gR2 文檔:

http://download.oracle.com/docs/cd/E11882_01/appdev.112/e18294/adlob_tables.htm#ADLOB45267

關于Oracle數據庫LOB大字段總結

一、LOB 分類

LOB大對象主要是用來存儲大量數據的數據庫字段,在Oracle 9iR2 中LOB的最大容量是4G,Oracle 10g 最大8T,Oracle 11g 最大是128T。具體取決于blocksize 的大小。

The built-in LOB data types BLOB, CLOB, and NCLOB (stored internally) and BFILE (stored externally) can store large and unstructured data such as text, image, video, and spatial data. The size of BLOB, CLOB, and NCLOB data can be up to (232-1 bytes) * (the value of the CHUNK parameter of LOB storage).

1. Oracle 支持4 種類型的LOB:

  • CLOB:字符LOB。這種類型用于存儲大量的文本信息,如XML 或者只是純文本。這個數據類型需要進行字符集轉換,也就是說,在獲取時,這個字段中的字符會從數據庫的字符集轉換為客戶的字符集,而在修改時會從客戶的字符集轉換為數據庫的字符集。
  • NCLOB:這是另一種類型的字符LOB。存儲在這一列中的數據所采用的字符集是數據庫的國家字符集,而不是數據庫的默認字符集。
  • BLOB:二進制LOB。這種類型用于存儲大量的二進制信息,如字處理文檔,圖像和你能想像到的任何其他數據。它不會執行字符集轉換。應用向BLOB 中寫入什么位和字節,BLOB就會返回什么為和字節。
  • BFILE:二進制文件LOB。這與其說是一個數據庫存儲實體,不如說是一個指針。帶BFILE列的數據庫中存儲的只是操作系統中某個文件的一個指針。這個文件在數據庫之外維護,根本不是數據庫的一部分。BFILE 提供了文件內容的只讀訪問。

2. LOB數據類型分類

(1) 按存儲數據的類型分:

字符類型:

  • CLOB:存儲大量 單字節 字符數據。
  • NLOB:存儲定寬 多字節 字符數據。

二進制類型:

  • BLOB:存儲較大無結構的二進制數據。

二進制文件類型:

  • BFILE:將二進制文件存儲在數據庫外部的操作系統文件中。存放文件路徑。

(2) 按存儲方式分:

  • 存儲在內部表空間(內部LOB):CLOB,NLOB和BLOB
  • 指向外部操作系統文件(外部LOB):BFILE

二、Lob的存儲

我們建立含有lob字段的表時,oracle會自動為lob字段建立兩個單獨的segment,一個用來存放數據,另一個用來存放索引,并且它們都會存儲在對應表指定的表空間中。

關于Oracle數據庫LOB大字段總結

如上例所示,每個lob字段都對應兩個segment,其中存放lob數據的以SYS_LOB開頭,存放索引以SYS_IL開頭。

LOB 按“塊”(chunk)或(piece)來存儲,每個片段都可以訪問。

三、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數據庫的SYS_LOB

看看你的表里是不是存在blog,clob等類型的字段,當我們所建立的表中含有lob型的數據時,oracle會為每個lob字段生成一個獨立的segment用來存放數據,同時也建立了獨立的index segment .oracle對它們是單獨管理的。

普通表只會新增一個或兩個段對象.類型為TABLE和INDEX,數據就存放在表段中.索引就放在索引段中。但是LOB列則額外新增了兩個段對象,類型為LOBSEGMENT和LOBINDEX,LOBINDEX用于指向LOB段,找出其中的某一部分,所以存儲在表中的LOB存儲的是一個地址,或者說是一個指針,實際上表中的lob列中存的是一個地址段.然后在lobindex找到所有的地址段.然后在lobSegment中把所有地址段的值都讀取了來。所以lobSegment就保存了LOG列的真正的數據,所以會非常大,并且獨立于原始表存在。

先看看這個對應的表的字段是否有數據,如果有你就無法刪除這個sys_lob$的對象。想減少空間的占用就清理歷史數據,或者重新導出導入下。

五、相關概念

關于LOB,我們可以使用dbms_metadata來獲得它的完整的腳本:

  1. SELECT DBMS_METADATA.GET_DDL( 'TABLE', 'LOB_TABLE' ) FROM DUAL 

1. 表空間

保存lob數據的表空間可以不同于保存表數據的表空間,為LOB數據單獨使用一個表空間有利于備份和恢復以及空間管理但是lobindex和lobsegment必須在同一個表空間中

2. IN ROW

  1. ENABLE STORAGE IN ROW 
  2. DISABLE STORAGE IN ROW 

控制LOB數據是否總與表分開存儲(存儲在lobsegment中),或是有時可以與表一同存儲,而不用單獨放在lobsegment中。

如果設置了ENABLE STORAGE IN ROW,而不是DISABLE STORAGE IN ROW,小LOB(最多4,000字節)就會像VARCHAR2一樣存儲在表本身中。只有當LOB超過了4,000字節時,才會“移出”到lobsegment中

默認行為是啟用行內存儲ENABLE STORAGE IN ROW,如果lob存儲的數據大小能在表本身中放下,建議采用內聯存儲

3. CHUNK

塊(chunk)是邏輯上連續的一組數據庫塊(block),這也是LOB的最小分配單元。,每個LOB實例(每個行外存儲的LOB值)會占用至少一個CHUNK。一個CHUNK有一個LOB值使用,每個chunk的大小應該盡可能與實際lob數據的大小相近,以減少浪費空間;

4. PCTVERSION

控制lob的讀一致性。

PCTVERSION控制著用于實現LOB數據版本化的已分配LOB空間的百分比(這些數據庫塊由某個時間點的LOB所用,并處在lobsegment的HWM以下)。對于許多使用情況來說,默認設置12%就足夠了,因為在很多情況下,你只是要INSERT和獲取LOB(通常不會執行LOB的更新;LOB往往會插入一次,而獲取多次)。因此,不必為LOB版本化預留太多的空間(甚至可以沒有)。

如果你的應用確實經常修改LOB,假設很頻繁地讀LOB,與此同時另外某個會話正在修改這些LOB,12%可能就太小了。如果處理LOB時遇到一個ORA-22924錯誤,解決方案不是增加undo表空間的大小,也不是增加undo保留時間(UNDO_RETENTION),如果你在使用手動undo管理,那么增加更多RBS空間也不能解決這個問題。而是應該使用以下命令:

  1. ALTER TABLE tabname MODIFY LOB (lobname) ( PCTVERSION n) 

增加lobsegment中為實現數據版本化所用的空間大小。

5. CACHE

控制lobsegment數據是否存儲在緩沖區緩存中。默認的NOCACHE指示,每個訪問都是從磁盤的一個直接讀

  1. ALTER TABLE tabname MODIFY LOB (lobname) ( CACHE ); 
  2. ALTER TABLE tabname MODIFY LOB (lobname) ( NOCACHE ); 

六、查看ORACLE的LOB(BLOB和CLOB)對象占用的大小

1. 查看Oracle中表空間及表數據大小

  1. Select Segment_Name, Sum(bytes) / 1024 / 1024 
  2.  From User_Extents 
  3.  where SEGMENT_NAME LIKE 'SYS_LOB%' 
  4.  GROUP BY Segment_Name 
  5.  order by Sum(bytes) / 1024 / 1024 desc; 

關于Oracle數據庫LOB大字段總結

從返回的結果看,有一個segment名為"SYS_LOB0000701017C00045$$"的對象占用了大量的空間,這種帶有SYS_LOB***即LOB(BLOB和CLOB)對象占用數據庫的空間名稱。

2. 根據segment_name,就可以從 dba_lobs 表里查到是哪個表,哪個字段

  1. SELECT * FROM DBA_LOBS WHERE SEGMENT_NAME LIKE 'SYS_LOB0000701017C00045$$'; 

關于Oracle數據庫LOB大字段總結

責任編輯:趙寧寧 來源: 今日頭條
相關推薦

2019-12-26 17:25:22

數據庫設計技術

2011-05-26 14:18:49

Oracle數據庫字段屬性

2011-04-12 10:09:33

Oracle數據庫關閉

2010-05-06 12:08:34

Oracle數據庫

2011-03-01 09:25:59

JDBC存儲方法

2017-10-18 19:12:24

數據庫Oracle安全管理

2010-04-13 10:32:40

Oracle數據庫編程

2011-06-14 15:11:59

ORACLE

2010-04-20 10:41:49

Oracle數據庫

2011-09-02 10:06:51

OracleSqlLoad常用技巧

2011-08-23 15:16:54

OracleMySQL

2010-04-23 14:32:01

Oracle數據庫

2010-11-15 10:30:04

Oracle數據庫啟動

2019-09-16 08:28:17

Mysql數據庫binlog

2010-04-29 10:56:46

Oracle數據庫

2011-03-17 14:09:25

Oracle數據庫字符

2010-05-04 17:08:24

Oracle數據庫

2011-08-23 18:19:19

Oracle行轉列Join用法

2011-08-09 18:15:24

Oracle 10g查找數據

2011-08-05 13:17:34

Oracle數據庫閃回個性
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美高清视频一区 | 久久影音先锋 | 国产精品久久久久久久久久久久午夜片 | 亚洲免费在线观看 | 国产成人免费在线 | 国产一级特黄视频 | 国产精品久久久久久久免费大片 | 天天摸天天干 | 99精品视频在线 | 久久久久久亚洲精品 | 成人影院在线视频 | av在线免费网 | 国产在线二区 | 欧美一区二区在线 | 天天爱av | 草草视频在线观看 | 日韩成人免费视频 | 精品久久久久久亚洲综合网 | 久久久久久亚洲精品 | 久久久久久久电影 | 日本精品视频 | 高清一区二区三区 | 日韩欧美一级片 | 中文字字幕一区二区三区四区五区 | 欧美一区视频 | 美女黄18岁以下禁止观看 | 国产精品91久久久久久 | 国产亚洲精品精品国产亚洲综合 | 国产免费看 | а√中文在线8 | 中国xxxx性xxxx产国 | 亚洲欧美在线视频 | 日韩在线日韩 | 999精品视频在线观看 | 91麻豆精品国产91久久久资源速度 | 99re视频在线| 国产综合久久 | 久久电影一区 | 天天插天天操 | 欧美亚洲国产一区二区三区 | 999久久精品 |