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

ApsaraDB for OceanBase (Deprecated):Oracle データベースから OceanBase Oracle テナントへのデータ移行

最終更新日:Aug 22, 2026

このトピックでは、Data Transmission Service (DTS) を使用して、Oracle データベースから OceanBase Oracle テナントにデータを移行する方法を説明します。

重要

データ移行タスクが長時間非アクティブな状態のままであると、増分ログの保持期間によっては再開に失敗する場合があります。非アクティブな状態には、[失敗]、[停止]、[完了] が含まれます。データ転送サービスは、3 日以上非アクティブな状態が続いたデータ移行タスクを解放し、関連リソースを回収します。データ移行タスクにアラートを設定し、タスクの例外にタイムリーに対処することを推奨します。

前提条件

  • Data Transmission Service (DTS) は、クラウドリソースへのアクセスに必要な権限を有しています。 詳細については、「DTS にデータ移行を実行する権限を付与する」をご参照ください。

  • 移行元の Oracle データベースと移行先の OceanBase Oracle テナントに、データ移行専用のデータベースユーザーを作成し、必要な権限を付与しておきます。 詳細については、「データベースユーザーの作成」をご参照ください。

  • デスティネーションの OceanBase Oracle テナントに、対応するデータベースを作成していること。OceanBase のデータ移行機能はテーブルと列の移行をサポートしますが、データベースの移行はサポートしていません。そのため、デスティネーションテナントに事前にデータベースを作成する必要があります。

  • 増分データレプリケーションを開始する前に、Oracle のソースインスタンスでアーカイブログが有効になっており、ログスイッチが発生している必要があります。

  • Oracle のソースインスタンスに LogMiner ツールがインストールされ、有効化されている必要があります。

    LogMiner ツールを使用すると、Oracle のアーカイブ REDO ログファイルの内容を取得できます。

  • Oracle インスタンスで、データベースレベルまたはテーブルレベルのサプリメンタルロギングが有効になっていることを確認してください。

  • 主キー (PKs) と一意キー (UKs) に対してデータベースレベルのサプリメンタルロギングを有効にすると、LogMiner Reader と Oracle データベースに負荷がかかる場合があります。これは、同期が不要なテーブルが不要なログを大量に生成するためです。このため、DTS は PKs と UKs に対して、テーブルレベルのサプリメンタルロギングの有効化にのみ対応しています。ただし、非 PK 列または非 UK 列に対して抽出、変換、ロード (ETL) フィルタリングを構成する場合は、該当する列、またはすべての列に対してサプリメンタルロギングを有効にする必要があります。

  • Oracle マシンとデータ転送マシンのクロックを、NTP サービスの構成などによって同期する必要があります。同期しない場合、データにリスクが生じる可能性があります。Oracle RAC を使用する場合は、複数の Oracle インスタンス間でもクロックを同期する必要があります。

制限事項

  • ソースデータベースの操作に関する制限

    スキーマ移行および完全移行中は、データベースやテーブルの構造を変更する DDL 操作を実行しないでください。データ移行タスクが中断される可能性があります。

  • Data Transmission Service (DTS) は、Oracle Database バージョン 10g、11g、12c、18c、19c をサポートしています。12c 以降のバージョンには、コンテナデータベース (CDB) とプラガブルデータベース (PDB) が含まれます。

  • DTS は、標準テーブルとビューのみの移行をサポートしています。

  • DTS は、データベース名、テーブル名、列名に ASCII 文字が使用されており、特殊文字を含まないオブジェクトのみの移行をサポートしています。特殊文字には、改行、スペース、および .|"'()=;/&\. などの文字が含まれます。

  • DTS は、デスティネーション側のトリガーをサポートしていません。デスティネーション側にトリガーが存在すると、データ移行が失敗する原因となる場合があります。

  • DTS は、Oracle データベースからの索引構成表 (IOT) の移行をサポートしていません。移行すると、データ移行タスクが中断されます。

  • データ型に関する制限

    • BLOB、CLOB、NCLOB などの LOB 型の列のみで構成されるテーブルでは、増分データ同期はサポートされていません。

    • プライマリキーがないテーブルに LOB 型フィールドが含まれている場合、逆方向増分同期によりデータ品質の問題が発生します。

  • データソース識別子とユーザーアカウントは、Data Transmission Service システム内でグローバルに一意である必要があります。

  • Oracle データベースの増分ログ解析は、1日あたり最大 5 TB をサポートしています。

  • Oracle Database 11g 以前のバージョンでは、30 バイトを超える名前のデータベースオブジェクトを作成できません。逆方向増分ステップ中は、この制限を超えるデータベースオブジェクトを OceanBase Oracle テナントで作成しないでください。

  • DTS は、Oracle Database 12c 以降のバージョンから、名前が 30 バイトを超えるデータベースオブジェクト (スキーマ、テーブル、列など) の移行をサポートしていません。30 バイトを超える名前のオブジェクトを移行する場合は、ヘルプデスクに問い合わせてください。

  • DTS は、ソースの Oracle データベースにおける一部の UPDATE コマンドをサポートしていません。以下に、サポートされていない UPDATE コマンドの例を示します:

     UPDATE TABLE_NAME SET KEY=KEY+1;

    上記の例では、TABLE_NAME はテーブル名、KEY は NUMERIC 型でプライマリキーとして定義された列です。

  • セルフマネージドデータベースが配置されている VPC は、OceanBase データベースと同じリージョンにある必要があります。

注意事項

  • Oracle データベースの増分同期を実行する場合、各アーカイブオブジェクトのサイズが 2 GB 未満であることを確認してください。

  • Oracle アーカイブオブジェクトは、少なくとも 2 日間保持してください。アーカイブデータが急増した場合、リカバリーに必要なオブジェクトが利用できなくなり、回復できない可能性があります。

  • ソース Oracle データベースにプライマリキーを入れ替える DML ステートメントが含まれている場合、DTS はログを正常に解析できず、宛先への移行時にデータ損失が発生する原因となります。プライマリキーを入れ替える DML ステートメントの例を以下に示します。

    update test set c1=(case when c1=1 then 2 when c1=2 then 1 end) where c1 in (1,2);
  • Oracle インスタンスの文字セットは、AL32UTF8、AL16UTF16、ZHS16GBK、または GB18030 を使用できます。

    ソースの文字セットが UTF-8 の場合、宛先には UTF-8 や UTF-16 などの互換性のある文字セットを使用してください。これにより、文字セットの非互換性による宛先での文字化けなどの問題を防ぐことができます。

  • Oracle データベースから OceanBase Oracle テナントへデータを移行する際、テーブルの ROWID を変更する操作を実行しないでください。このような操作には、インポート、エクスポート、ALTER TABLE、FLASHBACK TABLE、およびパーティション分割または結合が含まれます。

    パーティションキーの更新やパーティションの結合など、ROWID の動作に影響を与える操作がソース Oracle データベースで発生すると、宛先の OceanBase Oracle テナントは ROWID に依存する非表示列を追加します。これにより、データ損失の可能性があります。

  • ノード間、またはクライアント端末とサーバー間のクロックスキューにより、増分同期または逆方向増分同期のレイテンシーが不正確になる可能性があります。

    たとえば、クロックが標準時刻より進んでいる場合、レイテンシーが負の値として表示されることがあります。クロックが標準時刻より遅れている場合、レイテンシーが実際よりも長く表示されることがあります。

  • 中国における夏時間 (DST) の過去の使用により、Oracle データベースから OceanBase Oracle テナントへの増分同期中、TIMESTAMP(6) WITH TIME ZONE データ型において、ソースと宛先の間で 1 時間の時差が発生する可能性があります。これは、1986 年から 1991 年の DST の開始日と終了日、および 1988 年 4 月 10 日から 4 月 17 日に発生する可能性があります。

  • DDL 同期が有効になっておらず、宛先で一意なインデックスを変更した場合、データ移行タスクを再起動する必要があります。再起動しない場合、データの不整合が発生する可能性があります。

  • データ移行タスクで正方向スイッチオーバーが有効になっていない場合、宛先データベースから対応する一意なインデックスと疑似列を削除する必要があります。削除しない場合、宛先にデータを書き込むことができず、ダウンストリームにデータをインポートする際に新しい疑似列が生成されます。これにより、ソースデータベースの疑似列と競合が発生します。

    データ移行タスクで正方向スイッチオーバーが有効になっている場合、DTS はタスクタイプに基づいて非表示列と一意なインデックスを自動的に削除します。詳細については、「Data Transmission Service の非表示列メカニズムの説明」をご参照ください。

  • Oracle データベースから OceanBase Oracle テナントへの増分同期において、プライマリキーのない新しいテーブルが移行対象として追加された場合、DTS は宛先に追加された非表示列と一意なインデックスを自動的に削除しません。逆方向移行を実行する前に、手動で削除する必要があります。

    logs/msg/manual_table.log ファイルを確認することで、増分同期フェーズ中に追加されたプライマリキーのないテーブルを特定できます。

  • ソースと宛先で異なる文字エンコーディング設定が使用されている場合、スキーマ移行はフィールド長の定義を拡張するポリシーを提供します。たとえば、フィールド長を 1.5 倍に増やし、長さの単位を BYTE から CHAR に変更できます。

    変換後、ソースの異なる文字セットのデータを宛先に正常に移行できます。ただし、カットオーバー後、データが長さ制限を超えてソースに書き戻せない場合、逆方向増分同期が失敗する可能性があります。

  • ソースに TIMESTAMP WITH TIME ZONE などのタイムゾーン情報を含むデータ型が含まれている場合、宛先データベースがソースで使われているタイムゾーンをサポートしていることを確認してください。サポートしていない場合、データ移行中にデータの不整合が発生する可能性があります。

  • データベースとテーブルの集約シナリオでは、次の点に注意してください。

    • ソースと宛先の関係をマッピングするために、マッチングルールを使用する必要があります。

    • 宛先でテーブルスキーマを作成する必要があります。DTS を使用してスキーマを作成する場合、スキーマ移行ステップで失敗したオブジェクトをスキップする必要があります。

  • Oracle データベースのごみ箱内のオブジェクトを確認してください。オブジェクト数が 100 を超える場合、内部テーブルのクエリ時にタイムアウトが発生する可能性があります。ごみ箱内のオブジェクトをクリーンアップする必要があります。

    • ごみ箱が有効になっているかどうかを確認できます。

      SELECT Value FROM V$parameter WHERE Name = 'recyclebin';
    • ごみ箱内のオブジェクト数を確認します。

      SELECT COUNT(*) FROM RECYCLEBIN;
  • データ移行タスクの作成時に増分同期のみを構成する場合、ソースデータベースのアーカイブログを 48 時間を超えて保持する必要があります。

    完全移行と増分同期を構成する場合、ソースデータベースのアーカイブログを少なくとも 7 日間保持する必要があります。保持しない場合、DTS が増分ログを取得できなくなり、データ移行タスクの失敗や、ソースと宛先の間でのデータ不整合を招く可能性があります。

  • ソースまたは宛先に大文字と小文字のみが異なる名前のテーブルオブジェクトが含まれている場合、データ移行結果が期待どおりにならない可能性があります。これは、ソースまたは宛先がケースインセンシティブである場合に発生する可能性があります。

  • 宛先が V4.1.0 以降の OceanBase データベース MySQL テナントの場合、Latin1 文字セットの移行がサポートされています。

  • Oracle データベースをソースとして使用する増分同期タスク (Kafka 経由で増分データを取得するタスクを除く) では、単一のトランザクションが複数のアーカイブログにまたがる場合、LogMiner が完全なデータを返さない可能性があります。これにより、データ損失につながる可能性があります。データ整合性を確保するために、完全データ検証とデータ修正を構成することを推奨します。

サポート対象のソースとターゲットのインスタンスタイプ

以下の表では、OceanBase データベースの Oracle テナントを OB_Oracle と略記しています。

ソース

ターゲット

Oracle (VPC 内のセルフマネージドデータベース)

OB_Oracle (OceanBase クラスターインスタンス)

Oracle (パブリック IP アドレスのあるセルフマネージドデータベース)

OB_Oracle (OceanBase クラスターインスタンス)

データ型マッピング

重要
  • CLOB および BLOB データは 48 MB 未満である必要があります。

  • ROWID、BFILE、XMLType、UROWID、UNDEFINED、および UDT データ型の移行はサポートされていません。

  • LONG または LONG RAW データ型を含むテーブルでは、増分同期はサポートされていません。

Oracle データベース

OceanBase Oracle テナント

CHAR(n CHAR)

CHAR(n CHAR)

CHAR(n BYTE)

CHAR(n BYTE)

NCHAR(n)

NCHAR(n)

VARCHAR2(n)

VARCHAR2(n)

NVARCHAR2(n)

NVARCHAR2(n)

NUMBER(n)

NUMBER(n)

NUMBER(p, s)

NUMBER(p, s)

RAW

RAW

CLOB

CLOB

NCLOB

NVARCHAR2

説明

OceanBase Oracle テナントでは、NVARCHAR2 フィールドは NULL 値をサポートしていません。ソースに NULL 値が存在する場合は、文字列 "NULL" として表現されます。

BLOB

BLOB

REAL

FLOAT

FLOAT(n)

FLOAT

BINARY_FLOAT

BINARY_FLOAT

BINARY_DOUBLE

BINARY_DOUBLE

DATE

DATE

TIMESTAMP

TIMESTAMP

TIMESTAMP WITH TIME ZONE

TIMESTAMP WITH TIME ZONE

TIMESTAMP WITH LOCAL TIME ZONE

TIMESTAMP WITH LOCAL TIME ZONE

INTERVAL YEAR(p) TO MONTH

INTERVAL YEAR(p) TO MONTH

INTERVAL DAY(p) TO SECOND

INTERVAL DAY(p) TO SECOND

LONG

CLOB

重要

このデータ型を含むテーブルでは、増分同期はサポートされていません。

LONG RAW

BLOB

重要

このデータ型を含むテーブルでは、増分同期はサポートされていません。

SDO_GEOMETRY

SDO_GEOMETRY

Oracle インスタンスのシステム構成の確認と変更

次の操作を実行する必要があります。

  1. ソース Oracle データベースで ARCHIVELOG モードを有効にする

  2. ソース Oracle データベースでサプリメンタルロギングを有効にする

  3. (オプション) Oracle データベースのシステムパラメータを設定する

ソース Oracle データベースでの ARCHIVELOG モードの有効化

SELECT log_mode FROM v$database;

log_mode フィールドの値は archivelog である必要があります。そうでない場合は、次のように変更します。

  1. 次のコマンドを実行して ARCHIVELOG モードを有効にします。

    SHUTDOWN IMMEDIATE;
    STARTUP MOUNT;
    ALTER DATABASE ARCHIVELOG;
    ALTER DATABASE OPEN;
  2. 次のコマンドを実行して、アーカイブログのパスとクォータを表示します。

    リカバリファイルのパスとクォータを確認し、db_recovery_file_dest_size を大きな値に設定します。アーカイブを有効にした後は、Recovery Manager (RMAN) などのツールを使用して、定期的にアーカイブログをクリーンアップする必要があります。

    SHOW PARAMETER db_recovery_file_dest;
  3. 必要に応じて、アーカイブログのクォータを変更できます。

    ALTER SYSTEM SET db_recovery_file_dest_size =50G SCOPE = BOTH;

ソース Oracle データベースでのサプリメンタルロギングの有効化

LogMiner Reader は、テーブルレベルのサプリメンタルロギングのみが有効になっている Oracle システム構成をサポートします。移行中にソース Oracle データベースに新しいテーブルが作成され、移行する必要がある場合は、DML 操作を実行する前に、そのプライマリキーと一意キーのサプリメンタルロギングを有効にする必要があります。そうしないと、DTS は不完全なログエラーを報告します。

ソースと宛先間のインデックスの不整合、予期しない ETL 動作、パーティションテーブルの移行パフォーマンスの低下などの問題を回避するには、次のサプリメンタルログを追加します。

  • データベースレベルまたはテーブルレベルの supplemental_log_data_pk と supplemental_log_data_ui を追加します。

  • 特定の列をサプリメンタルログに追加する

    • ソースと宛先の両方でプライマリキーと一意キーの一部であるすべての列を追加して、インデックスの不整合の問題を解決します。

    • ETL を使用する場合は、ETL 列を追加します。これにより、予期しない ETL 動作に関する問題が解決されます。

    • 宛先がパーティションテーブルの場合は、パーティションキー列を追加します。これにより、パーティションプルーニングが実行できず、書き込みパフォーマンスが低下する問題が解決されます。

    次のステートメントを実行して結果を確認します。

    SELECT log_group_type FROM all_log_groups WHERE OWNER = '<schema_name>' AND table_name = '<table_name>';

    クエリ結果に ALL COLUMN LOGGING が含まれている場合、チェックは合格です。含まれていない場合は、ALL_LOG_GROUP_COLUMNS テーブルに前述のすべての列の和集合が含まれているかどうかを確認します。

    特定の列をサプリメンタルログに追加する方法の例を次に示します。

    ALTER TABLE <table_name> ADD SUPPLEMENTAL LOG GROUP <table_name_group> (c1, c2) ALWAYS;

次の表に、データ移行タスク中の DDL 操作のリスクと解決策を示します。

操作

リスク

ソリューション

CREATE TABLE (同期が必要)

宛先テーブルがパーティションテーブルである場合、ソースと宛先のインデックスが不整合である場合、または ETL が必要な場合、データ移行のパフォーマンスに影響が出たり、予期しない ETL 動作が発生したりする可能性があります。

プライマリキーと一意キーに対してデータベースレベルのサプリメンタルロギングを有効にする必要があります。関連する列を手動でサプリメンタルログに追加します。

プライマリキー、一意キー、またはパーティションキー列の追加、削除、変更、または ETL 列の変更

起動時にサプリメンタルログを追加するルールを満たさなくなります。これにより、データの不整合や、データ移行パフォーマンスの低下を招く可能性があります。

前述のルールに従ってサプリメンタルログを追加します。

LogMiner Reader は、次の 2 つの方法でチェックを実行します。LogMiner Reader がサプリメンタルロギングが有効になっていないことを検出すると、終了します。

  • データベースレベルの supplemental_log_data_pk と supplemental_log_data_ui を有効にする

    次のコマンドを実行して、サプリメンタルロギングが有効になっているかどうかを確認します。両方のクエリ結果が YES の場合、サプリメンタルロギングは有効になっています。

    SELECT supplemental_log_data_pk, supplemental_log_data_ui FROM v$database;

    有効になっていない場合は、次の操作を実行する必要があります。

    1. 次のステートメントを実行してサプリメンタルロギングを有効にします。

      ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE) COLUMNS;
    2. これを有効にした後、ログファイルを 2 回切り替え、5 分以上待ってからタスクを開始します。Oracle RAC を使用している場合は、インスタンス間で交互に切り替える必要があります。

      ALTER SYSTEM SWITCH LOGFILE;

      Oracle RAC 環境では、インスタンスを交互に切り替えるのではなく、あるインスタンスを複数回切り替えてから別のインスタンスに切り替えると、後で切り替えられたインスタンスがプル開始ファイルを決定する際に、サプリメンタルロギングが有効になる前のログを特定する可能性があります。

  • テーブルレベルの supplemental_log_data_pk と supplemental_log_data_ui を有効にする

    1. 次のステートメントを実行して、データベースレベルの supplemental_log_data_min が有効になっていることを確認します。

      SELECT supplemental_log_data_min FROM v$database;

      結果が YES または IMPLICIT の場合、サプリメンタルロギングが有効であることを示します。

    2. 次のステートメントを実行して、同期するテーブルでテーブルレベルのサプリメンタルロギングが有効になっていることを確認します。

      SELECT log_group_type FROM all_log_groups WHERE OWNER = '<schema_name>' AND table_name = '<table_name>';

      各タイプのサプリメンタルログは 1 行を返します。結果には ALL COLUMN LOGGING、または PRIMARY KEY LOGGING と UNIQUE KEY LOGGING の両方を含める必要があります。

      テーブルレベルのサプリメンタルロギングが有効になっていない場合は、次のステートメントを実行します。

      ALTER TABLE table_name ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY, UNIQUE) COLUMNS;
    3. 有効にした後、ログファイルを 2 回切り替え、5 分以上待ってからタスクを開始します。Oracle RAC の場合は、インスタンス間で交互に切り替えます。

      ALTER SYSTEM SWITCH LOGFILE;

Oracle データベースのシステムパラメータの設定 (オプション)

Oracle データベースの _log_parallelism_max システムパラメータを 1 に設定します。デフォルト値は通常 2 です。

  1. _log_parallelism_max の値をクエリします。次の 2 つの方法のいずれかで値をクエリします。

    • 方法 1

      SELECT NAM.KSPPINM,VAL.KSPPSTVL,NAM.KSPPDESC FROM SYS.X$KSPPI NAM,SYS.X$KSPPSV VAL WHERE NAM.INDX= VAL.INDX AND NAM.KSPPINM LIKE '_%' AND UPPER(NAM.KSPPINM) LIKE '%LOG_PARALLEL%';
    • 方法 2

      SELECT VALUE FROM v$parameter WHERE name = '_log_parallelism_max';
  2. _log_parallelism_max の値を変更します。変更方法は、設定によって異なります。

    • Oracle RAC の変更

      ALTER SYSTEM SET "_log_parallelism_max" = 1 SID = '*' SCOPE = spfile;
    • 非 Oracle RAC の変更

      ALTER SYSTEM SET "_log_parallelism_max" = 1 SCOPE = spfile;

    Oracle Database 10G で、write to SPFILE requested but no SPFILE specified at startup エラーが表示され、_log_parallelism_max パラメーターを変更する場合は、次の操作を実行する必要があります。

    CREATE SPFILE FROM PFILE;
    SHUTDOWN IMMEDIATE;
    STARTUP;
    SHOW PARAMETER SPFILE;
  3. _log_parallelism_max システムパラメータを変更した後、インスタンスを再起動し、ログファイルを 2 回切り替え、5 分以上待ってからタスクを開始する必要があります。

手順

  1. ログインします

    ApsaraDB for OceanBase コンソール

    詳細については、「データ移行タスクの購入」をご参照ください。

  2. [データ転送] > [データ移行] を選択します。 表示されたページで、データ移行タスクの [設定] をクリックします。

    image.png

    既存のタスクの構成を参照する場合は、[構成の参照] をクリックします。 詳細については、「データ移行タスクの構成を参照する」をご参照ください。

  3. [ソースと宛先の選択] ページで、パラメーターを設定します。

    パラメータ

    説明

    Migration Task Name

    日本語の文字、数字、英字を組み合わせて使用します。名前にスペースは使用できず、64 文字以内である必要があります。

    Source

    Oracle データソースを既に作成している場合は、ドロップダウンリストから選択します。作成していない場合は、ドロップダウンリストの [Create Data Source] をクリックし、表示されるダイアログボックスで作成します。パラメータの詳細については、「Create an Oracle data source」をご参照ください。

    Destination

    OceanBase Oracle テナントのデータソースを既に作成している場合は、ドロップダウンリストから選択します。作成していない場合は、ドロップダウンリストの [Create Data Source] をクリックし、表示されるダイアログボックスで作成します。パラメータの詳細については、「Create an OceanBase data source」をご参照ください。

    Tags (Optional)

    テキストボックスをクリックし、ドロップダウンリストからターゲットタグを選択します。 また、[タグの管理] をクリックして、タグを作成、変更、または削除することもできます。 詳細については、「タグを使用したデータ移行タスクの管理」をご参照ください。

  4. [次へ] をクリックします。[移行タイプの選択] ページで、[同期トポロジ] に [一方向同期] を選択します。

    データ転送サービスは、一方向同期と双方向同期の両方をサポートしています。 このトピックでは、一方向同期タスクの設定方法について説明します。双方向同期については、「双方向同期タスクの設定」をご参照ください。

  5. データ移行タスクの移行タイプを選択します。

    一方向同期トポロジは、次の移行タイプをサポートします: [スキーマ移行]、[完全移行]、[増分同期]、[完全検証]、および[リバース増分同期]。

    image

    移行タイプ

    説明

    スキーマ移行

    スキーマ移行タスクを開始すると、DTS はソースデータベースからデータオブジェクト (テーブル、インデックス、制約、コメント、ビューなど) の定義を宛先データベースに移行します。一時テーブルは自動的に除外されます。

    完全移行

    完全移行タスクを開始すると、DTS はソースデータベーステーブルから既存のデータを宛先データベースの対応するテーブルに移行します。[完全移行] を選択する場合は、データを移行する前に、GATHER_SCHEMA_STATS または GATHER_TABLE_STATS ステートメントを使用して Oracle データベースの統計情報を収集してください。

    増分同期

    増分同期タスクを開始すると、DTS はソースデータベースからのデータ変更 (追加、変更、または削除) を宛先データベースの対応するテーブルに同期します。

    [増分同期] には [DML 同期] と [DDL 同期] が含まれており、必要に応じて設定できます。 詳細については、「DDL と DML の同期をカスタマイズする」をご参照ください。 [増分同期] には、次の制限が適用されます:

    • 複数のテーブルを 1 つのテーブルに集約するシナリオでは、DDL 同期はサポートされていません。

    • [DDL 同期] を選択した場合、ソースデータベースで DTS がサポートしていない DDL 操作が発生すると、データ移行タスクが中断される可能性があります。

    • DDL 操作で新しいカラムを追加する場合、そのカラムの属性は NULL に設定する必要があります。設定しない場合、データ移行タスクが中断される可能性があります。

    完全検証

    完全移行が完了し、増分データが宛先に同期され、ソースとほぼ同期した後、DTS はソースデータベースと宛先データベースの設定されたデータテーブルに対して、完全データ検証タスクを自動的に開始します。

    • [完全検証] を選択した場合、検証を開始する前に、Oracle データベースと OceanBase Oracle テナントの両方の統計情報を収集してください。

    • [増分同期] を選択しても、[DML 同期] のすべての DML オプションを選択しない場合、DTS はこのシナリオでの完全データ検証をサポートしません。

    逆方向増分同期

    逆方向増分同期タスクを開始すると、サービスカットオーバー後に宛先データベースからソースデータベースにデータ変更をリアルタイムで同期できます。

    逆方向増分同期は通常、増分同期の設定を再利用しますが、必要に応じてカスタマイズすることもできます。

  6. [次へ] をクリックします。[移行オブジェクトの選択] ページで、データ移行タスクの移行オブジェクトを指定します。

    移行オブジェクトを指定するには、[オブジェクトの指定] または [照合ルール] を選択できます。 この Topic では、[オブジェクトの指定] を使用して移行オブジェクトを指定する方法について説明します。 照合ルールについては、照合ルールの設定と変更 の「データベース間のデータ移行/同期のワイルドカードパターン」をご参照ください。

    重要
    • 移行するテーブルの名前、およびテーブル内の列の名前に中国語文字を含めることはできません。

    • データベース名またはテーブル名にダブルドル記号 ($$) が含まれている場合、移行タスクを作成できません。

    • [移行タイプを選択] ページで [DDL 同期] を選択した場合は、「一致ルール」 オプションを使用して移行オブジェクトを選択することをお勧めします。これにより、移行ルールを満たすすべての新しいオブジェクトが同期されます。「オブジェクトの指定」 オプションを使用して移行オブジェクトを選択した場合、新規の、または名前が変更されたオブジェクトは同期されません。

    image.png

    1. [移行オブジェクトの選択] セクションで、[オブジェクトの指定] を選択します。

    2. [ソースオブジェクト] リストがある [移行範囲の指定] セクションで、移行するオブジェクトを選択します。 1 つ以上のデータベースのテーブルとビューを選択できます。

    3. [>] をクリックして、[ターゲットオブジェクト] リストに追加します。

    データ転送サービスでは、テキストファイルからオブジェクトをインポートしたり、ターゲットオブジェクトの名前を変更したり、行フィルターを設定したり、列情報を表示したり、単一またはすべての移行オブジェクトを削除したりできます。

    説明

    [一致ルール] を選択して移行オブジェクトを指定した場合、オブジェクト名の変更は、指定された一致ルールの構文に基づいて実装されます。 操作エリアでは、フィルター条件のみ設定できます。 詳細については、「一致ルールの設定と変更」をご参照ください。

    操作

    説明

    オブジェクトのインポート

    1. 右側のリストで、右上隅にある [オブジェクトのインポート] をクリックします。

    2. 表示されるダイアログボックスで、[OK] をクリックします。

      重要

      この操作は以前の選択を上書きします。注意して進めてください。

    3. [オブジェクトのインポート] ダイアログボックスで、移行するオブジェクトをインポートします。

      CSV ファイルをインポートして、データベースやテーブルの名前を変更したり、行フィルター条件を設定したりできます。詳細については、「移行オブジェクトの設定のダウンロードとインポート」をご参照ください。

    4. [検証] をクリックします。

      移行オブジェクトをインポートした後、その有効性を確認します。現在、列フィールドのマッピングはサポートされていません。

    5. 検証が成功したら、[OK] をクリックします。

    オブジェクト名の変更

    データ転送サービスでは、移行オブジェクトの名前を変更できます。詳細については、「データベーステーブルの名前変更」をご参照ください。

    設定の構成

    データ転送サービスでは、WHERE 条件を使用して行をフィルタリングできます。詳細については、「SQL 条件を使用したデータフィルタリング」をご参照ください。

    また、[列の表示] セクションで移行オブジェクトの列情報を表示することもできます。

    単一またはすべてのオブジェクトの削除

    データ転送サービスでは、データマッピング中に右側のリストに追加された単一またはすべての同期オブジェクトを削除できます。

    • 単一の移行オブジェクトの削除

      右側のリストで、削除したいオブジェクトの上にポインターを移動し、[削除] をクリックして移行オブジェクトを削除します。

    • すべての移行オブジェクトの削除

      右側のリストで、右上隅の [すべて削除] をクリックします。表示されるダイアログボックスで、[OK] をクリックしてすべての移行オブジェクトを削除します。

  7. [次へ] をクリックします。[移行オプション] ページでパラメーターを設定します。

    • 完全移行

      次の表では、[移行タイプの選択] ページで [一方向同期] と [完全移行] を順番に選択した場合にのみ表示される、完全移行のパラメーターについて説明します。

      image

      パラメーター

      説明

      読み取り同時実行数

      完全移行中にソースからデータを読み取るための同時実行数。最大値は 512 です。読み取り同時実行数が高いと、ソースに過度の負荷がかかり、ビジネスに影響を与える可能性があります。

      書き込み同時実行数

      完全移行中にターゲットにデータを書き込むための同時実行数。最大値は 512 です。書き込み同時実行数が高いと、ターゲットに過度の負荷がかかり、ビジネスに影響を与える可能性があります。

      完全移行レート制限

      必要に応じて、完全移行レートを制限するかどうかを選択できます。完全移行レートを制限する場合は、1 秒あたりのレコード数 (RPS) と 1 秒あたりのバイト数 (BPS) を指定する必要があります。RPS は完全移行中に 1 秒あたりにターゲットに移行されるデータ行の最大数を指定し、BPS は完全移行中に 1 秒あたりにターゲットに移行されるデータの最大量をバイト単位で指定します。

      説明

      ここで指定された RPS と BPS の値は、速度制限のためだけです。実際の完全移行性能は、ソースとターゲットの設定やインスタンスの仕様などの要因に左右されます。

      ターゲットデータベースの空でないテーブルの処理

      有効な値は[無視]と[移行を停止]です。

      • [無視] を選択した場合、挿入するデータがターゲットテーブルの既存データと競合すると、データ転送サービスは既存のデータを保持したまま、競合するデータをログに記録します。

        重要

        [無視] を選択すると、完全検証中にデータは IN モードでプルされます。この場合、ターゲットにソースには存在しないデータが含まれていると検証は適用できず、検証パフォーマンスはスペックダウンします。

      • [移行の停止] を選択し、移行先テーブルにレコードが含まれている場合、完全移行中に移行がサポートされていないことを示すエラーが報告されます。この場合、移行を続行する前に移行先テーブルのデータを処理する必要があります。

        重要

        エラーを促すダイアログボックスで [再開] をクリックすると、データ転送サービスはこのエラーを無視してデータの移行を続行します。注意して進めてください。

      インデックスの後付け

      完全移行完了後にインデックスを作成するかどうかを指定します。インデックスの後付けにより、完全移行に必要な時間を短縮できます。インデックスの後付けに関する注意事項については、以下の説明をご参照ください。

      重要
      • このパラメーターは、[移行タイプを選択] ページで [スキーマ移行] と [フル移行] の両方を選択した場合にのみ表示されます。

      • 移行完了後に作成できるのは、非一意キーインデックスのみです。

      • インデックス作成中にターゲットの OceanBase データベースが以下のエラーを返した場合、データ転送サービスはそのエラーを無視し、インデックスが正常に作成されたと判断して、再度作成しません。

        • MySQL 互換モードの OceanBase データベースでのエラーメッセージ:Duplicate key name。

        • Oracle 互換モードの OceanBase データベースでのエラーメッセージ:name is already used by an existing object。

      ターゲットが OceanBase データベースで、このパラメーターに [許可] を選択した場合、以下のパラメーターを設定する必要があります:

      • 単一インデックスの DDL 同時実行数:単一インデックスに対して許可される DDL 操作の最大同時実行数。値が大きいほど、リソース消費量が多くなり、データ移行が速くなります。

      • インデックスの最大 DDL 同時実行数:システムが一度に呼び出せるインデックス後付け DDL 操作の最大数。

      インデックスの後付けが許可されている場合、OceanBase Database のハードウェア条件と現在のビジネストラフィックに基づいて、CLI クライアントを使用してビジネステナントの以下のパラメーターを変更することを推奨します:

      // ファイルメモリバッファサイズの制限を指定します。
      alter system set _temporary_file_io_area_size = '10' tenant = 'xxx'; 
      // OceanBase Database V4.x での速度制限を無効にします。
      alter system set sys_bkgd_net_percentage = 100;  
    • 増分同期

      [移行タイプの選択] ページで、[一方向同期] と [増分同期] を順番に選択した場合にのみ、次のパラメーターが表示されます。

      image

      パラメーター

      説明

      書き込み同時実行数

      増分同期中にターゲットにデータを書き込むための同時実行数。最大値は 512 です。書き込み同時実行数が高いと、ターゲットに過度の負荷がかかり、ビジネスに影響を与える可能性があります。

      増分同期レート制限

      必要に応じて、増分同期レートを制限するかどうかを選択できます。増分同期レートを制限する場合は、1 秒あたりのレコード数 (RPS) と 1 秒あたりのバイト数 (BPS) を指定する必要があります。RPS は増分同期中に 1 秒あたりにターゲットに同期されるデータ行の最大数を指定し、BPS は増分同期中に 1 秒あたりにターゲットに同期されるデータの最大量をバイト単位で指定します。

      説明

      ここで指定された RPS と BPS の値は、速度制限のためだけです。実際の増分同期性能は、ソースとターゲットの設定やインスタンスの仕様などの要因に左右されます。

      増分同期の開始タイムスタンプ

      • [移行タイプの選択] ページで [完全移行] を選択した場合、このパラメーターは表示されません。

      • [増分同期] を選択し、[完全移行] を選択していない場合は、どの時点以降のデータを同期するかを指定します。 デフォルト値は現在のシステム時刻です。 詳細については、「増分同期のタイムスタンプを設定する」をご参照ください。

    • 逆方向増分

      次のパラメーターは、[移行タイプの選択] ページで [一方向同期] と [逆方向増分] を順に選択した場合にのみ表示されます。 デフォルトでは、増分同期の構成が逆方向増分同期に再利用されます。

      image

      増分同期の設定を再利用せず、必要に応じて逆方向増分同期を設定することもできます。

      パラメーター

      説明

      書き込み同時実行数

      逆方向増分同期中にソースにデータを書き込むための同時実行数。最大値は 512 です。高い同時実行数はソースに過度の負荷をかけ、ビジネスに影響を与える可能性があります。

      逆方向増分レート制限

      必要に応じて、逆方向増分同期レートを制限するかどうかを選択できます。逆方向増分同期レートを制限する場合は、1 秒あたりのリクエスト数 (RPS) と 1 秒あたりのバイト数 (BPS) を指定する必要があります。RPS は逆方向増分同期中に 1 秒あたりにソースに同期されるデータ行の最大数を指定し、BPS は逆方向増分同期中に 1 秒あたりにソースに同期されるデータの最大量をバイト単位で指定します。

      説明

      ここで指定された RPS と BPS の値は、速度制限のためだけです。実際の逆方向増分同期性能は、ソースとターゲットの設定やインスタンスの仕様などの要因に左右されます。

      増分同期の開始タイムスタンプ

      • [移行タイプの選択] ページで [完全移行] を選択した場合、このパラメーターは表示されません。

      • [フル移行] を選択せずに [増分同期] を選択した場合、転送スイッチオーバー開始タイムスタンプ (ある場合) がデフォルトで使用されます。このパラメーターは変更できません。

    • Advanced Options

      image

      パラメータ

      説明

      文字エンコーディングと長さ定義のオプション

      このパラメーターは、[移行タイプの選択] ページで [スキーマ移行] を選択し、かつソースとデスティネーションの文字セットが一致しない場合にのみ表示されます。

      説明

      ソースと宛先の文字セットが一致しない場合 (例:ソースが GBK、宛先が UTF-8)、フィールドの切り捨てやデータの不整合が発生する可能性があります。

      [宛先フィールドの長さを自動的に拡張する、つまり N BYTE → 1.5N BYTE] を選択すると、拡張後の長さが最大長を超えた場合、フィールドは最大長に設定されます。

      Add Hidden Column for Tables Without Non-null Unique Keys

      Oracle データベースから OceanBase Oracle テナントにデータを移行する場合、非NULLの一意キーを持たないテーブルに非表示列を追加するかどうかを設定する必要があります。詳細については、「Description of the hidden column mechanism in Data Transmission Service」をご参照ください。

      Storage Class for Destination Table Objects

      このエリアは、移行先の OceanBase Oracle テナントが V4.3.0 以降であり、かつ[移行タイプの選択] ページで[スキーマ移行]または[増分同期] > [DDL 同期]のいずれかを選択した場合にのみ表示されます。

      宛先テーブルオブジェクトのストレージクラスには、[デフォルト]、[行ストア]、[列ストア]、および[行/列混在ストア] があります。この設定は、スキーマ移行または増分同期中に宛先テーブルオブジェクトに適用されます。詳細については、「default_table_store_format」をご参照ください。

      説明

      [デフォルト] オプションの動作は、宛先パラメーターの設定によって決定されます。 スキーマ移行によるテーブルオブジェクト、または増分 DDL による新しいテーブルオブジェクトは、設定されたストレージクラスに対応する構造で書き込まれます。

  8. [事前チェック] をクリックして、データ移行タスクの事前チェックを開始します。

    事前チェック中、データ転送サービスはデータベースユーザーの読み取りおよび書き込み権限と、データベースのネットワーク接続を確認します。データ同期タスクは、すべてのチェック項目に合格した後にのみ開始できます。事前チェック中にエラーが返された場合は、以下の操作を実行できます:

    • 問題を特定してトラブルシューティングを行い、再度事前チェックを実行します。

    • 失敗した事前チェック項目の操作列で [スキップ] をクリックします。操作による影響を確認するダイアログボックスで、[OK] をクリックします。

  9. 事前チェックに合格すると、[タスクを開始] をクリックします。

    すぐにタスクを開始する必要がない場合は、[保存] をクリックします。 後で [移行タスク] ページで、またはバッチ操作を実行してタスクを開始できます。 バッチ操作の詳細については、「データ移行タスクでバッチ操作を実行する」をご参照ください。

    データ転送サービスでは、移行タスクの実行中に移行オブジェクトとその行フィルタリング条件を変更できます。詳細については、「移行オブジェクトとそのフィルター条件の表示と変更」をご参照ください。データ移行タスクが開始されると、選択した移行タイプに基づいて実行されます。詳細については、「移行詳細の表示」をご参照ください。

関連ドキュメント