Oracle

如何檢查可用的 Oracle Extent 可用空間?

  • May 21, 2019

我需要向一個中等大的表添加一些索引,並且我想提前知道表空間是否有空間容納索引。(假設範圍會自動增加大小,但 DBA 並不總是正確設置,我不想成為使系統崩潰的那個。)我需要執行什麼 SQL 來查看如何有多少可用空間?

select tablespace_name, round(sum(bytes)/(1024*1024)) free_mb 
from dba_free_space group by tablespace_name;

但這並不總是那麼簡單。例如,雖然可能有 100M 可用並且您可能想要創建一個您估計為 80M 的索引,但它可能會嘗試獲取 120M 的新範圍並失敗。

此外,如果您有一個 50M 的表並將其丟棄,那麼您的 100M 可用空間可能是 50M 的兩個塊。同樣,如果數據庫試圖獲得 100M 的範圍,它可能會失敗。

如果表空間沒有可用空間但設置為自動擴展(dba_tablespaces 上的segment_space_management),那麼它可能會顯示為空間不足但可以工作。或沒有,取決於底層文件系統是否有足夠的空間。

引用自:https://serverfault.com/questions/68142