Oracle
如何檢查可用的 Oracle Extent 可用空間?
我需要向一個中等大的表添加一些索引,並且我想提前知道表空間是否有空間容納索引。(假設範圍會自動增加大小,但 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),那麼它可能會顯示為空間不足但可以工作。或沒有,取決於底層文件系統是否有足夠的空間。