RDS for Oracle でのテーブルスペースの縮小
Oracle Database 26ai (26.0.0.0) 以降、Amazon RDS for Oracle は rdsadmin.rdsadmin_util.shrink_tablespace プロシージャによるテーブルスペースの縮小をサポートしています。データファイルを縮小して、テーブルスペース内の未使用のスペースを再利用するには、この手順を使用します。縮小すると、データ移行やテーブルスペースの再作成を行わずにストレージの消費量を削減できます。
概要
時間の経過とともに、Oracle Database のテーブルスペースは、削除または再編成されたデータから未使用のスペースを蓄積する可能性があります。rdsadmin.rdsadmin_util.shrink_tablespace プロシージャは、Oracle DBMS_SPACE.SHRINK_TABLESPACE の機能をラップし、必要な内部権限を処理します。
テーブルスペースの縮小では、次のモードがサポートされています。
-
分析モード (
DBMS_SPACE.TS_MODE_ANALYZE) – テーブルスペースを評価し、変更を加えずに再利用できるスペースを報告します。 -
縮小モード (
DBMS_SPACE.TS_MODE_SHRINK) – オブジェクトを移動し、テーブルスペース内のデータファイルのサイズを変更して、未使用のスペースを再利用します。これはデフォルトモードです。
要件
テーブルスペースの縮小を使用するには、DB インスタンスが次の要件を満たしている必要があります。
-
Oracle Database 26ai 以降
-
Oracle Enterprise Edition
構文
EXEC rdsadmin.rdsadmin_util.shrink_tablespace( p_tablespace_name => 'tablespace_name', p_shrink_mode =>mode, p_target_size =>target_bytes);
パラメータ
| パラメータ名 | データ型 | デフォルト | 必須 | 説明 |
|---|---|---|---|---|
|
|
|
— |
はい |
縮小するテーブルスペースの名前。 |
|
|
|
|
いいえ |
縮小モード。分析のみを行う場合は |
|
|
|
|
いいえ |
ターゲットサイズ (バイト単位)。 |
例
再利用可能なスペースのテーブルスペースの分析
変更を加えずにテーブルスペースを分析するには、次のコマンドを実行します。
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ラッパーを使用してください。
関連リソース
-
DBMS_SPACE.SHRINK_TABLESPACE
(Oracle Database ドキュメント) -
詳細については、「Oracle DB インスタンスの一般的なデータベースタスクの実行」を参照してください。