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

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

最終更新日:Jun 04, 2026

Data Transmission Service (DTS) を使用して、自己管理 Oracle データベースから ApsaraDB RDS for MySQL インスタンスにデータを移行します。スキーマ移行、完全なデータ移行、および増分データ移行を組み合わせることで、アプリケーションのダウンタイムを最小限に抑えます。

前提条件

  • 自己管理 Oracle データベースのバージョンは 9i、10g、11g、12c、18c、または 19c です。

  • 自己管理 Oracle データベースで補足ログが有効になっており、supplemental_log_data_pk および supplemental_log_data_ui の両方が有効化されている必要があります。Supplemental Logging

  • 自己管理 Oracle データベースがアーカイブログモードで実行されており、適切な保持期間がアーカイブログに設定されており、ログにアクセス可能である必要があります。ARCHIVELOG

  • ApsaraDB RDS for MySQL インスタンスのストレージ容量は、自己管理 Oracle データベースよりも大きい必要があります。

注意事項

  • 完全なデータ移行は、ソースおよびターゲットデータベースの両方に負荷をかけ、パフォーマンスの低下や可用性の喪失を引き起こす可能性があります。特に、スペックの低いインスタンス、遅い SQL クエリ、プライマリキーの欠如、デッドロックがある場合に顕著です。まずデータベースパフォーマンスを評価し、オフピーク時間帯(CPU 使用率が 30 % 未満)に移行を実施してください。

  • ソーステーブルにプライマリキーまたは一意制約がない場合、ターゲットに重複データが発生する可能性があります。

  • 自己管理 Oracle データベースがリアルアプリケーションクラスター (RAC) アーキテクチャでデプロイされており、Alibaba Cloud の仮想プライベートクラウド (VPC) 経由で DTS に接続する場合は、Oracle RAC の Single Client Access Name (SCAN) IP アドレスおよび各ノードの仮想 IP アドレス (VIP) を VPC に接続し、ルートを設定する必要があります。この設定により、DTS タスクが正常に実行されます。詳細については、「VPN Gateway を介してデータセンターを DTS に接続する」をご参照ください。

    重要

    DTS コンソールでソース Oracle データベースを設定する際、Oracle RAC の SCAN IP アドレスをデータベースエンドポイントまたは IP アドレスとして指定できます。

  • ApsaraDB RDS for MySQL インスタンス内のテーブル名は大文字と小文字を区別しません。ApsaraDB RDS for MySQL は大文字のテーブル名を小文字に変換します。

    ソース Oracle データベースに大文字・小文字のみが異なるテーブル名が含まれている場合、「オブジェクトが既に存在します」というエラーでスキーマ移行が失敗する可能性があります。競合するオブジェクトをリネームするには、オブジェクト名マッピング 機能を使用してください。

  • DTS はターゲット ApsaraDB RDS for MySQL インスタンスに自動的にデータベースを作成します。ソースデータベース名が ApsaraDB RDS の命名規則に準拠していない場合は、タスクを設定する前に、ターゲット ApsaraDB RDS for MySQL インスタンスに準拠したデータベースを作成してください。データベースの作成

課金

移行タイプ

タスク構成料金

インターネットトラフィック料金

スキーマ移行および完全なデータ移行

無料です。

ターゲットデータベースの アクセス方法パブリック IP アドレス に設定されている場合、DTS はインターネットトラフィック料金を請求します。課金概要

増分データ移行

課金対象です。課金概要

移行タイプ

  • スキーマ移行

    DTS はテーブルおよびインデックスのスキーマ移行をサポートしますが、ビュー、シノニム、トリガー、ストアドプロシージャ、ストアドファンクション、パッケージ、ユーザー定義データ型はサポートしません。その他の制限事項は以下のとおりです。

    • テーブル:入れ子テーブルはサポートされません。クラスターテーブルおよび索引構成表は、ターゲットデータベースで通常のテーブルに変換されます。

    • インデックス:関数ベースインデックス、ドメインインデックス、ビットマップ索引、および逆順インデックスはサポートされません。

  • 完全なデータ移行

    DTS は選択されたオブジェクトのすべての既存データをターゲット ApsaraDB RDS for MySQL インスタンスに移行します。

  • 増分データ移行

    完全なデータ移行後、DTS は自己管理 Oracle データベースのリドログを取得し、増分変更をターゲット ApsaraDB RDS for MySQL インスタンスに同期します。これにより、ダウンタイムを最小限に抑えてスムーズに切り替えられます。

増分移行の SQL 操作

  • INSERT、DELETE、UPDATE

  • CREATE TABLE

    説明

    テーブル定義に関数を含めることはできません。

  • ALTER TABLE、ADD COLUMN、DROP COLUMN、RENAME COLUMN、ADD INDEX

  • DROP TABLE

  • RENAME TABLE、TRUNCATE TABLE、CREATE INDEX

データ型マッピング

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

必要な権限

ソース Oracle データベースに専用の移行アカウントを作成し、必要な権限を付与してください。

説明

すでに必要な権限を持つアカウントがある場合は、この手順をスキップしてください。

データベース

スキーマ移行

完全なデータ移行

増分データ移行

自己管理 Oracle データベース

スキーマ所有者権限

スキーマ所有者権限

DBA

ApsaraDB RDS for MySQL インスタンス

ターゲットデータベースに対する書き込み権限

ターゲットデータベースに対する書き込み権限

ターゲットデータベースに対する書き込み権限

データベースアカウントを作成し、権限を付与するには、以下をご参照ください。

Oracle データベースアカウントのログ記録の有効化と詳細権限の付与

重要

Oracle データベースからデータを移行したいが、データベース管理者 (DBA) 権限をアカウントに付与できない場合は、アーカイブログおよび補足ログを有効化し、アカウントに詳細権限を付与できます。

  1. アーカイブログおよび補足ログを有効化します。

    タイプ

    手順

    アーカイブログ

    次の文を実行してアーカイブログを有効化します。

    shutdown immediate;
    startup mount;
    alter database archivelog;
    alter database open;
    archive log list;

    補足ログ

    ビジネス要件に基づき、データベースレベルまたはテーブルレベルで補足ログを有効化します。

    説明

    Data Transmission Service (DTS) タスクの安定性を確保するには、データベースレベルの補足ログを有効化することを推奨します。ソース Oracle データベースのディスク使用率を削減するには、テーブルレベルの補足ログを有効化してください。

    • データベースレベルの補足ログを有効化

      1. 次の文を実行して最小補足ログを有効化します。

        alter database add supplemental log data;
      2. 次の文を実行して、データベースレベルでプライマリキーおよび一意キーの補足ログを有効化します。

        alter database add supplemental log data (primary key,unique index) columns;
    • テーブルレベルの補足ログを有効化

      1. 次の文を実行して最小補足ログを有効化します。

        alter database add supplemental log data;
      2. 次のいずれかの方法でテーブルレベルの補足ログを有効化します。

        • テーブルレベルでプライマリキー補足ログを有効化

          alter table table_name add supplemental log data (primary key) columns;
        • すべての列に対してテーブルレベルの補足ログを有効化

          alter table tb_name add supplemental log data (all) columns;

    強制ログ記録

    次の文を実行して強制ログ記録を有効化します。

    alter database force logging;
  2. Oracle データベースアカウントに詳細権限を付与します。

    Oracle バージョン 9i ~ 11g

    # rdsdt_dtsacct という名前のデータベースアカウントを作成し、権限を付与します。
    create user rdsdt_dtsacct IDENTIFIED BY rdsdt_dtsacct;
    grant create session to rdsdt_dtsacct;
    grant connect to rdsdt_dtsacct;
    grant resource to rdsdt_dtsacct;
    grant execute on sys.dbms_logmnr to rdsdt_dtsacct;
    grant select on V_$LOGMNR_LOGS to rdsdt_dtsacct;
    grant select on  all_objects to rdsdt_dtsacct;
    grant select on  all_tab_cols to rdsdt_dtsacct;
    grant select on  dba_registry to rdsdt_dtsacct;
    grant select any table to rdsdt_dtsacct;
    grant select any transaction to rdsdt_dtsacct;
    -- v$log 権限
    grant select on v_$log to rdsdt_dtsacct;
    -- v$logfile 権限
    grant select on v_$logfile to rdsdt_dtsacct;
    -- v$archived_log 権限
    grant select on v_$archived_log to rdsdt_dtsacct;
    -- v$parameter 権限
    grant select on v_$parameter to rdsdt_dtsacct;
    -- v$database 権限
    grant select on v_$database to rdsdt_dtsacct;
    -- v$active_instances 権限
    grant select on v_$active_instances to rdsdt_dtsacct;
    -- v$instance 権限
    grant select on v_$instance to rdsdt_dtsacct;
    -- v$logmnr_contents 権限
    grant select on v_$logmnr_contents to rdsdt_dtsacct;
    -- システムテーブル
    grant select on sys.USER$ to rdsdt_dtsacct;
    grant select on SYS.OBJ$ to rdsdt_dtsacct;
    grant select on SYS.COL$ to rdsdt_dtsacct;
    grant select on SYS.IND$ to rdsdt_dtsacct;
    grant select on SYS.ICOL$ to rdsdt_dtsacct;
    grant select on SYS.CDEF$ to rdsdt_dtsacct;
    grant select on SYS.CCOL$ to rdsdt_dtsacct;
    grant select on SYS.TABPART$ to rdsdt_dtsacct;
    grant select on SYS.TABSUBPART$ to rdsdt_dtsacct;
    grant select on SYS.TABCOMPART$ to rdsdt_dtsacct;
    grant select_catalog_role TO rdsdt_dtsacct;

    Oracle 12c ~ 19c (マルチテナント)

    # プラガブル・データベース (PDB) に切り替えます。rdsdt_dtsacct という名前のデータベースアカウントを作成し、権限を付与します。
    ALTER SESSION SET container = ORCLPDB1;
    create user rdsdt_dtsacct IDENTIFIED BY rdsdt_dtsacct;
    grant create  session to rdsdt_dtsacct;
    grant connect  to rdsdt_dtsacct;
    grant resource to rdsdt_dtsacct;
    grant execute on sys.dbms_logmnr to rdsdt_dtsacct;
    grant select on  all_objects to rdsdt_dtsacct;
    grant select on  all_tab_cols to rdsdt_dtsacct;
    grant select on  dba_registry to rdsdt_dtsacct;
    grant select any table to rdsdt_dtsacct;
    grant select any transaction to rdsdt_dtsacct;
    -- v$log 権限
    grant select on v_$log to rdsdt_dtsacct;
    -- v$logfile 権限
    grant select on v_$logfile to rdsdt_dtsacct;
    -- v$archived_log 権限
    grant select on v_$archived_log to rdsdt_dtsacct;
    -- v$parameter 権限
    grant select on v_$parameter to rdsdt_dtsacct;
    -- v$database 権限
    grant select on v_$database to rdsdt_dtsacct;
    -- v$active_instances 権限
    grant select on v_$active_instances to rdsdt_dtsacct;
    -- v$instance 権限
    grant select on v_$instance to rdsdt_dtsacct;
    -- v$logmnr_contents 権限
    grant select on v_$logmnr_contents to rdsdt_dtsacct;
    grant select on sys.USER$ to rdsdt_dtsacct;
    grant select on SYS.OBJ$ to rdsdt_dtsacct;
    grant select on SYS.COL$ to rdsdt_dtsacct;
    grant select on SYS.IND$ to rdsdt_dtsacct;
    grant select on SYS.ICOL$ to rdsdt_dtsacct;
    grant select on SYS.CDEF$ to rdsdt_dtsacct;
    grant select on SYS.CCOL$ to rdsdt_dtsacct;
    grant select on SYS.TABPART$ to rdsdt_dtsacct;
    grant select on SYS.TABSUBPART$ to rdsdt_dtsacct;
    grant select on SYS.TABCOMPART$ to rdsdt_dtsacct;
    -- V$PDBS 権限
    grant select on V_$PDBS to rdsdt_dtsacct;
    grant select on v$database to rdsdt_dtsacct;
    grant select on dba_objects to rdsdt_dtsacct;
    grant select on DBA_TAB_COMMENTS to rdsdt_dtsacct;
    grant select on dba_tab_cols to rdsdt_dtsacct;
    grant select_catalog_role TO rdsdt_dtsacct;
    
    # CDB$ROOT(コンテナデータベース (CDB) のルートコンテナ)に切り替えます。データベースアカウントを作成し、権限を付与します。
    ALTER SESSION SET container = CDB$ROOT;
    # rdsdt_dtsacct という名前のデータベースアカウントを作成し、権限を付与します。Oracle データベースのデフォルトパラメーターを変更する必要があります。
    alter session set "_ORACLE_SCRIPT"=true;
    create user rdsdt_dtsacct IDENTIFIED BY rdsdt_dtsacct;
    grant create session to rdsdt_dtsacct;
    grant connect to rdsdt_dtsacct;
    grant select on v_$logmnr_contents to rdsdt_dtsacct;
    grant LOGMINING TO rdsdt_dtsacct;
    grant EXECUTE_CATALOG_ROLE to rdsdt_dtsacct;
    grant execute on sys.dbms_logmnr to rdsdt_dtsacct;

    Oracle 12c ~ 19c (非マルチテナント)

    # rdsdt_dtsacct という名前のデータベースアカウントを作成し、権限を付与します。
    create user rdsdt_dtsacct IDENTIFIED BY rdsdt_dtsacct;
    grant create  session to rdsdt_dtsacct;
    grant connect  to rdsdt_dtsacct;
    grant resource to rdsdt_dtsacct;
    grant select on V_$LOGMNR_LOGS to rdsdt_dtsacct;
    grant select on  all_objects to rdsdt_dtsacct;
    grant select on  all_tab_cols to rdsdt_dtsacct;
    grant select on  dba_registry to rdsdt_dtsacct;
    grant select any table to rdsdt_dtsacct;
    grant select any transaction to rdsdt_dtsacct;
    grant select on v$database to rdsdt_dtsacct;
    grant select on dba_objects to rdsdt_dtsacct;
    grant select on DBA_TAB_COMMENTS to rdsdt_dtsacct;
    grant select on dba_tab_cols to rdsdt_dtsacct;
    -- v$log 権限
    grant select on v_$log to rdsdt_dtsacct;
    -- v$logfile 権限
    grant select on v_$logfile to rdsdt_dtsacct;
    -- v$archived_log 権限
    grant select on v_$archived_log to rdsdt_dtsacct;
    -- v$parameter 権限
    grant select on v_$parameter to rdsdt_dtsacct;
    -- v$database 権限
    grant select on v_$database to rdsdt_dtsacct;
    -- v$active_instances 権限
    grant select on v_$active_instances to rdsdt_dtsacct;
    -- v$instance 権限
    grant select on v_$instance to rdsdt_dtsacct;
    -- v$logmnr_contents 権限
    grant select on v_$logmnr_contents to rdsdt_dtsacct;
    grant select on sys.USER$ to rdsdt_dtsacct;
    grant select on SYS.OBJ$ to rdsdt_dtsacct;
    grant select on SYS.COL$ to rdsdt_dtsacct;
    grant select on SYS.IND$ to rdsdt_dtsacct;
    grant select on SYS.ICOL$ to rdsdt_dtsacct;
    grant select on SYS.CDEF$ to rdsdt_dtsacct;
    grant select on SYS.CCOL$ to rdsdt_dtsacct;
    grant select on SYS.TABPART$ to rdsdt_dtsacct;
    grant select on SYS.TABSUBPART$ to rdsdt_dtsacct;
    grant select on SYS.TABCOMPART$ to rdsdt_dtsacct;
    grant LOGMINING TO rdsdt_dtsacct;
    grant EXECUTE_CATALOG_ROLE to rdsdt_dtsacct;
    grant execute on sys.dbms_logmnr to rdsdt_dtsacct;
    grant select_catalog_role TO rdsdt_dtsacct;
    説明

    Oracle のマルチテナントアーキテクチャの詳細については、「Oracle Multitenant」をご参照ください。

操作手順

  1. Data Transmission Service (DTS) コンソールにログインします。

    説明

    Data Management (DMS) コンソールに自動的にリダイレクトされる場合は、右下の jiqiren アイコンをクリックし、その後 返回旧版 をクリックしてクラシック DTS コンソールに戻ります。

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

  3. 移行タスク ページの上部で、宛先インスタンスが配置されているリージョンを選択します。

  4. ページの右上隅で、移行タスクの作成 をクリックします。

  5. ソースおよびターゲットデータベースを設定します。

    カテゴリ

    設定項目

    説明

    なし

    タスク名

    DTS は自動的にタスク名を生成します。わかりやすい名前を指定することも可能です。一意である必要はありません。

    ソースデータベース

    インスタンスタイプ

    ソースデータベースのデプロイ状況に応じてオプションを選択します。この例では、パブリック IP アドレスを持つ自己管理データベース を使用します。

    説明

    その他のインスタンスタイプについては、事前に必要な準備を完了させてください。「事前準備」をご参照ください。

    インスタンスリージョン

    インスタンスタイプが パブリック IP アドレスを持つ自己管理データベース に設定されている場合、インスタンスのリージョン を設定する必要はありません。

    説明

    自己管理 Oracle データベースで IP アドレスホワイトリストを使用している場合は、インスタンスのリージョン を選択した後に DTS IP セグメントの取得 をクリックして DTS サーバーの IP アドレスを取得し、ホワイトリストに追加してください。

    データベースタイプ

    Oracle を選択します。

    ホスト名または IP アドレス

    自己管理 Oracle データベースのエンドポイントを入力します。この例ではパブリックエンドポイントを使用します。

    ポート

    サービスポートを入力します(デフォルト:1521)。ポートはインターネットからアクセス可能である必要があります。

    インスタンスタイプ

    • Non-RAC Instance:このオプションを選択した場合、SID も入力する必要があります。

    • RAC または PDB インスタンス:このオプションを選択した場合、サービス名 も入力する必要があります。

    データベースアカウント

    自己管理 Oracle データベースのデータベースアカウントを入力します。必要な権限については、「事前準備」をご参照ください。

    データベースパスワード

    データベースアカウントのパスワードを入力します。

    説明

    ソースデータベース情報を入力した後、データベースのパスワード の横にある 接続テスト をクリックして、情報が正しいかどうかを確認できます。情報が正しい場合、合格 というメッセージが表示されます。メッセージが 失敗 と表示される場合は、失敗 の横にある チェック をクリックし、表示される指示に従ってソースデータベース情報を調整してください。

    ターゲットデータベース

    インスタンスタイプ

    RDS インスタンス を選択します。

    インスタンスリージョン

    宛先 RDS インスタンスが配置されているリージョンを選択します。

    RDS インスタンス ID

    宛先 RDS インスタンスの ID を選択します。

    データベースアカウント

    宛先 RDS インスタンスのデータベースアカウントを入力します。必要な権限については、「事前準備」をご参照ください。

    データベースパスワード

    データベースアカウントのパスワードを入力します。

    説明

    宛先データベース情報を入力した後、データベースのパスワード の後に 接続テスト をクリックして、入力した情報が正しいかどうかを確認できます。情報が正しい場合、合格 というメッセージが表示されます。メッセージが 失敗 と表示される場合は、失敗 の後に チェック をクリックし、表示される指示に従って宛先データベース情報を調整してください。

  6. ホワイトリストの承認と次のステップへ をクリックします。

    ソースまたはターゲットが ApsaraDB for MySQLApsaraDB for MongoDB などの Alibaba Cloud データベースインスタンスの場合、DTS は対応するリージョンのサーバー IP アドレスを自動的にインスタンスのホワイトリストに追加します。ソースまたはターゲットが ECS インスタンス上の自己管理データベースの場合、DTS は自動的にその IP アドレスを ECS インスタンスのセキュリティルールに追加します。また、自己管理データベースが ECS インスタンスからのアクセスを制限していないことを確認する必要があります。データベースが複数の ECS インスタンスにまたがるクラスターでデプロイされている場合は、各 ECS インスタンスのセキュリティルールに手動で DTS IP アドレスを追加する必要があります。ソースまたはターゲットがオンプレミスデータセンターまたは他のクラウド上のデータベースの場合、DTS サーバーからのアクセスを許可するために、対応するリージョンの DTS IP アドレスを手動で追加する必要があります。DTS サーバー IP アドレスの一覧については、「DTS サーバー IP アドレス」をご参照ください。

    警告

    DTS サーバーのパブリック IP アドレスを追加すると、セキュリティリスクが生じる可能性があります。本製品をご利用になることで、これらのリスクを認識し、受け入れるものとします。強力なパスワード、ポート制限、API 認証、ネットワークセグメントの定期的なレビュー、または Express Connect、VPN Gateway、Smart Access Gateway を通じたプライベート接続などの基本的なセキュリティ対策を実施してください。

  7. 移行タイプおよび移行するオブジェクトを選択します。

    設定項目

    説明

    移行タイプ

    • 完全移行のみを行う場合は、スキーマ移行 および 完全なデータ移行 の両方を選択します。

    • ダウンタイムを最小限に抑えた移行を行う場合は、スキーマ移行完全なデータ移行、および 増分データ移行 を選択します。

    説明

    増分データ移行 を選択しない場合、データ整合性を確保するため、移行中はソースデータベースに新しいデータを書き込まないでください。

    移行するオブジェクト

    移行するオブジェクト ボックスで、移行するオブジェクトを選択し、right arrow アイコンをクリックして 選択中のオブジェクト ボックスに移動させます。

    説明
    • データベース、テーブル、列レベルで移行するオブジェクトを選択できます。

    • 移行されるオブジェクト名はデフォルトで変更されません。宛先 RDS インスタンスでオブジェクト名を変更するには、オブジェクト名マッピング 機能を使用してください。

    マッピング後の名前変更

    宛先インスタンスで移行されたオブジェクトの名前を変更するには、オブジェクト名マッピング を使用してください。

    ソース/ターゲット到達不能時の再試行持続時間

    デフォルト:720 分。この持続時間内に DTS がソースまたはターゲットデータベースに再接続すると、タスクは自動的に再開されます。それ以外の場合は、タスクは失敗します。

    説明

    DTS は再試行中に料金を請求します。必要に応じて再試行持続時間を調整するか、ソースおよびターゲットインスタンスをリリースした後に DTS インスタンスを解放してください。

  8. これらの設定を完了したら、ページの右下隅にある 事前チェックと開始 をクリックします。

    説明
    • DTS はタスク開始前に事前チェックを実行します。事前チェックに合格した場合のみ、タスクを開始できます。

    • 事前チェックに失敗した場合は、失敗した項目の横にある 提示 アイコンをクリックして詳細を表示します。

      • 詳細に基づいて問題を修正し、再度事前チェックを実行してください。

      • 修正を必要としない警告については、無視 または 無視して事前チェックを再実行 を選択して、再度事前チェックを実行できます。

  9. タスクが事前チェックに合格したら、次へ をクリックします。

  10. 注文の確認 ページで、インスタンスクラス を選択し、Data Transmission Service (従量課金) 利用規約 チェックボックスをオンにします。

  11. 購入して起動 をクリックします。移行タスクが開始されます。

    • 完全なデータ移行

      タスクを手動で停止しないでください。データ損失を回避するため、自動的に完了するまで待機してください。

    • 増分データ移行

      タスクは自動的には停止しません。手動で停止する必要があります。

      説明

      オフピーク時間帯または宛先インスタンスへの切り替え準備が整ったタイミングでタスクを停止してください。

      1. タスクステータスが 増分データ移行 に変わり、遅延なし と表示されるまで待ちます。その後、数分間ソースデータベースへのデータ書き込みを停止します。増分データ移行 のステータスに遅延が表示される場合があります。

      2. 増分データ移行 のステータスが 遅延なし に戻ったら、移行タスクを手動で停止します。スキーマ移行および完全なデータ移行の進捗はいずれも 100 % になります。移行タスクを一時停止するには、タスクを選択し、下部のバッチ操作バーで 一時停止 をクリックします。

  12. 業務を RDS インスタンスに切り替えます。

次のステップ

移行後、セキュリティリスクを軽減するため、自己管理 Oracle データベースおよび ApsaraDB RDS for MySQL インスタンスの両方から移行アカウントを削除してください。

詳細情報

DTS は、自己管理 Oracle データベースから ApsaraDB RDS for MySQL インスタンスへの移行時に、逆方向のデータ同期をサポートしています。これにより、ApsaraDB RDS for MySQL インスタンスでの変更を Oracle に同期できます。