Amazon Web Services ブログ
Amazon RDS for Oracle の追加ストレージボリュームを使ったデータ作成と再編成のベストプラクティス
本記事は 2026 年 1 月 13 日 に公開された「Best practices for creating and reorganizing data with additional storage volumes in Amazon RDS for Oracle」を翻訳したものです。
Amazon Relational Database Service (Amazon RDS) for Oracle は、クラウド上で Oracle データベースのセットアップ、運用、スケーリングを容易にするフルマネージドな商用データベースです。プロビジョニング、バックアップ、ソフトウェアパッチ適用、モニタリング、ハードウェアスケーリングといった時間のかかるデータベース管理タスクを Amazon RDS が担うため、お客様はイノベーションとアプリケーション開発に集中できます。
Amazon RDS の追加ストレージボリュームを使うと、データのニーズに合わせてストレージ性能を細かく調整しながら、合計ストレージ容量を拡張できます。RDS インスタンスに最大 3 つの追加ストレージボリュームを追加することで合計 256 TiB までプロビジョニングでき、利用可能な容量は実質 4 倍になります。各ボリュームは異なるストレージタイプと性能特性で個別に設定できるため、アクセス頻度の高いデータを高性能なストレージに配置し、アクセス頻度の低いデータをよりコスト効率の良いボリュームに移動できます。また、追加ストレージボリュームは個別かつ並行してスケールできます。Amazon Elastic Block Store (Amazon EBS) のストレージ変更操作は、インスタンスレベルではなく各ストレージボリューム単位になりました。
本記事では、追加ストレージボリュームを使って RDS for Oracle のストレージ容量を 64 TiB を超えて拡張する方法を紹介します。あわせて、追加ストレージボリュームのユースケースと、利用時のベストプラクティスも解説します。
追加ストレージボリュームの追加
追加ストレージボリュームは、AWS Management Console、AWS CLI、AWS SDK から新規または既存の RDS インスタンスに追加できます。追加後は、これらのボリューム上に新しいデータベースファイルを作成したり、性能要件に応じて既存データを移動したりできます。バックアップやリストアなどの一般的なデータベース操作にも対応しており、Amazon RDS の管理機能は追加ボリュームにも自動的に適用されます。各ボリュームのパフォーマンスメトリクスは Amazon CloudWatch でモニタリングでき、ニーズの変化に応じてボリューム設定を調整できます。
RDS for Oracle インスタンスの変更による追加ストレージボリュームの追加
既存の RDS for Oracle インスタンスに追加ストレージボリュームを追加するには、modify-db-instance コマンドで additional-storage-volumes パラメータを指定します。次のコードスニペットでは、4,000 IOPS の 5,000 GiB gp3 ボリューム rdsdbdata2 と、25,000 IOPS の 6,000 GiB io2 ボリューム rdsdbdata3 の 2 つを追加しています。
追加ストレージボリュームを持つ新規 RDS for Oracle インスタンスの作成
次のコードスニペットは、追加ストレージボリュームを 2 つアタッチした新規 RDS for Oracle インスタンスを作成します。1 つ目の追加ボリュームは io2 ストレージタイプで 8,000 GiB の rdsdbdata2、2 つ目は gp3 ストレージタイプで 5,000 GiB の rdsdbdata3 です。
インスタンス作成後は、Amazon RDS コンソールの設定タブで追加ストレージボリュームを確認するか、describe-db-instance でボリュームのステータスを確認できます。ボリュームステータスが「Not in use」の場合、ボリュームは正常にアタッチされていますが、まだデータベースでは使用されていません。
データベースファイルの作成
ボリュームの追加が完了したら、その場所に新しいデータベースファイルを作成できます。Amazon RDS for Oracle では、ストレージ上のデータベースファイル配置に Oracle Managed Files (OMF) を使用します。新しいデータベースファイルの作成時に場所を直接指定することはできず、db_create_file_dest パラメータの現在の設定から決定されます。このパラメータはセッションレベルまたはインスタンスレベルで変更できます。
- インスタンスレベル – DB インスタンスに割り当てられたパラメータグループで
db_create_file_destパラメータを更新して適用します。詳細は、RDS for Oracle の初期化パラメータと Amazon RDS の DB パラメータグループのパラメータの変更を参照してください。 - セッションレベル –
ALTER SESSION文を実行して、目的の追加ストレージボリュームをパラメータに設定します。レプリカ構成で追加ストレージボリュームを使う場合は、プライマリインスタンスとレプリカインスタンスの動作を一致させるため、セッションレベルの変更ではなくパラメータグループでデータファイルの場所を管理することをお勧めします。
db_create_file_dest パラメータを設定した後は、SQL コマンドで追加ストレージボリューム上にテーブルスペースを作成できます。
追加ストレージボリューム利用時の考慮事項
以下の点に注意してください。
- 次のデータベース構造はプライマリストレージボリュームに保存され、追加ストレージボリュームへ移動できません。
- SYSTEM テーブルスペース
- RDSADMIN テーブルスペース
- REDO ログファイル
- アーカイブログファイル
- 制御ファイル
- 追加ストレージボリュームは、プライマリボリュームが 200 GiB 以上の新規および既存の RDS for Oracle インスタンスで利用できます。追加ストレージボリュームのサイズは 200 GiB 以上である必要があります。
- 追加ストレージボリュームのストレージタイプは gp3 または io2 です。プライマリボリュームは任意のストレージタイプを使用できます。
- 追加ストレージボリュームには次のボリューム名を使用する必要があります。
- DB インスタンスの変更で追加ストレージボリュームを作成する場合、スケジュール変更の設定にかかわらず、Amazon RDS はストレージボリュームを即座に作成します。ストレージボリュームの追加はオンライン操作であり、データベースの性能には影響しません。
- Oracle Enterprise Edition (EE) では、
move_datafileプロシージャを使って既存テーブルスペースのデータファイルをボリューム間で移動できます。この操作はオンラインで実行できます。同様に、Oracle EE のALTER TABLEやALTER INDEXコマンドのONLINE句を使うと、テーブル、インデックス、パーティションをオンラインで移動できます。 - Oracle Standard Edition 2 (SE2) でもテーブルやインデックスのデータをボリューム間で移動できますが、オフライン操作となり、移動中はテーブルまたはインデックスがロックされます。
- 追加ストレージボリュームを持つ DB インスタンスの RDS for Oracle レプリカを作成すると、Amazon RDS はレプリカにも追加ストレージボリュームを自動的に設定します。ただし、その後プライマリ DB インスタンスのストレージボリュームに加えた変更は、レプリカには自動反映されません。
追加ストレージボリュームのユースケース
このセクションでは、追加ストレージボリュームのさまざまなユースケースを紹介します。
64 TiB を超えるアクティブデータへのストレージ拡張
データベースの成長に伴い、追加ストレージボリュームを追加することでストレージを 64 TiB を超えて拡張できます。追加ストレージボリュームはそれぞれ最大 64 TiB までスケールでき、最大 3 つまで追加できるため、RDS for Oracle インスタンスの最大ストレージサイズは 256 TiB になります。RDS for Oracle インスタンスのプライマリボリュームは rdsdbdata という名前で、追加ボリュームは rdsdbdata2、rdsdbdata3、rdsdbdata4 です。新しいボリュームを追加する際は、性能要件に合わせてストレージタイプとボリューム特性を選択できます。追加ストレージボリュームは io2 と gp3 の両方のボリュームタイプをサポートし、1 ボリュームあたりの最小サイズは 200 GiB です。
アクティブデータとアクセス頻度の低いデータの分離配置
追加ストレージボリュームには、ストレージ拡張以外にも独自の利点があります。たとえば、アクティブデータと履歴データを分離することでデータベース性能を改善できます。アクセス頻度の低いデータを General Purpose SSD ストレージ (gp3) の追加ボリュームに移動し、アクセス頻度の高いデータを Provisioned IOPS SSD ストレージ (io2) に保持する、といった構成が可能です。さらに Oracle のオンライン再配置機能 (Oracle EE) を使えば、アプリケーションを稼働させたままボリューム間でデータを移動できます。
別のシナリオとして、20 TB のデータベースワークロードがあり、そのうち約 5 TB がアクセス頻度の低い履歴データとして別スキーマに格納されているケースを考えます。このワークロードには読み書き合わせて合計 80,000 IOPS が必要だとします。従来この要件を満たすには、io2 ストレージタイプで 20 TB、80,000 プロビジョンド IOPS の RDS for Oracle インスタンスをプロビジョニングする必要があり、us-east-1 リージョンのストレージ料金は月額約 21,120 USD でした。
追加ストレージボリューム機能を使うと、アクティブデータ用に 60,000 IOPS の 15 TB io2 ボリュームをプロビジョニングし、アクセス頻度の低いスキーマを 5 TB の gp3 ボリュームに移動するという 2 ボリューム構成に分割でき、RDS ストレージコストは月額約 17,017 USD (15,840 USD + 1,177 USD) になります。
データロード用の一時ストレージ
RDS for Oracle インスタンスでは、データロードやエクスポート/インポートのダンプファイル、あるいは トランスポータブルテーブルスペース (XTTS) のデータファイルを置くステージング領域として、一時ストレージが必要になることがあります。追加ストレージボリュームを使えば、一時データのステージング用に新しいボリュームを作成し、移行やエクスポート/インポートの作業完了後にボリュームを削除できます。縮小できないプライマリボリュームに余分なストレージを割り当てずに済むため、コスト管理に役立ちます。
追加ストレージボリュームでのデータベース管理操作
このセクションでは、追加ストレージボリュームを使った一般的なデータベース管理操作を説明します。
追加ストレージボリュームでの Oracle Data Pump の利用
Oracle Data Pump 用のディレクトリを追加ストレージボリューム上に作成するには、次のコードを使用します。
Oracle Data Pump を使用したインポートに記載の手順に従って、新しいディレクトリでデータのエクスポートとインポートを実行します。
作業完了後は、ファイルを削除し、必要に応じてボリュームも削除できます。
追加ストレージボリュームでのトランスポータブルテーブルスペースの利用
移行やエクスポート/インポートでトランスポータブルテーブルスペース (XTTS) を使用する際に、追加ストレージボリュームをダンプファイルのステージング領域として使う手順は次のとおりです。
- 追加ストレージボリュームを持つターゲットデータベースに XTTS テーブルスペースをインポートする前に、セッションレベルで
db_create_file_destパラメータを設定します。 - XTTS インポートのステータスを確認します。
- XTTS テーブルスペースのインポートが完了したら、XTTS メタデータをインポートします。
追加ストレージボリュームでの Amazon S3 の利用
追加ストレージボリューム上にデータベースディレクトリを作成し、ファイルのステージング用に Amazon Simple Storage Service (Amazon S3) と統合する手順は次のとおりです。この統合により、Amazon S3 と追加ストレージボリューム間でファイルのダウンロードとアップロードができます。
- 追加ストレージボリューム上に Oracle ディレクトリを作成します。
- Amazon S3 から追加ストレージボリュームにファイルをダウンロードします。
- 追加ストレージボリュームから Amazon S3 にファイルをアップロードします。
ボリューム間でのデータとデータファイルの移動
データファイルとデータベースオブジェクトは、プライマリボリュームと追加ストレージボリュームの間で移動できます。移動前に次の要件を確認してください。
- 移動元と移動先の両方のボリュームに十分な空き領域が必要です。移動するファイルのサイズを確認し、移動先ボリュームに十分な空きがあることを確認してください。
- データ移動操作は両方のボリュームで I/O を消費します。移動元と移動先の両方で IOPS の Amazon CloudWatch メトリクスをモニタリングし、競合が見られる場合は IOPS を引き上げてください。CloudWatch メトリクスには
ReadIOPS、WriteIOPS、ReadIOPS_rdsdbdata2、WriteIOPS_rdsdbdata2があります。 - 大規模なデータ移動はデータベース性能に影響する可能性があります。
- スナップショットからリストアしたデータベースでは、遅延ロード (lazy loading) の影響でボリューム間のデータ移動に時間がかかる場合があります。詳細は Prewarm an Amazon RDS for Oracle database to reduce the impact of lazy loading を参照してください。
データファイルは RDSADMIN.RDSADMIN_UTIL.MOVE_DATAFILE プロシージャを使ってオンラインで移動できます。オンラインでのデータファイル移動機能は Oracle EE でのみ利用できます。
このプロシージャのパラメータは次のとおりです。
P_DATA_FILE_IDは移動するデータファイルの file_id ですP_LOCATIONはデータファイルの移動先ストレージボリュームです (例:rdsdbdata2)。
プライマリボリュームから追加ボリュームへのテーブルスペースの移動
次のコードでは、テーブルスペースをプライマリボリューム rdsdbdata から新しい追加ストレージボリューム rdsdbdata2 へ移動します。
テーブルデータとインデックスのボリューム間移動
追加ストレージボリューム上にテーブルスペースを作成し、特定のデータベースオブジェクト (テーブル、インデックス、パーティション) をそのテーブルスペースに移動することで、データベースストレージを最適化できます。次の例のように標準的な Oracle コマンドを使います。このアプローチは、アクセスパターンの異なるデータが混在するデータベースの性能チューニングに有効です。これらのコマンドは Oracle EE と Oracle SE2 の両方で使えますが、オンライン操作でのデータベースオブジェクト移動は Oracle EE でのみ可能です。たとえば、アクセス頻度の高い業務データを高性能なストレージボリュームに配置し、アクセス頻度の低い履歴データを低コストのストレージボリュームに移動するといった使い方ができます。
- 追加ボリューム上に新しいテーブルスペースを作成します。
- テーブルをオンライン操作で追加ストレージボリュームに移動するには (Oracle EE のみ)、次のコードを使用します。
- テーブルパーティションをオンライン操作で追加ストレージボリュームに移動するには (Oracle EE のみ、パーティショニングも EE の機能)、次のコードを使用します。アクセス頻度の低いデータを、追加ボリューム上の
historical_dataテーブルスペースに移動します。 - インデックスをオンライン操作で追加ストレージボリュームに移動するには (Oracle EE のみ)、次のコードを使用します。
- データ移動の進捗をモニタリングするには、次のクエリを使用します。
- 長時間操作のあるアクティブセッションを確認します。
- テーブルスペースの使用量を確認します。
追加ストレージボリューム利用のベストプラクティス
Amazon RDS for Oracle で追加ストレージボリュームを使用する際のベストプラクティスを以下にまとめます。
- BLOB や CLOB オブジェクトを含むテーブルが大容量のストレージを消費しているが、アクセス頻度が低い場合は、追加ストレージボリューム上に LOB データ用テーブルスペースを作成し、ラージオブジェクトを移動することで最適化できます。
- Amazon RDS ストレージサイズを縮小するには、追加ストレージボリューム上のオブジェクトとテーブルスペースを移動・削除した後に、追加ストレージボリュームを削除します。プライマリボリューム (
rdsdbdata) は削除できません。追加ボリュームは中身が空の場合にのみ削除できます。 - 本番環境で実施する前に、開発環境でプライマリから追加ストレージボリュームへのデータ移動操作をテストし、所要時間と性能のベースラインを把握してください。所要時間はオブジェクトのサイズ、IOPS、データベースの負荷状況に依存します。
- v$session_longops のクエリやテーブルスペース使用量のモニタリングでデータ移動の進捗を監視してください。
- Amazon RDS のストレージ操作は追加ストレージボリュームでは各ボリュームが独立して動作するため、仕組みが異なります。たとえば、io2 ストレージタイプで 45 TiB のプライマリボリューム (
rdsdbdata) と、gp3 ストレージタイプで 10 TiB の追加ストレージボリューム (rdsdbdata2) を持つ RDS for Oracle インスタンスでは、各ボリュームに対して同時にストレージ変更操作をトリガーできます。プライマリボリュームの IOPS を上げる操作を実行中に、rdsdbdata2のボリュームを 2 TiB スケールアップするなど、別の変更操作をトリガーできます。各操作は別々のボリューム上で行われるため、複数のストレージ変更操作を同時に実行できます。 - 追加ストレージボリュームを持つ RDS インスタンスのスナップショットには、すべてのボリュームが含まれます。特定のボリュームだけのスナップショットは取得できません。
- スナップショットからリストアする際は、新しい追加ストレージボリュームを追加したり、既存の追加ストレージボリュームを変更したりできます。ポイントインタイムリカバリ (PITR) でも同様です。
- データファイルの移動操作が完了した後は、必ずスナップショットを取得し、正しいファイルの場所が最新のスナップショットに反映されるようにしてください。
- リードレプリカを持つ RDS for Oracle インスタンスで追加ストレージボリュームを使用する場合は、プライマリインスタンスとレプリカインスタンスの動作を一致させるため、セッションレベルの変更ではなくパラメータグループ設定でデータファイルの場所を管理することをお勧めします。
- Oracle にはデータをアーカイブするためのソリューションが複数あります。Oracle In-Database Archiving (IDA)、Oracle Data Pump Access Driver、Oracle Partitioning などがあり、これらに限定されません。Oracle のアーカイブは Oracle Information Lifecycle Management (Oracle ILM) でも実装できます。Oracle ILM ではデータクラスを定義し、異なるストレージ層に配置できます。Oracle ILM は、データパーティショニング、Advanced Row Compression、Hybrid Columnar Compression、Automatic Data Optimization (ADO)、Heat Map、Direct NFS Client、Clonedb、SecureFiles、In-Database Archiving、Database File System (DBFS) などの Oracle 機能も活用できます。追加ストレージボリュームを持つ RDS for Oracle インスタンスで Oracle ILM を実装できます。データベースでのデータ移動の ILM 戦略を実装するには、Heat Map と ADO 機能を使用してください。詳細は Using Heat Map を参照してください。
- Multi-AZ が有効な RDS for Oracle インスタンスで追加ストレージボリュームを使用する場合、各ボリュームはスタンバイインスタンスに並行してレプリケーションされます。書き込みのレプリケーション帯域幅が増加するという利点があります。
- 追加ストレージボリュームでは、I/O 関連の CloudWatch メトリクスにボリュームごとの新しいメトリクスが追加されます。
たとえば、ボリュームレベルの WriteIOPS は CloudWatch コンソールで「WriteIOPS (per volume)」と表示されます。

より正確には、ボリュームレベルのメトリクスは CloudWatch のディメンション (DbInstanceIdentifier, VolumeName) で取得できます。
プライマリストレージボリューム (rdsdbdata) 向けに 拡張モニタリングで収集されていたメトリクスは、追加ストレージボリュームでも収集されるようになりました。これらの OS メトリクスは Amazon RDS コンソールのモニタリングタブで拡張モニタリングを選択して確認できます。拡張モニタリングメトリクスの一覧と説明は 拡張モニタリングの OS メトリクスを参照してください。

まとめ
本記事では、Amazon RDS for Oracle に導入された追加ストレージボリューム機能の概要、ユースケース、主な利点を紹介しました。あわせて、追加ストレージボリュームを使用する際のベストプラクティスと考慮事項も解説しました。ご質問やフィードバックがあれば、コメント欄にお寄せください。
著者について
この記事はSolutions Architect の 矢木 覚が翻訳しました。