すべてのプロダクト
Search
ドキュメントセンター

Data Transmission Service:自己管理 Oracle データベースから自己管理 PostgreSQL データベースへのデータ移行

最終更新日:Mar 29, 2026

Data Transmission Service (DTS) を使用して、ダウンタイムを最小限に抑えながら、自己管理 Oracle データベースから自己管理 PostgreSQL データベースへデータを移行します。DTS はスキーマ移行、完全なデータ移行、および増分データ移行をサポートしており、これら 3 つの移行タイプを同時に実行することで、移行中も Oracle データベースをオンラインのまま利用できます。

前提条件

開始する前に、以下の点を確認してください。

  • Oracle データベースのバージョンが 9i、10g、11g、12c、18c、または 19c である

  • Oracle データベースはアーカイブログモードで実行中であり、アーカイブログファイルにアクセス可能で、適切な保存期間が設定されています — アーカイブされたリドログファイルの管理

  • 補足ログ記録が有効になっています: SUPPLEMENTAL_LOG_DATA_PK および SUPPLEMENTAL_LOG_DATA_UI の両方が [はい] に設定されています — 詳細については、「補足ログ記録」をご参照ください。

  • 移行対象の各テーブルにプライマリキーまたは UNIQUE NOT NULL インデックスが定義されている

  • ターゲットとなる PostgreSQL データベースが作成済みで、アクセス可能である

  • DTS の Oracle ソースに対する機能と制限を確認した上で、移行前に Advanced Database & Application Migration (ADAM) を使用してデータベースを評価してください。「Oracle データベースの準備」および「概要」をご参照ください。

課金

移行タイプタスク構成料金インターネットトラフィック料金
スキーマ移行および完全なデータ移行無料Alibaba Cloud からインターネット経由でデータを移行する場合のみ課金されます。詳細については、「課金概要」をご参照ください。
増分データ移行課金対象です。詳細については、「課金概要」をご参照ください。

移行タイプ

タイプDTS の処理内容
スキーマ移行選択したオブジェクトのスキーマをターゲット PostgreSQL データベースに移行します。対応するオブジェクトタイプ:テーブル、ビュー、シノニム、トリガー、ストアドプロシージャ、ストアドファンクション、パッケージ、およびカスタム型。Oracle によって自動生成される組み込みオブジェクトは移行されません。
説明

このシナリオでは、DTS はトリガーと互換性がありません。データの不整合を回避するため、移行前にソースデータベースからトリガーを削除してください。詳細については、「トリガーを含むソースデータベース向けのデータ同期タスクの構成」をご参照ください。

完全なデータ移行Oracle データベースから既存のすべてのデータをターゲット PostgreSQL データベースに移行します。このフェーズ中は、移行済みオブジェクトに対して DDL 操作を実行しないでください。
増分データ移行完全なデータ移行が完了した後、DTS は Oracle データベースからリドログファイルをポーリングし、進行中の変更を PostgreSQL にレプリケートします。これにより、移行中もアプリケーションを Oracle 上で継続して実行できます。

移行タイプの選択

  • スキーマ移行 + 完全なデータ移行のみ:切り替え時にソースデータベースをオフラインにできる一括移行に使用します。

  • スキーマ移行 + 完全なデータ移行 + 増分データ移行:ダウンタイムをほぼゼロに抑えた移行に使用します。DTS が進行中の変更を PostgreSQL にレプリケートしている間も、Oracle データベースはオンラインのままです。

増分データ移行を含めない場合は、データの不整合を回避するため、移行中にソースデータベースへの書き込みを停止してください。

増分移行でサポートされる SQL 操作

操作タイプ
DMLINSERT、UPDATE、DELETE
DDLCREATE TABLE(パーティション句、サブパーティション句、または関数を含む文、および CREATE TABLE AS SELECT はサポートされていません)、ALTER TABLE(ADD COLUMN、ADD INDEX、DROP COLUMN、DROP INDEX、MODIFY COLUMN、RENAME COLUMN)、DROP TABLE、RENAME TABLE、TRUNCATE TABLE、CREATE INDEX

制限事項

ソースデータベースの制限事項:

  • ソースデータベースをホストするサーバーには十分なアウトバウンド帯域幅が必要です。帯域幅が不足すると、移行速度が低下します。

  • 移行対象のテーブルには、すべてのフィールドが一意である PRIMARY KEY または一意制約(UNIQUE constraint)が設定されている必要があります。それ以外の場合、ターゲットデータベースに重複レコードが含まれる可能性があります。

  • Oracle のバージョンが 12c 以降の場合、テーブル名は 30 バイトを超えてはなりません。

  • テーブルを移行オブジェクトとして選択し、ターゲットでテーブルまたはカラムの名前を変更する必要がある場合:単一のタスクでは最大 1,000 個のテーブルをサポートします。1,000 個を超えるテーブルを移行する場合は、複数のタスクをバッチ処理で実行するか、データベース全体を 1 つのタスクで移行してください。

  • Oracle の VARCHAR2 型フィールドに空文字列(Oracle では NULL として扱われる)が含まれており、対応するターゲットカラムに NOT NULL 制約が設定されている場合、移行タスクは失敗します。

  • Express Connect 経由で接続される Oracle RAC データベースをソースデータベースとして使用する場合、ソースデータベースの構成時にデータベースの VIP を指定する必要があります。

  • Express Connect、VPN Gateway、Smart Access Gateway、Database Gateway、または Cloud Enterprise Network(CEN)経由で接続される Oracle RAC データベースをソースデータベースとして使用する場合、Single Client Access Name(SCAN)IP アドレスではなく、単一の VIP を使用できます。VIP を指定した後は、Oracle RAC データベースのノードフェイルオーバーはサポートされません。

増分移行の要件:

  • リドログおよびアーカイブログの有効化が必要です。

  • 増分移行のみ:リドログおよびアーカイブログを 24 時間以上保持してください。

  • 完全なデータ移行 + 増分データ移行:リドログおよびアーカイブログを最低 7 日間保持してください。完全なデータ移行が完了した後は、保持期間を 24 時間以上に短縮できます。

    重要

    DTS が保持期間の不足によりリドログまたはアーカイブログを取得できない場合、タスクは失敗します。最悪の場合、データの不整合やデータ損失が発生する可能性があります。保持期間の不足は、DTS のサービスレベルアグリーメント(SLA)の対象外です。

移行中のソースデータベースで避けるべき操作:

  • スキーマ移行または完全なデータ移行中は、DDL 操作(スキーマ変更)を実行しないでください — タスクが失敗します。

  • 完全なデータ移行のみのタスク実行中は、ソースデータベースへの書き込みを実行しないでください — データの不整合が発生する可能性があります。

  • どの移行フェーズにおいても、LONGTEXT カラムの更新は実行しないでください — タスクが失敗します。

その他の制限事項:

  • 非ピーク時間帯にデータを移行してください。完全なデータ移行では、両方のデータベースで読み取りおよび書き込みリソースが使用されるため、サーバー負荷が増加します。

  • 完全なデータ移行後、ターゲットクラスターの使用済み表領域はソースデータベースよりも大きくなります。これは、同時 INSERT 操作によるテーブルの断片化が原因です。

  • DTS は失敗した移行タスクを最大 7 日間再試行します。ワークロードをターゲットに切り替える前に、失敗したタスクを停止またはリリースするか、REVOKE を使用して DTS のターゲットデータベースへの書き込み権限を取り消してください。そうしないと、再開されたタスクがターゲットのデータを上書きする可能性があります。

  • ソースおよびターゲットデータベースの文字セットは互換性がある必要があります — 互換性がない文字セットはデータの不整合またはタスク失敗を引き起こします。

  • 互換性のないデータ型によるタスク失敗を回避するため、DTS のスキーマ移行機能を使用してください。

  • ソースおよびターゲットデータベースのタイムゾーンは一致している必要があります。

  • NULL 終端文字 '\0' は PostgreSQL に書き込めません。移行データに '\0' が含まれている場合、DTS はこれを破棄しますが、これによりデータの不整合が発生する可能性があります。

  • スキーマ移行中、Oracle の CHECK 制約は PostgreSQL では NOT NULL 制約に変換されます。

  • カスタム型オブジェクトは移行されますが、Oracle によって自動生成される組み込みオブジェクトは移行されません。

  • スキーマ移行中、DTS はソースからターゲットへ外部キーを移行します。

  • 完全なデータ移行および増分データ移行中、DTS はセッションレベルで外部キー制約チェックおよびカスケード操作を一時的に無効化します。このフェーズ中にソースでカスケードまたは削除操作を実行すると、データの不整合が発生する可能性があります。

必要な権限の付与

ソース Oracle データベースにログインし、DTS 用のアカウントを作成して、必要な権限を付与します。

以下の権限を既に持つアカウントをお持ちの場合は、この手順をスキップしてください。
データベーススキーマ移行完全なデータ移行増分データ移行
自己管理 Oracle データベーススキーマ所有者権限スキーマ所有者権限詳細な権限
自己管理 PostgreSQL データベーススキーマ所有者権限

アカウントの作成および権限の付与に関する手順は以下のとおりです。

移行タスクの作成

  1. 「データ移行タスク」ページに移動します。

    1. Data Management(DMS)コンソール にログインします。

    2. トップナビゲーションバーで、DTS をクリックします。

    3. 左側のナビゲーションウィンドウで、DTS(DTS)データ移行 を選択します。

    手順は DMS コンソールのレイアウトに基づいて異なる場合があります。「シンプルモード」および「DMS コンソールのレイアウトとスタイルをカスタマイズする」をご参照ください。また、「新しい DTS コンソールのデータ移行タスクページ」に直接アクセスすることもできます。
  2. データ移行タスク の横にあるドロップダウンリストから、データ移行インスタンスが配置されているリージョンを選択します。

    新 DTS コンソールでは、左上隅のリージョンを選択します。
  3. タスクの作成 をクリックし、ウィザードでソースおよびターゲットデータベースを構成します。

    警告

    ソースおよびターゲットデータベースの構成後、次に進む前に、ページ上部に表示される 制限事項 を必ずご確認ください。

    セクションパラメーター説明
    該当なしタスク名DTS が自動的に名前を割り当てます。タスクを容易に識別できるように、意味のある名前を指定してください。タスク名は一意である必要はありません。
    ソースデータベースデータベースタイプOracle を選択します。
    アクセス方法この例では、[ECS 上のセルフマネージドデータベース] を選択します。他のアクセス方法の場合は、まず必要な環境を設定します。詳しくは、「準備の概要」をご参照ください。
    インスタンスリージョンソース Oracle データベースが配置されているリージョンです。
    ECS インスタンス IDソース Oracle データベースをホストする Elastic Compute Service(ECS)インスタンスの ID です。
    ポート番号ソース Oracle データベースのサービスポートです。デフォルト値:1521
    Oracle タイプソース Oracle データベースのアーキテクチャを選択します。非 RAC インスタンス の場合は SID パラメーターが必要です。RAC または PDB インスタンス の場合は サービス名 パラメーターが必要です。
    データベースアカウントソース Oracle データベース用の DTS アカウントです。「必要な権限の付与」で必要な権限をご確認ください。
    データベースパスワードデータベースアカウントのパスワードです。
    ターゲットデータベースデータベースタイプPostgreSQL を選択します。
    アクセス方法この例では、ECS 上の自己管理データベース を選択します。
    インスタンスリージョンターゲット PostgreSQL データベースが配置されているリージョンです。
    ECS インスタンス IDターゲット PostgreSQL データベースをホストする ECS インスタンスの ID です。
    ポート番号ターゲット PostgreSQL データベースのサービスポートです。デフォルト値:3433
    データベース名ターゲット PostgreSQL データベースの名前です。
    データベースアカウントターゲット PostgreSQL データベース用の DTS アカウントです。「必要な権限の付与」で必要な権限をご確認ください。
    データベースパスワードデータベースアカウントのパスワードです。
  4. 自己管理データベースに IP アドレスホワイトリストが設定されている場合、DTS サーバーの CIDR ブロックをホワイトリストに追加してください。その後、接続テストと続行 をクリックします。

    警告

    DTS サーバーの CIDR ブロックをデータベースのホワイトリストまたは ECS のセキュリティグループルールに追加すると、セキュリティリスクが発生します。続行する前に、強力な認証情報を使用する、公開ポートを制限する、API 呼び出しを認証する、ホワイトリストルールを定期的に確認する、不正な CIDR ブロックをブロックするなどの予防措置を講じてください。あるいは、Express Connect、VPN Gateway、または Smart Access Gateway を使用してデータベースを DTS に接続し、データベースをインターネットに公開せずに済ませることもできます。

  5. 移行オブジェクトおよび高度な設定を構成します。

    パラメーター説明
    移行タイプ一括移行の場合は、スキーマ移行 および 完全なデータ移行 を選択します。移行中にソースデータベースをオンラインのままにする場合は、すべての 3 つ — スキーマ移行完全なデータ移行、および 増分データ移行 — を選択します。
    競合テーブルの処理モード事前チェックを行い、エラーを報告:ターゲットデータベースにソーステーブルと同じ名前のテーブルが存在する場合、事前チェックは失敗します。同一のテーブル名が存在し、名前変更できない場合は、オブジェクト名マッピングを使用して、ターゲットデータベースに移行されるテーブルの名前を変更してください。「オブジェクト名のマッピング」をご参照ください。エラーを無視して続行:同一のテーブル名についての事前チェックをスキップします。
    警告

    このオプションでは、プライマリキーが一致するレコードは移行されず、スキーマの差異により部分的な移行またはタスク失敗が発生する可能性があります。

    ソースオブジェクトソースオブジェクト からオブジェクトを選択し、矢印アイコンをクリックして 選択済みオブジェクト に移動します。
    選択済みオブジェクトターゲットで単一のオブジェクトの名前を変更するには、選択済みオブジェクト 内で右クリックします。「単一オブジェクトの名前のマッピング」をご参照ください。複数のオブジェクトを一度に名前変更するには、一括編集 をクリックします。「複数のオブジェクト名を一度にマッピング」をご参照ください。
    説明

    オブジェクトの名前変更により、依存オブジェクトの移行が失敗する可能性があります。条件に基づいて行をフィルターするには、テーブルを右クリックして WHERE 句を指定します。「フィルター条件の設定」をご参照ください。特定のオブジェクトについて、増分的にレプリケートされる SQL 操作を制御するには、オブジェクトを右クリックして操作を選択します。

  6. 次へ:高度な設定 をクリックし、以下のパラメーターを構成します。

    パラメーター説明
    タスクのスケジュールに使用する専用クラスターの選択DTS はデフォルトで共有クラスターにスケジュールします。分離されたリソースを確保するには、専用クラスターを購入してください。詳細については、「DTS 専用クラスターとは
    接続失敗時の再試行時間タスク開始後にソースまたはターゲットデータベースに到達不能になった場合の DTS の再試行時間です。有効範囲:10~1440 分。デフォルト値:720。30 を超える値を設定することを推奨します。再試行ウィンドウ内に DTS が再接続できた場合、タスクは再開されます。それ以外の場合はタスクが失敗します。
    説明

    複数のタスクが同じデータベースを共有する場合、最も最近設定された再試行時間が適用されます。再試行中は DTS インスタンスに対して課金されます — 再試行ウィンドウは要件に応じて設定し、不要になった時点で速やかにインスタンスをリリースしてください。

    ソースおよびターゲットデータベースでその他の問題が発生した際の再試行までの待機時間タスク開始後に DDL または DML 操作が失敗した場合の DTS の再試行時間です。有効範囲:1~1440 分。デフォルト値:10。10 を超える値を設定することを推奨します。
    重要

    この値は 接続失敗時の再試行時間 より小さくする必要があります。

    完全なデータ移行のスロットリングの有効化完全なデータ移行中に DTS がデータベースに与える読み取り/書き込み負荷を制限します。ソースデータベースへの QPS完全なデータ移行の RPS、および 完全移行のデータ移行速度(MB/s) を構成します。完全なデータ移行 が選択されている場合にのみ利用可能です。
    増分データ移行のスロットリングの有効化増分移行中の負荷を制限します。増分データ移行の RPS および 増分移行のデータ移行速度(MB/s) を構成します。増分データ移行 が選択されている場合にのみ利用可能です。
    環境タグDTS インスタンスを環境(例:本番またはステージング)でタグ付けします。任意設定です。
    実際の書き込みコードターゲットデータベースへのデータ書き込みに使用されるエンコード形式です。
    ETL の構成ETL (抽出・変換・書き出し) 機能を有効化して、データを転送中に変換します。詳細については、「ETL とは?」および「データ移行またはデータ同期タスクで ETL を設定する」をご参照ください。
    モニタリングとアラートアラートを設定して、タスクが失敗した場合や移行遅延がしきい値を超えている場合に、指定された連絡先に通知されるようにします。詳細については、「新しい DTS タスクのモニタリングとアラートの設定」をご参照ください。
  7. 次へ:タスク設定の保存と事前チェック をクリックします。DTS はタスク開始前に事前チェックを実行します。事前チェックが失敗した場合:

    • 各失敗項目の横にある 詳細の表示 をクリックし、問題を修正してから 再チェック をクリックします。

    • 安全に無視できる警告が表示された場合は、警告の詳細の確認無視OK をクリックし、その後 再チェック をクリックします。

    この構成の API パラメーターを確認するには、次へ:タスク設定の保存と事前チェック の上にマウスを合わせ、API 呼び出しのプレビュー をクリックします。
  8. 事前チェックの 成功率100% になるまで待ち、その後 次へ:インスタンスの購入 をクリックします。

  9. インスタンスの購入 ページで、インスタンスクラスを構成します。

    セクションパラメーター説明
    新規インスタンスクラスリソースグループデータ移行インスタンスのリソースグループです。デフォルト値:デフォルトリソースグループResource Management とは
    インスタンスクラスインスタンスクラスは、移行スループットを決定します。詳細については、「データ移行インスタンスの仕様」をご参照ください。
  10. Data Transmission Service(従量課金)サービス利用規約 を読み、同意した上で、購入して開始 をクリックします。移行タスクが開始されます。タスク管理ページで進行状況を監視できます。