在查看表空間的使用情況的時候,發現有幾個LOBSEGMENT、LOBINDEX類型的對象占用了大量的空間。於是想找出那些表占用了大量的空間,以便於清理。
Oracle對BLOB類型的定義為:存儲大型的、未被結構化的的變長二進制數據(如二進制文件、圖片文件、音頻和視頻等非文本文件),在Oracle11g中BLOB最大存儲容量為128TB;CLOB的定義為:用於存儲單字節或多字節的大型字符串對象,支持使用數據庫字符集的定長或變長字符,在Oracle11g中CLOB最大存儲容量為128TB。顯然,LOB類型通常用來存儲大的信息,故lobsegment、lobindex占用空間較大也就不足為奇了。
當表含有LOB字段時,Oracle會為含有LOB字段的列單獨創建一個lobsegment,同時還會創建一個lobindex。那么lobsegment、lobindex是如何與表關聯起來的呢?可以使用xxx_lobs來查找lobsegment、lobindex與表之間的關系:
select owner, table_name, column_name, segment_name, index_name from dba_lobs;
另外,如果lob segment是系統自動命名的,那么遵循下面的規則,可以通過dba_objects查找到對象和dba_tab_columns查找到想要的列號
SYS_LOB(10 digit object_id)C(5 digit col#)$$
而lobindex必然是系統自動創建的,遵循下面的規則:
SYS_IL(10 digit object_id)C(5 digit col#)$$
這樣就能確認logsegment和lobindex屬於哪個表的哪一列了。
->_->