oracle lob值是什么,關于Oracle數據庫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

4ddcbb2ecdedeab702f67b075719366b.png

一、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數據類型分類

2.1、按存儲數據的類型分:

(1)字符類型:

CLOB:存儲大量 單字節 字符數據。

NLOB:存儲定寬 多字節 字符數據。

(2)二進制類型:

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

(3)二進制文件類型:

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

2.2、按存儲方式分:

(1)存儲在內部表空間(內部LOB):

CLOB,NLOB和BLOB

(2)指向外部操作系統文件(外部LOB):

BFILE

二、Lob的存儲

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

80cd94e14b839a193b357c5304bf7bba.png

如上例所示,每個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來獲得它的完整的腳本:

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

1、表空間

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

2、IN ROW

ENABLE STORAGE IN ROW

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空間也不能解決這個問題。而是應該使用以下命令:

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

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

5、CACHE

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

ALTER TABLE tabname MODIFY LOB (lobname) ( CACHE );

ALTER TABLE tabname MODIFY LOB (lobname) ( NOCACHE );

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

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

Select Segment_Name, Sum(bytes) / 1024 / 1024

From User_Extents

where SEGMENT_NAME LIKE 'SYS_LOB%'

GROUP BY Segment_Name

order by Sum(bytes) / 1024 / 1024 desc;

0d133108dedf825c4217f1a6a2b53f3c.png

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

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

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

129fb624bdfc31448614524d1ec1eadc.png

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/529662.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529662.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529662.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

php 統計目錄大小,PHP 統計目錄大小

例01:function dirsize($dir){$size0;//打開目錄$ddopendir($dir); //--opendir("")打開一個目錄,返回此目錄的資源句柄readdir($dd); //--通過讀兩次,來跳過特殊目錄"."、".."readdir($dd);//遍歷目錄累加大小while($f …

oracle03206,ORACLE數據庫創建表空間ORA-03206報錯的解決方案

Oracle的數據文件大小是有限制的,今天在創建表空間的時候就遇到了問題,限制很簡單,作為DBA必須要了解。測試環境:操作系統:Win7 64位專業版數據庫版本:64位Oracle10.2.0.4DB_NAME:hoegh表空間名…

oracle sql server的區別,oracle與sqlserver的十大區別

http://blog.csdn.net/it_fengli/article/details/8213839 --sql server 與 oracle的區別: --DBMS 數據庫管理系統 --1.數據類型不同。 --sql server 的數據類型:int ,smallint ,char,varchar,nchar,nvarchar,ntext,datetime,smalldatetime,money,decima…

Oracle19C的dbhome,Windows server 安裝Oracle19c (WINDOWS.X64_193000_db_home.zip) 過程碰到的問題總結...

Oracle19c的下載地址:鏈接: https://pan.baidu.com/s/1snqyViOAoeffAztPes_Tvw提取碼: 9kb6Oracle19c的安裝過程:解壓縮安裝包:解壓結果 以管理員方式運行setup開始安裝 一直默認走到安裝完成即可創建用戶cmd執行sqlplus命令,輸入…

oracle01537,ORACLE REUSE實驗

一、查看數據文件位置SQL> show user;User is "SYS"SQL> desc dba_data_files;Name Type Nullable Default Comments--------------- ------------- -------- ------- ---------------------------------------------------FILE_NAME …

oracle數據庫配置管理,Oracle配置管理

一、連接Oracle1、Oracle建立連接的過程無論是通過sqlplus命令連接還是第三方工具遠程連接到Oracle,都需要建立客戶端與服務端之間的連接。Oracle Net Service組件就是為了用于建立連接的,這個組件在安裝Oracle時已經安裝。1)在服務器端有一個listener監…

oracle 插入一個語句,oracle如何通過1條語句插入多個值 oracle通過1條語句插入多個值方法...

本篇文章小編給大家分享一下oracle通過1條語句插入多個值方法,小編覺得挺不錯的,現在分享給大家供大家參考,有需要的小伙伴們可以來看看。在實踐過程中遇到一個問題,我想往數據庫插入多條數據時,使用了如下語句&#x…

linux內核 默認路由表,[Linux] linux路由表-Go語言中文社區

路由表用于決定數據包從哪個網口發出,其主要判斷依據是目標IP地址Linux路由表其實有2個主要概念:按順序走路由策略,在路由策略對應的路由表中匹配規則路由策略(rule)路由表(table)查看所有的路由策略,32766那個策略最有用,對應的main路由表也是默認展示的…

linux添加源地址ping,實戰經驗:Linux Source NAT在Ping場景下的應用

原標題:實戰經驗:Linux Source NAT在Ping場景下的應用有時候,有這樣的一種需求:需要修改IP數據包中的源地址,比如,從某一個主機發送Ping包到另一個主機,需要修改源地址為另一個源(通常&#xff…

mac遠程linux的ide,Jupyter notebook在mac:linux上的配置和遠程訪問

IPython 和 JupyterIPython 通常指的是一個 Python REPL(交互式解釋器) shell。提供了遠比 Python shell 強大的 shell 環境。IPython 是 Iteractive Python shell的縮寫。 Notebook 是一個基于 IPython 的 web 應用。截止 IPython 3.0 ,IPython 變得越來越臃腫&…

Linux升級glibc版本漢字亂碼,Linux CentOS6升級glibc庫過程

CentOS6升級glibc庫過程hadoop無法加載native庫,可能原因是 glibc庫版本過低,需要升級。第一:安裝以下軟件yum -y install zlib zlib-devel gcc gcc-c libtool openssl openssl-devel automake autoconf libtool pcre*第二、查看系統glibc版本…

linux圖形界面 革命,Windows 95帶來的革命

CDECDE1993年6月-在“公用桌面環境“是與Sun,惠普,IBM和合資Unix系統實驗室。CDE,通用桌面環境(CommonDesktopEnvironment)的縮寫。CDE是一種運行于UNIX,基于Motif部件工具箱開發的商業桌面環境。惠普的OpenVMS采用CDE作為標準的桌…

real time linux pdf,【整理】ubuntu real time Linux

ubuntu real timeUbuntu不支持實時可參考看看如何才能支持想要自己編譯實時內核的話參考去:下載:The Real Time Preempt Patch然后自己編譯即可。對于實時系統所支持的功能和特性以及平臺,詳見這里提供了 已編譯好的實時的Debian相關內容或參…

arm64 linux 除零正常返回,arm64程序調用規則

前言這篇主要介紹arm64程序調用規則,詳細分析了程序調用過程中,參數是如何傳遞的。Android、iOS、Linux等基本遵循這些規則,但是各個操作系統平臺也有小部分自己特定的規則。下一篇,我將介紹iOS平臺的特定規則。術語介紹術語意義A…

蘋方字體 for linux,蘋果蘋方字體

蘋果蘋方字體是一款很實用的字體軟件,蘋果蘋方字體是為中國蘋果用戶打造的全新字體,共有六種字重,使用方便,能夠滿足用戶在閱讀時不同的字體需求,并且蘋果蘋方字體還可以在安卓、Linux 等其他平臺和設備上使用&#xf…

linux系統關機half,Linux 學習 (六) 關機與重啟命令

JavaScript基礎 DOM的操作1.DOM的基本概念 DOM是文檔對象模型,這種模型為樹模型:文檔是指標簽文檔:對象是指文檔中每個元素:模型是指抽象化的東西. 2.Windows對象操作 一.屬性和方法: window對象——瀏覽器 ...推薦《HeadFirst設計模式》相對于國內初版的,HeadFirst真的是更好的…

職坐標c語言,C/C++知識點之hexdump的C語言實現

本文主要向大家介紹了C/C知識點之hexdump的C語言實現,通過具體的內容向大家展示,希望對大家學習C/C知識點有所幫助。1 void hexdump(char *buf, int len)2 {3 int i 0;45 printf("\n----------------------hexdump-----------------------…

C語言編雜志程序,c語言程序錯誤修改

題目:雜志訂閱管理系統使用計算機對一種雜志的訂閱進行管理,該雜志最多訂戶不超過10人,每個訂戶的信息包括:姓名 性別 地址 電話號碼 雜志單價 訂閱數 訂閱期限(至**年**月)。現要求用菜單選擇并完成下述的功能:(1)增加新訂戶,既將訂戶的全部信息輸入到文…

c語言關鍵詞中英翻譯機編程,課程設計--C語言關鍵字中英翻譯機

《課程設計--C語言關鍵字中英翻譯機》由會員分享,可在線閱讀,更多相關《課程設計--C語言關鍵字中英翻譯機(21頁珍藏版)》請在人人文庫網上搜索。1、課課 程程 設設 計計 報報 告告 學院、系: 專業名稱: 課程設計科目 所在班級&…

c語言參數不能用 嗎,如何在C語言中禁止“未使用的參數”警告?

您可以使用gcc / clang的未使用屬性,但是我在標頭中使用這些宏,以避免在整個源代碼中__attribute__都有gcc特定的屬性,而且到處都有點冗長/難看。#ifdef __GNUC__# define UNUSED(x) UNUSED_ ## x __attribute__((__unused__))#else# defin…