本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 RDS for Oracle 中縮減資料表空間
從 Oracle Database 26ai (26.0.0.0) 開始,Amazon RDS for Oracle 支援使用 rdsadmin.rdsadmin_util.shrink_tablespace 程序縮減資料表空間。使用此程序透過縮減其資料檔案來回收資料表空間中未使用的空間。縮減可降低儲存體使用量,無需遷移資料或重新建立資料表空間。
概觀
隨著時間的推移,Oracle 資料庫中的資料表空間可以從已刪除或重組的資料中累積未使用的空間。rdsadmin.rdsadmin_util.shrink_tablespace 程序會包裝 Oracle DBMS_SPACE.SHRINK_TABLESPACE功能,並為您處理所需的內部權限。
資料表空間縮減支援下列模式:
-
分析模式 (
DBMS_SPACE.TS_MODE_ANALYZE) – 評估資料表空間,並報告您可以回收多少空間,而無需進行變更。 -
收縮模式 (
DBMS_SPACE.TS_MODE_SHRINK) – 移動物件並調整資料表空間中的資料檔案大小,以回收未使用的空間。此為預設模式。
要求
若要使用資料表空間縮減,您的資料庫執行個體必須符合下列需求:
-
Oracle 資料庫 26ai 或更新版本
-
Oracle Enterprise Edition
語法
EXEC rdsadmin.rdsadmin_util.shrink_tablespace( p_tablespace_name => 'tablespace_name', p_shrink_mode =>mode, p_target_size =>target_bytes);
Parameters
| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 |
|---|---|---|---|---|
|
|
|
— |
是 |
要縮小的資料表空間名稱。 |
|
|
|
|
否 |
收縮模式。使用 |
|
|
|
|
否 |
目標大小,以位元組為單位。使用 |
範例
分析可回收空間的資料表空間
若要分析資料表空間而不進行變更,請執行下列命令:
EXEC rdsadmin.rdsadmin_util.shrink_tablespace('USERS', DBMS_SPACE.TS_MODE_ANALYZE);
下列為範例輸出:
-------------------ANALYZE RESULT------------------- Total Movable Objects: 0 Total Movable Size(GB): 0 Original Datafile Size(GB): .1 Suggested Target Size(GB): .06 Process Time: +00 00:00:00.021513
將資料表空間縮減至最小大小
若要縮小資料表空間並回收所有未使用的空間,請執行下列命令:
EXEC rdsadmin.rdsadmin_util.shrink_tablespace('USERS');
下列為範例輸出:
-------------------SHRINK RESULT------------------- Total Moved Objects: 0 Total Moved Size(GB): 0 Original Datafile Size(GB): .1 New Datafile Size(GB): .05 Process Time: +00 00:00:00.281151
將資料表空間縮減為特定目標大小
若要將資料表空間縮減為以位元組為單位的目標大小,請指定 p_target_size 參數。如果目標小於可達到的大小下限,Oracle 會自動向上調整:
EXEC rdsadmin.rdsadmin_util.shrink_tablespace('USERS', DBMS_SPACE.TS_MODE_SHRINK, 52428800);
考量事項
當您縮減資料表空間時,請考慮下列事項:
-
資料表空間縮減是線上操作。資料表空間中的物件在縮減期間仍可存取。
-
縮減操作可能會在資料表空間內移動物件,例如資料表和索引,以在調整資料檔案大小之前合併可用空間。
-
索引會在縮減操作後保持有效,並保留資料完整性。
-
如果 的值
p_target_size小於物件目前佔用的空間,Oracle 會將目標調整為可達到的大小下限。 -
的值
p_target_size不得超過目前的資料表空間大小。指定小於或等於目前大小的目標。 -
資料表空間中物件上的作用中交易可能會阻止操作回收所有可用空間。為了獲得最佳結果,請在低活動期間執行收縮。
-
不支援在沒有
rdsadmin_util包裝函式的情況下DBMS_SPACE.SHRINK_TABLESPACE直接呼叫 。一律使用rdsadmin.rdsadmin_util.shrink_tablespace包裝函式。
相關資源
-
Oracle 資料庫文件中的 DBMS_SPACE.SHRINK_TABLESPACE
-
如需詳細資訊,請參閱執行 Oracle 資料庫執行個體的一般資料庫任務。