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

ApsaraDB for OceanBase (Deprecated):Oracle データベースから Oracle 互換モードの OceanBase データベースへのデータ移行

最終更新日:Dec 30, 2025

このトピックでは、データ伝送サービスを使用して、Oracle データベースから Oracle 互換モードの OceanBase データベースにデータを移行する方法について説明します。

重要

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

前提条件

  • データ伝送サービスには、クラウドリソースにアクセスするための権限が付与されている必要があります。詳細については、「データ伝送のためのロールへの権限付与」をご参照ください。

  • ソース Oracle データベースとターゲットの Oracle 互換モードの OceanBase データベースに、データ移行専用のデータベースユーザーを作成し、対応する権限を付与している必要があります。詳細については、「データベースユーザーの作成」をご参照ください。

  • ターゲットの Oracle 互換モードの OceanBase データベース用にデータベースを作成している必要があります。OceanBase Database はテーブルと列の移行のみをサポートしているため、事前にターゲットデータベースを作成する必要があります。

  • ソース Oracle インスタンスで ARCHIVELOG を有効にし、データ伝送サービスが増分データレプリケーションを開始する前にログファイルを切り替えている必要があります。

  • ソース Oracle インスタンスに LogMiner をインストールし、LogMiner が正常に動作している必要があります。

    LogMiner を使用すると、Oracle インスタンスのアーカイブ・ログからデータを取得できます。

  • Oracle インスタンスで、データベースレベルまたはテーブルレベルの補足ログ機能が有効になっていることを確認している必要があります。

  • データベースレベルでプライマリキーと一意キーの補足ログを有効にすると、同期が不要なテーブルによって大量の不要なログが生成され、LogMiner Reader のログ取得や Oracle データベースへの負荷が増大します。そのため、データ伝送サービスでは、Oracle データベースに対して、プライマリキーと一意キーのテーブルレベルの補足ログのみを有効にすることを許可しています。ただし、移行タスクの作成時に ETL (Extract-Transform-Load) オプションを指定してプライマリキーと一意キー以外の列をフィルタリングする場合は、対応する列またはすべての列に対して補足ログを有効にしてください。

  • データリスクを回避するため、ソース Oracle サーバーとデータ伝送サービスを実行しているサーバーとの間で、NTP (Network Time Protocol) サービスなどを使用して時刻同期が設定されている必要があります。Oracle Real Application Cluster (RAC) の場合、Oracle インスタンス間でも時刻同期が必要です。

制限事項

  • ソースデータベースに関する制限事項

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

  • データ伝送サービスは、Oracle 10g、11g、12c、18c、および 19c をサポートしています。バージョン 12c 以降では、コンテナデータベース (CDB) とプラガブルデータベース (PDB) が提供されています。

  • データ伝送サービスは、通常テーブルとビューの移行のみをサポートしています。

  • データ伝送サービスは、オブジェクトのデータベース名、テーブル名、列名が特殊文字を含まない ASCII エンコードである場合にのみ、そのオブジェクトの移行をサポートします。特殊文字とは、改行、スペース、および次の文字です:. | " ' ` ( ) = ; / & \。

  • データ伝送サービスは、ターゲットがデータベースの場合、トリガーをサポートしていません。ターゲットデータベースにトリガーが存在する場合、データ移行が失敗する可能性があります。

  • データ移行タスクの中断を防ぐため、データ伝送サービスは Oracle データベースからの索引構成表 (IOT)の移行をサポートしていません。

  • データ型の制限

    • データ伝送サービスは、すべての列が LOB 型 (BLOB、CLOB、または NCLOB) であるテーブルの増分同期をサポートしていません。

    • テーブルにプライマリキーがなく、LOB 型のデータが含まれている場合、そのテーブルの逆方向増分でデータ品質が低下する可能性があります。

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

  • データ伝送サービスは、1 日あたり最大 5 TB の Oracle データベースの増分ログを解析できます。

  • Oracle データベースのバージョン 11g 以前では、名前の長さが 30 バイトを超えるデータベースオブジェクトを作成することはできません。逆方向増分中に、Oracle 互換モードの OceanBase データベースでこの制限を超えるデータベースオブジェクトを作成できないことに注意してください。

  • デフォルトでは、データ伝送サービスは、Oracle データベースのバージョン 12c 以降から、名前の長さが 30 バイトを超えるデータベースオブジェクト (スキーマ、テーブル、列など) の移行をサポートしていません。名前の長さが 30 バイトを超えるデータベースオブジェクトを移行するには、OceanBase テクニカルサポートにお問い合わせください。

  • データ伝送サービスは、ソースデータベース内の一部の UPDATE 文をサポートしていません。たとえば、次の UPDATE 文はサポートされていません。

     UPDATE TABLE_NAME SET KEY=KEY+1;

    上記の例では、TABLE_NAME はテーブル名、KEY は NUMERIC 型のプライマリキー列です。

  • 自己管理型データベースが配置されている VPC (Virtual Private Cloud) は、OceanBase データベースと同じリージョンにある必要があります。

注意事項

  • Oracle データベースの増分同期を実行する場合、Oracle データベース内の各アーカイブファイルのサイズが 2 GB 未満であることを確認することを推奨します。

  • アーカイブファイルは、Oracle データベースに 2 日以上保存する必要があります。そうしないと、アーカイブファイルの数が急増した場合に、必要なアーカイブファイルがないためにリストアが失敗する可能性があります。

  • ソース Oracle データベースでプライマリキーを交換する DML 操作が実行されると、データ伝送サービスがログを解析する際にエラーが発生します。これにより、データがターゲットデータベースに移行される際にデータが失われます。以下は、プライマリキーを交換する DML 文のサンプルです。

    update test set c1=(case when c1=1 then 2 when c1=2 then 1 end) where c1 in (1,2);
  • データ伝送サービスでは、AL32UTF8、AL16UTF16、ZHS16GBK、GB18030 などの文字セットを使用するソース Oracle インスタンスからのデータ移行が可能です。

    ソースデータベースで UTF-8 文字セットが使用されている場合、文字化けを避けるために、ターゲットデータベースで UTF-8 や UTF-16 などの互換性のある文字セットを使用することを推奨します。

  • Oracle データベースから Oracle 互換モードの OceanBase データベースにデータを移行する際、データのインポート/エクスポート、ALTER TABLE、FLASHBACK TABLE、パーティションの分割や圧縮など、ROWID 値を変更する可能性のある操作をどのテーブルに対しても実行しないでください。

    ソース Oracle データベースでパーティションキーの更新やパーティションの圧縮など、ROWID 値を変更する操作が実行されると、ターゲットの Oracle 互換モードの OceanBase データベースで隠し列に依存する ROWID が生成され、データ損失につながる可能性があります。

  • ノード間またはクライアントとサーバー間の時刻が同期していない場合、増分同期または逆方向増分中のレイテンシーが不正確になる可能性があります。

    たとえば、時刻が標準時より早い場合、レイテンシーは負の値になることがあります。時刻が標準時より遅い場合、レイテンシーは正の値になることがあります。

  • 中国ではかつて夏時間 (DST) が採用されていたため、1986 年から 1991 年までの DST 期間、および 1988 年 4 月 10 日から 17 日までの期間に生成された TIMESTAMP(6) WITH TIME ZONE 型のデータについては、ソースとターゲットの間で 1 時間の時差が予想されます。

  • DDL 同期が無効になっているときにターゲットで一意なインデックスを変更した場合は、データの不整合を避けるためにデータ移行タスクを再起動する必要があります。

  • データ移行タスクで正方向スイッチオーバーが無効になっている場合は、ターゲットデータベースから一意なインデックスと疑似列を削除してください。一意なインデックスと疑似列を削除しないと、データを書き込むことができず、下流システムにデータをインポートする際に疑似列が再度生成され、ソースデータベースの疑似列と競合します。

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

  • 増分同期中にソース Oracle データベースにプライマリキーのない新しいテーブルが追加された場合、データ伝送サービスは、ターゲットの Oracle 互換モードの OceanBase データベース内のテーブルに追加された隠し列と一意なインデックスを自動的に削除しません。逆方向移行タスクを開始する前に、手動でそれらを削除する必要があります。

    増分同期中に追加されたプライマリキーのないテーブルを確認するには、logs/msg/ ディレクトリにある manual_table.log ファイルを参照してください。

  • ソースデータベースとターゲットデータベースで異なる文字セットが使用されている場合、スキーマ移行中にフィールド長拡張ポリシーが提供されます。たとえば、フィールド長が 1.5 倍に拡張され、長さの単位が BYTE から CHAR に変更されます。

    これにより、ソースデータベースで異なる文字セットを使用してエンコードされたデータをターゲットデータベースに移行できます。ただし、カットオーバー後、データ長が長すぎるために、逆方向増分中にソースデータベースへの書き戻しに失敗する可能性があります。

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

  • 複数のテーブルを集約する場合は、次の点に注意してください。

    • 一致ルールを指定して、ソースとターゲット間のマッピングを設定することを推奨します。

    • ターゲットでスキーマを手動で作成することを推奨します。データ伝送サービスを使用してターゲットでスキーマを作成する場合は、スキーマ移行ステップで失敗したオブジェクトをスキップしてください。

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

    • ごみ箱が有効になっているかどうかをクエリします。

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

      SELECT COUNT(*) FROM RECYCLEBIN;
  • データ移行タスクを作成する際に [増分同期] のみを選択した場合、データ伝送サービスはソースデータベースのアーカイブ・ログを少なくとも 48 時間保持することを要求します。

    データ移行タスクを作成する際に [完全移行][増分同期] を選択した場合、データ伝送サービスはソースデータベースのアーカイブ・ログを少なくとも 7 日間保持することを要求します。データ伝送サービスが増分ログを取得できない場合、データ移行タスクが失敗したり、移行後にソースとターゲット間でデータが不整合になったりする可能性があります。

  • ソースまたはターゲットに、大文字と小文字のみが異なるテーブルオブジェクトが含まれている場合、ソースまたはターゲットでの大文字と小文字の区別がないために、データ移行の結果が期待どおりにならない可能性があります。

  • ターゲットが MySQL 互換モードの OceanBase データベース V4.1.0 以降の場合、Latin1 文字セットは移行をサポートします。

  • ソースが Oracle データベースである増分同期タスクの場合、Kafka を介して増分データを取得する場合を除き、単一トランザクションのログが複数のアーカイブ・ログファイルに分散していると、LogMiner は完全なデータを正しく返すことができず、データ損失が発生する可能性があります。データ整合性を確保するために、完全検証とデータ修正を設定することを推奨します。

サポートされているソースとターゲットのインスタンスタイプ

次の表では、OB_Oracle は Oracle 互換モードの OceanBase データベースを表します。

ソース

ターゲット

Oracle (VPC 内の自己管理型データベース)

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

Oracle (パブリック IP アドレスを持つ自己管理型データベース)

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

データ型のマッピング

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

  • ROWID、BFILE、XMLType、UROWID、UNDEFINED、および UDT 型のデータは移行できません。

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

Oracle データベースのデータ型

Oracle 互換モードの OceanBase データベースのデータ型

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

説明

Oracle 互換モードの OceanBase データベースでは、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. 次のコマンドを実行して、アーカイブ・ログのパスとクォータを表示します。

    recovery file のパスとクォータを表示します。db_recovery_file_dest_size パラメーターを比較的大きな値に設定することを推奨します。ARCHIVELOG を有効にした後、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 操作を実行する前にプライマリキーと一意キーの補足ログを有効にする必要があります。そうしないと、データ伝送サービスはログが不完全であるという例外を返します。

ソースデータベースとターゲットデータベースのインデックスが不整合である場合、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 は、次の方法を使用して補足ログが有効になっているかどうかを確認します。補足ログが有効になっていない場合、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. 補足ログを有効にした後、ARCHIVELOG モードに 2 回切り替え、タスクを開始する前に 5 分以上待ちます。Oracle RAC の場合は、インスタンスを交互に切り替えます。

      ALTER SYSTEM SWITCH LOGFILE;

      Oracle RAC では、1 つのインスタンスで ARCHIVELOG モードに複数回切り替えた後、次のインスタンスで ARCHIVELOG モードに切り替えると、後者のインスタンスが補足ログが有効になる前に生成されたログをプルする可能性があります。

  • テーブルレベルで 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. 補足ログを有効にした後、ARCHIVELOG モードに 2 回切り替え、タスクを開始する前に 5 分以上待ちます。Oracle RAC の場合は、インスタンスを交互に切り替えます。

      ALTER SYSTEM SWITCH LOGFILE;

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

_log_parallelism_max を 1 に設定することを推奨します。デフォルト値は通常 2 です。

  1. 次のいずれかの方法で _log_parallelism_max パラメーターの値をクエリします:

    • 方法 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 10g で _log_parallelism_max パラメーターの値を変更する際に、エラーメッセージ write to SPFILE requested but no SPFILE specified at startup が返された場合は、次の操作を実行します:

    CREATE SPFILE FROM PFILE;
    SHUTDOWN IMMEDIATE;
    STARTUP;
    SHOW PARAMETER SPFILE;
  3. _log_parallelism_max の値を変更した後、インスタンスを再起動し、ARCHIVELOG モードに 2 回切り替え、タスクを開始する前に少なくとも 5 分待ちます。

操作手順

  1. ApsaraDB for OceanBase コンソールにログインし、データ移行タスクを購入します。

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

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

    image.png

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

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

    パラメーター

    説明

    移行タスク名

    数字と文字の組み合わせに設定することを推奨します。スペースを含めることはできず、長さは 64 文字を超えることはできません。

    ソース

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

    ターゲット

    データソースとして Oracle 互換モードの OceanBase データベースを作成済みの場合は、ドロップダウンリストから選択します。そうでない場合は、ドロップダウンリストの [新しいデータソース] をクリックし、右側に表示されるダイアログボックスで作成します。パラメーターの詳細については、「OceanBase データソースの作成」をご参照ください。

    タグ (オプション)

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

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

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

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

    [同期トポロジー][一方向同期] を選択した場合、サポートされる移行タイプはスキーマ移行、完全移行、増分同期、完全検証、および逆再生増分です。

    image

    移行タイプ

    説明

    スキーマ移行

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

    完全移行

    完全移行タスクが開始されると、データ伝送サービスはソースデータベースのテーブルから既存のデータをターゲットデータベースの対応するテーブルに移行します。[完全移行] を選択した場合は、データ移行の前に GATHER_SCHEMA_STATS または GATHER_TABLE_STATS 文を使用して Oracle データベースの統計情報を収集することを推奨します。

    増分同期

    増分同期タスクが開始されると、データ伝送サービスはソースデータベースから変更されたデータ (追加、変更、または削除されたデータ) をターゲットデータベースの対応するテーブルに同期します。

    [増分同期] のオプションは、[DML 同期][DDL 同期] です。必要に応じてオプションを選択できます。詳細については、「DDL/DML 同期を設定する」をご参照ください。[増分同期] には、以下の制限があります。

    • 複数のテーブルを 1 つのテーブルにマージする場合、DDL 同期はサポートされていません。

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

    • DDL 操作で新しい列を追加する場合は、データ移行への潜在的な中断を防ぐために、その列を Null 許容として定義してください。

    完全検証

    完全移行タスクと増分同期タスクが完了すると、データ伝送サービスは自動的に完全検証タスクを開始し、ソースデータベースとターゲットデータベースのテーブルを検証します。

    • [完全検証] を選択した場合、完全検証の前に Oracle 互換モードで Oracle データベースと OceanBase データベースの統計情報を収集することを推奨します。

    • [増分同期] を選択したものの、[DML 同期] セクションですべての DML 操作を選択しなかった場合は、[完全検証] を選択できません。

    逆方向増分

    ビジネスデータベースのスイッチオーバー後にターゲットデータベースで行われたデータ変更は、逆方向増分を通じてリアルタイムでソースデータベースに同期されます。

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

  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 操作の最大数。

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

      // ファイルメモリバッファサイズの制限を指定します。
      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 の値は、速度制限のためだけです。実際の逆方向増分同期のパフォーマンスは、ソースとターゲットの設定やインスタンスの仕様などの要因に左右されます。

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

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

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

    • 詳細パラメーター

      image

      パラメーター

      説明

      文字セットと長さの定義

      このパラメーターは、[移行タイプの選択] ページで [スキーマ移行] を選択し、ソースとターゲットの文字セットが異なる場合にのみ表示されます。

      説明

      ソースの文字セットがターゲットの文字セットと異なる場合、たとえば、ソースの文字セットが GBK で、ターゲットが UTF-8 の場合、フィールドが切り捨てられ、データの不整合が発生する可能性があります。

      [ターゲットのフィールドを自動的に拡張する。つまり、N バイトから 1.5N バイトへ。] を選択した場合、変換後のデータは、制限を超えた場合に最大長制限まで切り捨てられます。

      Null 非許容の一意キーがないテーブルに隠し列を追加

      このパラメーターは、Oracle データベースから Oracle 互換モードの OceanBase データベースにデータを移行するタスクを作成する際に必要です。詳細については、「データ伝送サービスの隠し列メカニズム」をご参照ください。

      ターゲットテーブルのストレージタイプ

      このセクションは、Oracle 互換モードで OceanBase データベース V4.3.0 以降にデータを移行する際に、[移行タイプの選択] ページで [増分同期][スキーマ移行] または [DDL 同期] を選択した場合にのみ表示されます。

      The storage types supported for target table objects are Default, Row storage, Column storage, and Hybrid columnar storage. For more information, see default_table_store_format.

      説明

      [デフォルト] は、ターゲットのパラメーター構成に基づいて他のパラメーターが自動的に設定されることを意味します。スキーマ移行のテーブルオブジェクトおよび増分 DDL 同期の新しいテーブルオブジェクトは、指定されたストレージタイプに基づいて対応するスキーマに書き込まれます。

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

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

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

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

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

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

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

関連ドキュメント