Oracle查找lobsegment、lobindex對應的表


        在查看表空間的使用情況的時候,發現有幾個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屬於哪個表的哪一列了。

->_->


免責聲明!

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



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