Oracle函數之 ---- DBMS_LOB函數 統計數據占用空間大小


1. Oracle統計數據的大小

1,vsize()
統計每個字段的實際占用長度,統計的是單條記錄的長度

2,DBMS_LOB.getlength()
統計BLOBs, CLOBs, and NCLOBs的字段實際占用長度,統計的是單條記錄的長度

3,從聚合統計表里查
select AVG_ROW_LEN, T.* from DBA_TABLES T where table_name = 'WEB_ISC_DATA';

范例

---查看Oracle中表空間及表數據大小
SELECT SEGMENT_NAME,
       (SUM(BYTES) / 1024 / 1024 / 1024) || 'GB' AS TABLE_SIZE
  FROM USER_EXTENTS
 GROUP BY SEGMENT_NAME
 ORDER BY TABLE_SIZE DESC

---查詢指定表中clob字段對應的數據庫段segment_name
SELECT * FROM DBA_LOBS WHERE OWNER ='ZSSYS' AND TABLE_NAME ='WEB_ISC_DATA'

---數據庫段segment_name所對應的字段存庫占用空間大小
SELECT ROUND(S.BYTES / 1024 / 1024 / 1024) size_gb, S.* FROM dba_segments S WHERE segment_name='SYS_LOB0000137536C00005$$';

---范例:按照單日統計數據條數,某個LOB字段占用磁盤的大小
SELECT C_INTERFACE_ID,
       (SELECT C_BIZ_NAME
          FROM ZSSYS.WEB_ISC_INTERFACE_REG
         WHERE C_PK_ID = C_INTERFACE_ID) C_INTERFACE_ID,
       DD,
       COUNT(*),
       SUM(DBMS_LOB.GETLENGTH(C_DATA)) / 1024 / 1024
  FROM (SELECT C_INTERFACE_ID, TO_CHAR(T_CRT_TM, 'YYYY-MM-DD') AS DD, C_DATA
          FROM ZSSYS.WEB_ISC_DATA D
         WHERE T_CRT_TM > TRUNC(SYSDATE - 90))
 GROUP BY C_INTERFACE_ID, DD ;

擴展:Oracle - DBMS_LOB函數和用法

DBMS_LOB包中主要提供了以下幾個過程供用戶對內部LOB字段進行維護:

APPEND:            將源LOB中的內容加到目的LOB中。
CLOSE:             關閉已經打開的LOB。
CREATETEMPORARY:   在用戶的臨時表空間中,建立臨時LOB。

FILECLOSE:         關閉打開的BFILE定位符所指向的OS文件。
FILECLOSEALL:      關閉當前會話已經打開的所有BFILE文件。

FILEEXISTS:        確定file_loc對應的OS文件是否存在,1:存在。0:不存在。
FILEGETNAME:       獲取BFILE定位符所對應的目錄別名和文件名。
FILEISOPEN:        確定BFILE對應的OS文件是否打開。
FREETEMPORA         釋放在默認臨時表空間中的臨時LOB。
FILEOPEN:          打開文件。

GETCHUNKSIZE:      當建立包含CLOB/BLOB列的表時,通過指定CHUNK參數可以指定操縱LOB需要分配的字節數(數據庫尺寸的整數倍)默認為數據塊的尺寸。

COPY:              從源LOB中復制數據到目的LOB。

ERASE:             刪除LOB中全部或部分內容。

TRIM:              將LOB值減少到指定的長度。

WRITE:             向LOB中寫入數據。

INSTR:             返回特定樣式數據從LOB某偏移位置開始出現N次的具體位置。

IDOPEN:            確定LOB是否打開,打開:1,未打開:0。

ISTEMPORARY:       確定定位符是否為臨時LOB。

LOADFROMFILE:      將BFILE的部分或全部內容復制到目標LOB變量。

LOADBLOBFROMFILE:  將BFILE數據裝載到BLOB中,並且在裝載后取得最新的偏移位置。

OPEN:              打開LOB,open_mode(只讀:dbms_lob.lob_readonly,寫:dbms_lob.lob_readwrite)。
COMPARE:           比較兩個同種數據類型的LOB的部分或全部值是否相同。
GETLENGTH:         獲取LOB的長度。
READ:              從LOB中讀出數據。
SUBSTR:            與字符處理函數SUBSTR使用方法一樣。
WRITEAPPEND:       將緩沖區數據寫到LOB尾部。

參考
查詢oracle clob占用空間腳本
Oracle統計每條數據的大小
DBMS_LOB
Oracle - DBMS_LOB函數和用法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM