1. 程式人生 > 實用技巧 >【Oracle】檢視帶Lob欄位的表大小

【Oracle】檢視帶Lob欄位的表大小

  Oracle中,對錶上的lob欄位是單獨儲存的,所以使用segment_name = 表名的時候,只能統計非 lob 欄位的資料大小,無法統計上lob欄位的。

  為了方面統計,在MOS上找到一篇參考文章:

How to Compute the Size of a Table containing Outline CLOBs and BLOBs (文件 ID 118531.1)

相關的SQL語句如下:

SELECT
 (SELECT SUM(S.BYTES)                                                                                                                   
-- The Table Segment size FROM DBA_SEGMENTS S WHERE S.OWNER = UPPER('&SCHEMA') AND (S.SEGMENT_NAME = UPPER('&TABNAME'))) + (SELECT SUM(S.BYTES)             -- The Lob Segment Size FROM DBA_SEGMENTS S, DBA_LOBS L WHERE S.OWNER = UPPER('
&SCHEMA') AND (L.SEGMENT_NAME = S.SEGMENT_NAME AND L.TABLE_NAME = UPPER('&TABNAME') AND L.OWNER = UPPER('&SCHEMA'))) + (SELECT SUM(S.BYTES) -- The Lob Index size FROM DBA_SEGMENTS S, DBA_INDEXES I WHERE S.OWNER = UPPER('&SCHEMA') AND (I.INDEX_NAME = S.SEGMENT_NAME AND I.TABLE_NAME = UPPER('
&TABNAME') AND INDEX_TYPE = 'LOB' AND I.OWNER = UPPER('&SCHEMA'))) "TOTAL TABLE SIZE" FROM DUAL;