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

Data Transmission Service:AnalyticDB for MySQL 3.0 に自己管理型の Oracle データベースを移行する

最終更新日:Mar 28, 2026

Data Transmission Service (DTS) は、スキーマ移行、完全なデータ移行、増分データ移行の 3 つのフェーズで、自己管理 Oracle データベースから AnalyticDB for MySQL V3.0 クラスターにデータを移行します。これら 3 つのフェーズをすべて実行することで、移行中のダウンタイムなしでサービスを継続できます。

仕組み

DTS は Oracle ソースからデータを取得し、以下の 3 つの連続したフェーズで AnalyticDB for MySQL に書き込みます。

  1. スキーマ移行 — DTS は、宛先クラスターでテーブル構造を変換して作成します。外部キーは移行されません。

  2. 完全なデータ移行 — DTS は、ソースから宛先にすべての既存データをコピーします。同時に INSERT 操作を行うと、宛先クラスターでテーブルの断片化が発生する可能性があります。

  3. 増分データ移行 — DTS は Oracle の REDO ログとアーカイブ・ログを読み取って進行中の変更をキャプチャし、ほぼリアルタイムで宛先に適用します。DML 操作 (INSERT、UPDATE、DELETE) のみがキャプチャされます。

DTS が AnalyticDB for MySQL V3.0 に書き込む際、UPDATE 文は自動的に REPLACE INTO に変換されます。プライマリキーに対する UPDATE 操作は、DELETE + INSERT に変換されます。

前提条件

開始する前に、以下が準備できていることを確認してください:

  • ソース Oracle データベースの合計サイズよりも大きい利用可能なストレージを持つ AnalyticDB for MySQL V3.0 クラスター。詳細については、「クラスターの作成」をご参照ください。

  • ソース Oracle データベースがアーカイブログモードで実行されており、アーカイブ REDO ログファイルにアクセス可能で、適切な保持期間が設定されていること。詳細については、「アーカイブ REDO ログファイルの管理」をご参照ください。

  • ソース Oracle データベースで補足ログが有効になっており、SUPPLEMENTAL_LOG_DATA_PKSUPPLEMENTAL_LOG_DATA_UIYes に設定されていること。ソース Oracle データベースで以下の SQL コマンドを実行して、アーカイブログと補足ログを有効にします:

    -- アーカイブログを有効化 (アーカイブログモードが必要)
    -- 現在のモードを確認:
    SELECT LOG_MODE FROM V$DATABASE;
    
    -- データベースレベルで補足ログを有効化
    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
    
    -- プライマリキーの補足ログを有効化
    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
    
    -- 一意なインデックスの補足ログを有効化
    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (UNIQUE INDEX) COLUMNS;
    
    -- 補足ログのステータスを確認
    SELECT SUPPLEMENTAL_LOG_DATA_MIN,
           SUPPLEMENTAL_LOG_DATA_PK,
           SUPPLEMENTAL_LOG_DATA_UI
    FROM V$DATABASE;
    -- 期待される結果: SUPPLEMENTAL_LOG_DATA_PK = YES, SUPPLEMENTAL_LOG_DATA_UI = YES

    詳細については、「補足ログ」および「Oracle データベースの設定」をご参照ください。

  • Oracle データベースの移行における DTS の機能と制限に精通していること。Advanced Database & Application Migration (ADAM) は、クラウドへのスムーズな移行を確実にするために、データベース評価に使用されます。「Oracle データベースの準備」および「概要」をご参照ください。

  • 必要な権限を持つソース Oracle データベース上のデータベースアカウント。詳細については、「必要な権限」をご参照ください。

  • 読み取り/書き込み権限を持つ宛先 AnalyticDB for MySQL V3.0 クラスター上のデータベースアカウント。

サポートされている Oracle データベースのバージョンについては、「データ移行シナリオの概要」をご参照ください。

必要な権限

移行タスクを設定する前に、各データベースのデータベースアカウントを作成し、以下の権限を付与してください。これらの権限を持つアカウントが既に存在する場合は、このステップをスキップしてください。

データベーススキーマ移行完全なデータ移行増分データ移行
自己管理 Oracle データベーススキーマオーナー権限スキーマオーナー権限詳細な権限
AnalyticDB for MySQL V3.0 クラスターターゲットデータベースに対する読み取り/書き込み権限

アカウントを作成して権限を付与するには:

制限事項

タスクを設定する前に、以下の制限事項を確認してください。

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

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

カテゴリ制限事項
帯域幅ソースサーバーには十分なアウトバウンド帯域幅が必要です。そうでない場合、移行速度が低下します。
Express Connect 経由の Oracle RACデータベースに仮想 IP アドレス (VIP) を指定してください。
Express Connect、VPN Gateway、Smart Access Gateway、データベースゲートウェイ、または Cloud Enterprise Network (CEN) 経由の Oracle RACSingle Client Access Name (SCAN) IP アドレスではなく、単一の VIP を使用してください。VIP を指定した後、Oracle RAC データベースのノードフェイルオーバーはサポートされません。
VARCHAR2 の空文字列Oracle は空の VARCHAR2 文字列を null として評価します。宛先フィールドに NOT NULL 制約がある場合、移行タスクは失敗します。
テーブル制約テーブルには、すべてのフィールドが一意である PRIMARY KEY または UNIQUE 制約が必要です。これらの制約がない場合、宛先に重複レコードが含まれる可能性があります。
Oracle 12c 以降テーブル名は 30 バイトを超えることはできません。
テーブル名の変更制限テーブルを移行オブジェクトとして選択し、テーブル名または列名を変更する必要がある場合:単一のタスクは最大 1,000 テーブルまでサポートします。1,000 テーブルを超える場合は、複数のタスクを設定するか、データベース全体を移行してください。
増分移行:ログ保持REDO ログとアーカイブ・ログは少なくとも 7 日間保持する必要があります。保持期間が短いとタスクが失敗し、例外的な場合にはデータの不整合や損失が発生する可能性があります。保持期間が不十分な場合、DTS のサービスレベルアグリーメント (SLA) は信頼性やパフォーマンスを保証しません。
増分移行:ソース操作増分移行中に Oracle Data Pump を使用してソースにデータを書き込まないでください。データ損失が発生する可能性があります。
移行中の DDLスキーマ移行または完全なデータ移行中に、データベースまたはテーブルスキーマを変更する DDL 操作を実行しないでください。タスクは失敗します。
完全なデータ移行:ソースへの書き込み完全なデータ移行のみ (増分移行なし) の間は、ソースにデータを書き込まないでください。ソースと宛先の間でデータの不整合が発生する可能性があります。

宛先クラスターの制限事項

カテゴリ制限事項
ディスク使用率AnalyticDB for MySQL V3.0 クラスター内のいずれかのノードのディスク使用率が 80% を超えると、DTS タスクで例外が発生し、タスクが遅延します。移行を開始する前に必要な容量を見積もり、送信先クラスターに十分なストレージ容量があることを確認してください。
プライマリキーターゲットデータベースでカスタムプライマリキーを指定するか、テーブルのフィールド設定時に [プライマリキー列] を設定します。プライマリキーがない場合、移行が失敗することがあります。
バックアップの競合DTS タスクの実行中に送信先クラスターでバックアップが実行されると、DTS タスクは失敗します。
外部テーブル外部テーブルは移行できません。
文字セットソースデータベースとターゲットデータベースの文字セットには互換性が必要です。互換性のない文字セットを使用すると、データの不整合やタスクの失敗を引き起こす可能性があります。
タイムゾーンソースデータベースとターゲットデータベースのタイムゾーンは同じである必要があります。
失敗したタスクのリカバリDTS は過去 7 日以内に失敗したタスクの再開を試みます。ワークロードを送信先クラスターに切り替える前に、失敗したタスクを停止またはリリースするか、REVOKE 文を実行して DTS アカウントから書き込み権限を取り消してください。そうしないと、再開されたタスクによって送信先のデータが上書きされる可能性があります。
DDL 実行の失敗送信先で DDL 文の実行が失敗した場合でも、DTS タスクは実行を継続します。失敗した文はタスクログで確認できます。詳細については、「タスクログの表示」をご参照ください。
スキーマ移行DTS のスキーマ移行機能を使用することで、互換性のないデータ型が原因で発生するタスクの失敗を回避できます。
パフォーマンスへの影響完全なデータ移行は、ソースサーバーと送信先サーバーの両方で負荷を増大させます。移行はオフピーク時間に実行してください。
テーブルの断片化完全なデータ移行中に INSERT 操作を同時に実行すると、テーブルの断片化が発生します。完全なデータ移行後、送信先で使用される表領域はソースよりも大きくなります。
DTS テクニカルサポートDTS タスクが失敗した場合、テクニカルサポートは 8 時間以内の復元を試みます。復元中、タスクが再起動されたり、(データベースパラメーターではなく) タスクパラメーターが変更されたりすることがあります。変更される可能性のあるパラメーターについては、「インスタンスパラメーターの変更」をご参照ください。

課金

移行タイプインスタンス設定料金インターネットトラフィック料金
スキーマ移行と完全なデータ移行無料送信先のアクセス方法[パブリック IP アドレス]に設定されている場合に課金されます。詳細については、「課金概要」をご参照ください。
増分データ移行課金概要課金対象。詳細については、「」をご参照ください。

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

操作タイプSQL ステートメント
DMLINSERT、UPDATE、DELETE
UPDATE 文は、AnalyticDB for MySQL V3.0 に書き込まれる際に REPLACE INTO に変換されます。プライマリキーに対する UPDATE 操作は、DELETE + INSERT に変換されます。

データ型のマッピング

Oracle から MySQL へのデータ型マッピングについては、「異種データベース間のデータ型マッピング」をご参照ください。

移行タスクの作成

この手順は 5 つのステップで構成されています:

  1. データ移行ページに移動します。

  2. ソースと宛先のデータベースを設定します。

  3. 移行オブジェクトと詳細設定を構成します。

  4. 事前チェックを実行し、インスタンスを購入します。

  5. 移行タスクをモニタリングします。

ステップ 1: データ移行ページへの移動

以下のいずれかの方法でデータ移行ページを開きます。

DTS コンソール

  1. DTS コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、[データ移行] をクリックします。

  3. 左上隅で、移行インスタンスが存在するリージョンを選択します。

DMS コンソール

実際の操作は、DMS コンソールのモードおよびレイアウトによって異なる場合があります。詳細については、「シンプルモード」および「DMS コンソールのレイアウトとスタイルをカスタマイズする」をご参照ください。
  1. DMS コンソールにログインします。

  2. トップナビゲーションバーで、ポインターを [データ + AI] > [DTS (DTS)] > [データ移行] に移動します。

  3. [データ移行タスク] の右側にあるドロップダウンリストから、移行インスタンスが存在するリージョンを選択します。

ステップ 2: ソースと宛先のデータベースの設定

  1. [タスクの作成] をクリックします。

  2. タスク名とソースデータベースを設定します。

    警告

    ソースと宛先のデータベースを設定した後、次に進む前にページの上部に表示される [使用制限] をお読みください。

    パラメーター説明
    [タスク名]DTS は自動的に名前を生成します。タスクを識別するために、わかりやすい名前を指定してください。名前は一意である必要はありません。
    [既存の接続を選択]リストから登録済みのデータベースインスタンスを選択するか、手動で接続を設定します。
    データベースタイプ[Oracle] を選択します。
    アクセス方法ソースデータベースへのアクセス方法を選択します。この例では、ECS 上のセルフマネージドデータベースを使用します。その他のアクセス方法については、「準備の概要」をご参照ください。
    インスタンスのリージョンソース Oracle データベースが存在するリージョン。
    ECS インスタンス IDソース Oracle データベースをホストする Elastic Compute Service (ECS) インスタンスの ID。
    [ポート番号]ソース Oracle データベースのサービスポート。デフォルト: 1521
    Oracle タイプデータベースアーキテクチャを選択します:[非 RAC インスタンス] ([SID] が必要) または [RAC または PDB インスタンス] ([サービス名] が必要)。この例では [RAC または PDB インスタンス] を使用します。
    データベースアカウント必要な権限を持つソース Oracle データベースのアカウント。
    データベースパスワードソースデータベースアカウントのパスワード。
  3. 宛先データベースを設定します。

    パラメーター説明
    [既存の接続を選択]登録済みのデータベースインスタンスを選択するか、手動で接続を設定します。
    データベースの種類[AnalyticDB for MySQL 3.0] を選択します。
    アクセス方法[Alibaba Cloud インスタンス] を選択します。
    インスタンス リージョン宛先 AnalyticDB for MySQL V3.0 クラスターが存在するリージョン。
    [インスタンス ID]宛先クラスターの ID。
    [データベースアカウント]読み取り/書き込み権限を持つ宛先クラスターのデータベースアカウント。
    データベース パスワード宛先データベースアカウントのパスワード。
  4. [接続をテストして続行] をクリックし、[DTS サーバーの CIDR ブロック] ダイアログボックスで [接続をテスト] をクリックします。

    DTS サーバーの CIDR ブロックが、ソースおよびターゲットデータベースのセキュリティ設定に追加されていることを確認してください。詳細については、「DTS サーバーの CIDR ブロックを追加する」をご参照ください。

ステップ 3: 移行オブジェクトと詳細設定の構成

  1. [オブジェクトの設定] ページで、移行パラメーターを設定します。

    パラメーター説明
    [移行タイプ]要件に基づいて移行タイプを選択します: - [スキーマ移行] + [完全なデータ移行]:増分変更なしで既存のデータを移行します。 - [スキーマ移行] + [完全なデータ移行] + [増分データ移行]:移行中に宛先を同期させ、ダウンタイムなしでスムーズな切り替えを可能にします。
    説明

    [スキーマ移行] をスキップする場合は、ターゲットテーブルを手動で作成し、オブジェクト名マッピングを有効にしてください。[増分データ移行] をスキップする場合は、移行中にソースに書き込まないでください。

    [同期する DDL および DML 操作]移行する DDL または DML 操作。特定のテーブルの操作を選択するには、[選択したオブジェクト] でテーブルを右クリックします。
    [テーブルのマージ][いいえ] (デフォルト):テーブルをマージせずに移行します。[はい]:各テーブルに __dts_data_source 列を追加し、選択したすべてのソーステーブルを 1 つの宛先テーブルにマージします。詳細については、「複数テーブルのマージ機能を有効にする」をご参照ください。
    警告

    [テーブルのマージ] が有効になっている場合、ソーステーブルで DDL スキーマ変更を実行しないでください。

    [競合するテーブルの処理モード][事前チェックしてエラーを報告] (デフォルト):宛先テーブルがソーステーブルと名前を共有している場合、事前チェックが失敗します。[エラーを無視して続行]:名前の競合チェックをスキップします。
    警告

    [エラーを無視して続行] を選択すると、データの不整合が発生する可能性があります。完全なデータ移行中、競合するレコードは更新されずに宛先に保持されます。増分移行中、競合するレコードは上書きされます。

    [宛先インスタンスでのオブジェクト名の大文字/小文字]宛先のデータベース、テーブル、列名の大文字/小文字を制御します。デフォルト:[DTS のデフォルトポリシー]宛先インスタンスにおけるオブジェクト名の大文字/小文字の指定。詳細については、「」をご参照ください。
    ソースオブジェクト移行するオブジェクトを選択し、向右小箭头 をクリックして [選択したオブジェクト] に移動します。列、テーブル、データベースがすべてサポートされています。
    [選択したオブジェクト]単一のオブジェクトを右クリックして名前を変更します。右上隅の [編集] をクリックして、一度に複数のオブジェクトの名前を変更します。詳細については、「データベース、テーブル、列名のマッピング」をご参照ください。
    説明

    オブジェクトの名前を変更すると、依存オブジェクトの移行が失敗する可能性があります。条件によってテーブルデータをフィルタリングするには、テーブルを右クリックして WHERE 条件を指定します。詳細については、「フィルター条件の指定」をご参照ください。

  2. [次へ: 詳細設定] をクリックし、詳細パラメーターを設定します。

    パラメーター説明
    [タスクスケジューリング用の専用クラスター]DTS はデフォルトで共有クラスターを使用します。専用クラスターを使用するには、別途購入してください。詳細については、「DTS 専用クラスターとは
    [接続失敗時の再試行時間]タスク開始後に接続が失敗した場合に DTS が再試行する時間。有効な値:10〜1,440 分。デフォルト:720 分。30 分以上に設定してください。この期間内に DTS が再接続すると、タスクは再開されます。そうでない場合、タスクは失敗します。
    説明

    複数のタスクが同じソースまたは宛先を共有する場合、最後に設定された再試行時間がすべてに適用されます。DTS は再試行中にインスタンスに対して課金します。

    [その他の問題での再試行時間]失敗した DDL または DML 操作を DTS が再試行する時間。有効な値:1〜1,440 分。デフォルト:10 分。10 分以上に設定してください。[接続失敗時の再試行時間] より短くする必要があります。
    [完全データ移行の帯域幅制限を有効化]完全なデータ移行中の読み取り/書き込みリソース使用量を制限します。[ソースデータベースへのクエリ数/秒 (QPS)]、[完全なデータ移行の RPS]、および[完全移行時のデータ移行速度 (MB/s)] を設定します。「完全なデータ移行」が選択されている場合のみ利用可能です。
    [増分データ移行の帯域幅制限を有効化]増分移行中のリソース使用量を制限します。[増分データ移行の RPS] および [増分移行のデータ移行速度 (MB/s)] を設定します。「増分データ移行」が選択されている場合のみ利用可能です。
    [環境タグ]DTS インスタンスを識別するためのオプションのタグ。
    実際の書き込みコード宛先に書き込まれるデータのエンコード形式。
    [ETL の設定]抽出・変換・書き出し (ETL) 機能を有効にします。詳細については、「ETL とは」および「データ移行タスクまたはデータ同期タスクで ETL を設定する」をご参照ください。
    モニタリングとアラート通知タスクの失敗またはしきい値を超えるレイテンシに対してアラートを設定します。有効にした場合、アラートのしきい値と通知設定を指定します。詳細については、「DTS タスクを作成するときにモニタリングとアラートを設定する」をご参照ください。
  3. [次へ: データ検証] をクリックして、データ検証タスクを設定します。詳細については、「データ検証タスクの設定」をご参照ください。

  4. (オプション) [次へ: データベースとテーブルフィールドの設定] をクリックして、宛先クラスターの各テーブルの [タイプ][プライマリキー列][分散キー][パーティションキー][パーティション分割ルール]、および [パーティションライフサイクル] を設定します。

    このステップは、スキーマ移行が選択されている場合にのみ利用できます。[定義ステータス][すべて]に設定すると、すべてのフィールドを表示および変更できます。プライマリキー列は複合プライマリキー(複数の列)をサポートしています。少なくとも 1 つのプライマリキー列を分散キーパーティションキーの両方として指定してください。CREATE TABLE を参照してください。

ステップ 4: 事前チェックの実行とインスタンスの購入

  1. [次へ: タスク設定を保存して事前チェック] をクリックします。DTS は移行を開始する前に事前チェックを実行します。次に進む前に、失敗した項目をすべて解決してください:

    • 失敗した項目については、[詳細の表示] をクリックして原因を確認し、問題を修正してから [再事前チェック] をクリックします。

    • 無視できないアラート項目については、[詳細の表示] をクリックし、問題を修正してから事前チェックを再実行します。

    • 無視できるアラート項目については、[アラート詳細の確認] > [無視] > [OK] をクリックし、その後 [再事前チェック] をクリックします。アラートを無視すると、データの不整合が発生する可能性があります。

    この設定の API パラメーターをプレビューするには、[次へ: タスク設定を保存して事前チェック] にカーソルを合わせ、[OpenAPI パラメーターのプレビュー] をクリックします。
  2. [成功率][100%] に達するまで待ち、[次へ: インスタンスの購入] をクリックします。

  3. [インスタンスの購入] ページで、インスタンスクラスを設定します。

    パラメーター説明
    リソースグループ移行インスタンスのリソースグループです。 デフォルト: デフォルトリソースグループ。 詳細については、「Resource Management とは
    インスタンスクラスインスタンスクラスによって移行速度が決まります。 詳細については、「データ移行インスタンスのインスタンスクラス」をご参照ください。
  4. [Data Transmission Service (Pay-as-you-go) 利用規約] を読み、同意してから、[購入して開始] > [OK] をクリックします。

ステップ 5: 移行タスクのモニタリング

[データ移行] ページでタスクの進捗状況を確認します。

  • 完全移行のみ (増分なし):タスクは完了すると自動的に停止します。ステータスは [完了] と表示されます。

  • 増分移行あり:タスクは継続的に実行され、自動的には停止しません。ステータスは [実行中] と表示されます。データ整合性を確認し、ワークロードを宛先クラスターに切り替える前に、タスクを手動で停止してください。

移行結果の検証

タスクが [完了] に達した後、または宛先クラスターに切り替える前に、データが正しく移行されたことを確認します。

  1. 宛先 AnalyticDB for MySQL V3.0 クラスターに接続します。

  2. ソースと宛先の間で、主要なテーブルの行数を比較します:

    -- ソース Oracle データベースで実行
    SELECT COUNT(*) FROM <schema_name>.<table_name>;
    
    -- 宛先 AnalyticDB for MySQL V3.0 クラスターで実行
    SELECT COUNT(*) FROM <table_name>;
  3. レコードのサンプルをスポットチェックして、データの精度を確認します。

  4. DTS タスクログを確認し、警告またはエラーがないかを確認してください。詳細については、「タスクログの表示」をご参照ください。

データ型の変換を伴う異種データベース間の移行では、切り替える前に必ず重要なテーブルを検証してください。

次のステップ