View a markdown version of this page

RDS for Oracle でのテーブルスペースの縮小 - Amazon Relational Database Service

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);

パラメータ

shrink_tablespace パラメータ
パラメータ名 データ型 デフォルト 必須 説明

p_tablespace_name

VARCHAR2

はい

縮小するテーブルスペースの名前。

p_shrink_mode

NUMBER

2 (TS_MODE_SHRINK)

いいえ

縮小モード。分析のみを行う場合は DBMS_SPACE.TS_MODE_ANALYZE (1)、縮小を実行する場合は DBMS_SPACE.TS_MODE_SHRINK (2) を使用します。

p_target_size

NUMBER

0

いいえ

ターゲットサイズ (バイト単位)。0 (デフォルト) を使用して、可能な最小サイズに縮小します。特定のターゲットに縮小する正の値を指定します。

再利用可能なスペースのテーブルスペースの分析

変更を加えずにテーブルスペースを分析するには、次のコマンドを実行します。

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 ラッパーを使用してください。

関連リソース