OceanBase logo

OceanBase

トランザクション処理、分析、AIワークロードに最適な分散データベース

プロダクト概要
デプロイを自由に

OceanBase Cloud

OceanBaseの導入とスケーリングを最適化

エンタープライズ版

自社インフラ上での運用・管理に対応

オープンソース版を試す

コミュニティ版

開発者向けオープンソース分散データベース

OceanBase seekdb

AIネイティブなオープンソースの検索データベース

顧客事例

さまざまな業界の企業による導入事例を紹介します。

さらに見る
利用シーン別

あらゆるシナリオに対応するOLTP

ハイブリッドクラウドソリューション

大容量ストレージデータベースのコスト削減

リアルタイム分析混合ワークロード

複数インスタンスの統合

ドキュメント

会社概要

OceanBaseの企業情報、パートナーシップ、そして信頼性・セキュリティへの取り組みについて紹介します。

OceanBaseについて

トラストセンター

法的情報

お問い合わせ

日本 - 日本語
International - English
中国站 - 简体中文
クラウドで始める

OceanBase

トランザクション処理、分析、AIワークロードに最適な分散データベース

プロダクト概要
デプロイを自由に

OceanBase Cloud

OceanBaseの導入とスケーリングを最適化

エンタープライズ版

自社インフラ上での運用・管理に対応

オープンソース版を試す

コミュニティ版

開発者向けオープンソース分散データベース

OceanBase seekdb

AIネイティブなオープンソースの検索データベース

顧客事例

さまざまな業界の企業による導入事例を紹介します。

さらに見る
利用シーン別

あらゆるシナリオに対応するOLTP

ハイブリッドクラウドソリューション

大容量ストレージデータベースのコスト削減

リアルタイム分析混合ワークロード

複数インスタンスの統合

OceanBaseの企業情報、パートナーシップ、そして信頼性・セキュリティへの取り組みについて紹介します。

OceanBaseについて

トラストセンター

法的情報

お問い合わせ

クラウドで始める
编组
すべての製品
    • データベース
    • アイコンOceanBaseデータベース
    • アイコンOceanBase Cloud
アイコン

OceanBase Cloud

すべてのバージョン

    OceanBase ロゴ

    AI時代を支える分散データベース

    日本 - 日本語
    International - English
    中国站 - 简体中文
    プロダクト
    OceanBase Cloudエンタープライズ版コミュニティ版OceanBase seekdb
    会社概要
    OceanBaseについてトラストセンター法的情報お問い合わせ
    公式アカウント
    ConnpassXQiitaLumaGitHub

    © OceanBase 2026. All rights reserved

    クラウドサービス契約個人情報保護ポリシーセキュリティ
    お問い合わせ
    ドキュメントフィードバック
    1. ホーム
    2. OceanBase Cloud
    3. master
    アイコンOceanBase Cloud
    master
    データベース
    • OceanBaseデータベース
    • OceanBase Cloud
    • master

    OracleデータベースのデータをOceanBaseデータベースのOracle互換モードに移行する

    最終更新日:2026-06-09 02:55:39  更新
    シェア
    このページの内容
    前提条件
    制限事項
    注意事項
    データ型のマッピング
    Oracleテーブルのパーティション変換
    Oracleインスタンスのシステム構成の確認と変更
    ソース側のOracleデータベースでアーカイブモードを有効にする
    ソース側Oracleデータベースで補償ログを有効にする
    Oracleデータベースのシステムパラメータの設定(オプション)
    サポートされているソースおよびターゲットインスタンスの種類
    手順

    折りたたみ

    シェア

    OracleデータベースからOceanBaseデータベースのOracle互換モードへのデータ移行タスクを新規作成できます。構造移行、フル移行、増分同期を通じて、ソースデータベースの既存業務データと増分データをOceanBaseデータベースのOracle互換モードへシームレスに移行できます。

    注意

    データ移行タスクが長期間非アクティブ状態(タスクステータスが 失敗、一時停止中 または 完了 の場合)、増分ログの保持期間などの影響により、タスクが復旧できない可能性があります。データ移行システムは、非アクティブ状態が7日を超えるタスクを自動的に解放し、関連リソースを回収します。タスクにアラートを設定し、タスク関連の異常を速やかに処理することを推奨します。

    前提条件

    • ターゲット側のOceanBaseデータベースOracle互換モードテナントに対応するスキーマが作成されていること。

    • Oracleソースインスタンスではアーカイブログが有効でなければならず、データ移行の増分レプリケーション開始前にすでにログファイルの切り替えが行われていること。

    • OracleソースインスタンスにはLogMinerツールがインストールされており、正常に使用できること。

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

    • ソース側とターゲット側にデータ移行タスク専用のデータベースユーザーが作成され、関連する権限が付与されていること。詳細については、データ移行ユーザー権限を参照してください。

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

    • データベースレベルのPKおよびUK補償ログを有効にしてください。同期不要なテーブルで不要なログが大量に生成されると、LogMiner Readerのログ取得負荷やOracle自体の負荷が増加します。そのため、データ移行ではOracleデータベースでテーブルレベルのPKおよびUK補償ログのみを有効にすることをサポートしています。ただし、移行タスクの作成時にPK列またはUK列以外の列にETLフィルターが設定されている場合は、該当する列の補償ログを有効にするか、すべての列の補償ログを直接有効にしてください。

    • Oracleマシンとデータ移行マシン間で時刻同期(NTPサービスの設定など)が必要です。そうでない場合、データリスクが生じる可能性があります。Oracle RACの場合は、複数のOracleインスタンス間でも時刻同期が必要です。

    制限事項

    • データ移行タスクの新規作成は、プロジェクトロールが プロジェクト所有者、プロジェクト管理者、または データサービス管理者 のユーザーのみがサポートします。

    • ソースデータベースの操作制限

      構造移行およびフル移行段階では、データベースまたはテーブル構造を変更するDDL操作を実行しないでください。実行した場合、データ移行タスクが中断する可能性があります。

    • 現在、データ移行はOracleデータベースの10G/11G/12C/18C/19Cバージョンをサポートしています。12C以降のバージョンには、データベースコンテナ(Container Database、CDB)とプラガブルデータベース(Pluggable Database、PDB)が含まれます。同時に、OceanBaseデータベースのOracle互換モードV2.x、V3.x、V4.xもサポートしています。

    • データ移行はクラスタインスタンスのみをサポートし、共有インスタンスは現在サポートしていません。

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

    • データ移行は、データベース名、テーブル名、列名がASCIIコードであり、特殊文字(改行、スペース、および .|"'`()=;/& を含む)を含まないオブジェクトの移行のみをサポートします。

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

    • データ移行は、テーブル内のすべての列がLOB型(BLOB/CLOB/NCLOB)である場合の増分データ移行をサポートしていません。

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

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

    • データ移行は、ソース側のOracleデータベースで特定の UPDATE コマンドを実行することをサポートしていません。以下の例は、サポートされていない UPDATE コマンドです。

      UPDATE TABLE_NAME SET KEY=KEY+1;
      

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

    注意事項

    • Oracleデータベースの増分同期を実行する場合、Oracleデータベースの単一アーカイブファイルのサイズは2GB未満にすることを推奨します。

    • 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);
      
    • Oracleインスタンスの文字セット設定は、AL32UTF8、AL16UTF16、ZHS16GBK、GB18030が可能です。ソース側の文字セットがUTF-8の場合、ターゲット側ではソース側と互換性のある文字セット(例:UTF-8、UTF-16など)を使用し、文字セットの不整合によるターゲット側での文字化けなどの問題を回避することを推奨します。

    • Oracleデータベースの主キーなしテーブルをOceanBaseデータベースのOracle互換モードテナントに移行する際、ROWIDが変更される可能性のあるインポート、エクスポート、Alter Table、FlashBack Table、パーティションの分割またはメジャーコンパクションなどの操作をすべて禁止します。

    • ノード間のクロックの同期が取れていない場合、またはクライアント端末とサーバー間のクロックの同期が取れていない場合、増分同期の遅延時間が不正確になる可能性があります。

      例えば、クロックが標準時より早い場合、遅延時間が負の値になる可能性があります。クロックが標準時より遅い場合、遅延が発生する可能性があります。

    • 中国では過去に夏時間が導入されていた歴史的背景から、OracleデータベースからOceanBaseデータベースのOracle互換モードテナントへの増分同期において、1986年~1991年の夏時間開始日と終了日、および1988年4月10日~4月17日の期間について、TIMESTAMP(6) WITH TIME ZONE型のデータでは、ソース側とターゲット側で最大1時間の時差が生じる可能性があります。

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

    • ソース側とターゲット側の文字エンコーディング設定が異なる場合、構造移行ではフィールド長の定義を拡大する戦略が提供されます。例えば、フィールド長を1.5倍に拡大したり、長さの単位をBYTEからCHARに変更したりします。

    • ​ソース側にタイムゾーン情報を含むデータ型(例:TIMESTAMP WITH TIME ZONE)が存在する場合、ターゲット側のデータベースが対応するタイムゾーンをサポートし、ソース側のものと一致していることを確認してください。そうでない場合、データ移行プロセス中にデータの不整合が発生する可能性があります。

    • データベース・テーブルの統合シナリオでは:

      • ソース側とターゲット側の関係をマッピングするために、マッチングルールの方法を使用することを推奨します。

      • ターゲット側でテーブル構造を自ら作成することを推奨します。データ移行を使用して作成する場合は、構造移行の手順で失敗したオブジェクトをスキップしてください。

    • Oracleデータベースのゴミ箱内のオブジェクトを確認してください。オブジェクトが100を超えると、内部テーブルのクエリがタイムアウトしやすくなるため、ゴミ箱のオブジェクトクリーンアップを実行してください。

      • ゴミ箱が有効になっているか確認してください。

        SELECT Value FROM V$parameter WHERE Name = 'recyclebin';
        
      • ゴミ箱内のオブジェクト数を確認してください。

        SELECT COUNT(*) FROM RECYCLEBIN;
        
    • 新規データ移行タスクを作成する際、増分同期 のみを設定した場合、データ移行ではソース側データベースのアーカイブログを48時間以上保存することが求められます。

      新規データ移行タスクを作成する際、完全な移行 + 増分同期 を設定した場合、データ移行ではソース側データベースのアーカイブログを少なくとも7日間以上保持することが求められます。そうでない場合、増分ログを取得できないためデータ移行タスクが失敗したり、ソース側とターゲット側のデータが不整合になったりする可能性があります。

    • ソースがOracleデータベースの増分同期タスク(Kafka経由で増分データを取得する場合を除く)では、単一トランザクションが複数のアーカイブにまたがる場合、LogMinerはアーカイブをまたがるトランザクションについて完全なデータ情報を正しく返せないため、データが欠落する可能性があります。データの一貫性を確保するため、フルデータ検証とデータ訂正を設定することを推奨します。

    データ型のマッピング

    注意

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

    • 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
    注意:この型は増分同期をサポートしていません。

    Oracleテーブルのパーティション変換

    Oracleデータベースを移行する際、データ移行サービスは業務SQLの使用方法に合わせて適応変換を行います。

    説明

    本記事のパーティション変換ルールは、すべてのパーティションタイプに適用されます。

    元のテーブル定義
    変換後の出力
    CREATE TABLE T_RANGE_0 (
      A INT,
      B INT,
      PRIMARY KEY (B)
    )PARTITION BY RANGE(A)(
    ....
    );
    CREATE TABLE "T_RANGE_0" (
      "A" NUMBER,
       "B" NUMBER NOT NULL,
       CONSTRAINT "T_RANGE_10_UK" UNIQUE ("B")
    )PARTITION BY RANGE ("A")(
    ....
    );
    CREATE TABLE T_RANGE_10 (
      "A" INT,
       "B" INT,
       "C" DATE,
       "D" NUMBER GENERATED ALWAYS AS (TO_NUMBER(TO_CHAR("C",'dd'))) VIRTUAL,
      CONSTRAINT "T_RANGE_10_PK" PRIMARY KEY (A)
    )PARTITION BY RANGE(D)(
    ....
    );
    CREATE TABLE T_RANGE_10 (
      "A" INT NOT NULL,
      "B" INT,
      "C" DATE,
      "D" NUMBER GENERATED ALWAYS AS (TO_NUMBER(TO_CHAR("C",'dd'))) VIRTUAL,
      CONSTRAINT "T_RANGE_10_PK" UNIQUE (A)
    )PARTITION BY RANGE(D)(
    ....
    );
    CREATE TABLE T_RANGE_1 (
      A INT,
      B INT,
      UNIQUE (B)
    )PARTITION BY RANGE(A)(
    partition P_MAX values less than (10)
    );
    元のテーブル定義をサポートします
    CREATE TABLE T_RANGE_2 (
      A INT,
      B INT NOT NULL,
      UNIQUE (B)
    )PARTITION BY RANGE(A)(
    partition P_MAX values less than (10)
    );
    元のテーブル定義をサポートします
    CREATE TABLE T_RANGE_3 (
      A INT,
      B INT,
      UNIQUE (A)
    )PARTITION BY RANGE(A)(
    ....
    );
    元のテーブル定義をサポートします
    CREATE TABLE T_RANGE_4 (
      A INT NOT NULL,
      B INT,
      UNIQUE (A)
    )PARTITION BY RANGE(A)(
    ....
    );
    CREATE TABLE "T_RANGE_4" (
      "A" NUMBER NOT NULL,
      "B" NUMBER,
      PRIMARY KEY ("A")
    )PARTITION BY RANGE ("A")(
    ....
    );
    CREATE TABLE T_RANGE_5 (
      A INT,
      B INT,
      UNIQUE (A, B)
    )PARTITION BY RANGE(A)(
    partition P_MAX values less than (10)
    );
    元のテーブル定義をサポートします
    CREATE TABLE T_RANGE_6 (
      A INT NOT NULL,
      B INT,
      UNIQUE (A, B)
    )PARTITION BY RANGE(A)(
    partition P_MAX values less than (10)
    );
    元のテーブル定義をサポートします
    CREATE TABLE T_RANGE_7 (
      A INT NOT NULL,
      B INT NOT NULL,
      UNIQUE (A, B)
    )PARTITION BY RANGE(A)(
    partition P_MAX values less than (10)
    );
    CREATE TABLE "T_RANGE_7" (
      "A" NUMBER NOT NULL,
      "B" NUMBER NOT NULL,
      PRIMARY KEY ("A", "B")
    )PARTITION BY RANGE ("A")(
    ....
    );
    CREATE TABLE T_RANGE_8 (
      "A" INT,
      "B" INT,
      "C" INT NOT NULL,
      UNIQUE (A),
      UNIQUE (B),
      UNIQUE (C)
    )PARTITION BY RANGE(B)(
    partition P_MAX values less than (10)
    );
    元のテーブル定義をサポートします
    CREATE TABLE T_RANGE_9 (
      "A" INT,
      "B" INT,
      "C" INT NOT NULL,
      UNIQUE(A),
      UNIQUE(B),
      UNIQUE (C)
    )PARTITION BY RANGE(C)(
    partition P_MAX values less than (10)
    );
    CREATE TABLE "T_RANGE_9" (
      "A" NUMBER,
      "B" NUMBER,
      "C" NUMBER NOT NULL,
      PRIMARY KEY ("C"),
      UNIQUE ("A"),
      UNIQUE ("B")
    )PARTITION BY RANGE ("C")(
    ....
    );

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

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

    1. ソース側のOracleデータベースでアーカイブモードを有効にします。

    2. ソース側のOracleデータベースで補償ログを有効にします。

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

      説明

      インスタンスタイプ を 自己構築 Oracle に設定する場合、システムパラメータ _log_parallelism_max を設定できます。

    ソース側のOracleデータベースでアーカイブモードを有効にする

    SELECT log_mode FROM v$database;
    

    log_mode フィールドは archivelog である必要があります。そうでない場合は、以下の方法で変更してください。

    1. 以下のコマンドを実行して、アーカイブモードを有効にします。

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

      recovery file のパスとクォータを確認し、db_recovery_file_dest_size の設定値は可能な限り大きく設定することを推奨します。また、アーカイブを有効にした後は、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操作を実行する前に、PKおよびUKの補償ログを有効にする必要があります。そうでない場合、データ移行時にログが不完全であるという例外が発生します。

    注意

    補償ログはOracleプライマリデータベースで有効にする必要があります。

    ソース側とターゲット側のインデックスが一致しない、ETLが想定通りに動作しない、パーティションテーブルの移行性能が低下するなどの問題が発生した場合は、以下の補償ログを追加する必要があります:

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

    • 特定の列を補償ログに追加します。

      • ソース側とターゲット側のすべてのPKおよびUKに関連する列を追加します。これにより、ソース側とターゲット側のインデックスが一致しない問題を解決します。

      • 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が想定通りに実行されない可能性があります。 データベースレベルのPK/UK補償ログを有効にする必要があります。関連する列を手動で補償ログに追加します。
    PK/UK/パーティション列の追加、削除、変更、またはETL列の変更 起動時に補償ログを追加するルールを満たせず、データの不整合やデータ移行のパフォーマンス低下が発生する可能性があります。 上記の補償ログのルールに従って、適切に対応する列を追加します。

    LogMiner Readerは以下の2つの方法でチェックを行います。補償ログが有効になっていない場合は終了します。

    • データベースレベルで 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 の値を変更します。変更時は、以下の2つのケースがあります:

      • Oracle RACの変更

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

        ALTER SYSTEM SET "_log_parallelism_max" = 1 SCOPE = spfile;
        
    3. システムパラメータ _log_parallelism_max を変更した後、インスタンスを再起動し、アーカイブログを2回切り替え、タスクを開始する前に5分以上待機してください。

    サポートされているソースおよびターゲットインスタンスの種類

    クラウドプロバイダー
    ソース
    ターゲット端
    AWS RDS Oracle OceanBase Oracle Compatible(トランザクション型)
    AWS 自社構築Oracle OceanBase Oracle Compatible(トランザクション型)
    华为云 自社構築Oracle OceanBase Oracle Compatible(トランザクション型)
    腾讯云 自社構築Oracle OceanBase Oracle Compatible(トランザクション型)
    阿里云 自社構築Oracle OceanBase Oracle Compatible(トランザクション型)

    手順

    1. データ移行タスクを新規作成します。

      migration151-zh

      1. OB Cloud クラウドデータベースコンソールにログインします。

      2. 左側のナビゲーションバーで、データサービス > データ移行 をクリックします。

      3. データ移行 ページで、データ移行 タブをクリックします。

      4. データ移行 タブで、右上の 移行タスクの新規作成 をクリックします。

    2. タスク名を編集するテキストボックスに、カスタムの移行タスク名を入力します。

      数字とアルファベットの組み合わせを使用することをお勧めします。名前にはスペースを含めることができず、長さは64文字を超えてはなりません。

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

      1. ソース側 セクションで、各パラメータを設定します。

        既に作成・保存されたデータソースを参照する必要がある場合は、ソース側 の右側にある データソースの参照 をクリックし、ドロップダウンリストから対象のデータソースを選択します。選択後、ソース側の各設定が自動的に入力されます。現在の設定を新しいデータソースとして保存する場合は、ソース側 セクションの右上にある 保存 アイコンをクリックします。

        データソースの参照 のドロップダウンリストで データソース管理 をクリックすると、データソース ページに移動し、データソースの表示や管理を行うことができます。このページでは異なる種類のデータソースを一元的に管理します。詳細については、データソース モジュールのドキュメントを参照してください。

        パラメータ
        説明
        クラウドプロバイダー 現在 ファーウェイクラウド、Tencent Cloud、および Alibaba Cloud をサポートしています。
        データベースタイプ ソースを Oracle に設定します。
        インスタンスタイプ 現在 自己構築 Oracle のみをサポートしています。
        リージョン ソースデータベースのリージョンを選択します。
        接続タイプ エンドポイント と パブリックネットワーク接続 が含まれます。
        • エンドポイント 接続方式を選択した場合は、ページに表示されている認可済みのアカウントIDをエンドポイントサービスのホワイトリストに追加し、そのアカウントのエンドポイントがエンドポイントサービスに接続できるようにする必要があります。詳細については、プライベートネットワークのホワイトリストの追加を参照してください。
        • パブリックネットワーク接続 接続方式を選択した場合は、ページに表示されているデータソースIPアドレスをOracleデータベースインスタンスのホワイトリストに追加して、接続性を確保する必要があります。詳細については、パブリックネットワークのホワイトリストの追加を参照してください。

          説明

          ソースとターゲットのリージョンを選択すると、ページにはホワイトリストに追加する必要があるデータソースIPアドレスが表示されます。

        接続情報
        • 接続タイプ を エンドポイント に設定した場合は、エンドポイントサービス名を入力してください。
        • 接続タイプ を パブリックネットワーク接続 に設定した場合は、データベースホストのIPアドレスとポート番号を入力してください。
        Service Name OracleデータベースのService名。
        データベースアカウント データ移行用のOracleデータベースのユーザー名。
        パスワード データベースユーザーのパスワード。
      2. ターゲット側 セクションで、各パラメータを設定します。

        既に作成・保存されたデータソースを参照する必要がある場合は、ターゲット側 の右側にある データソースの参照 をクリックし、ドロップダウンリストから対象のデータソースを選択します。選択後、ターゲット側の各設定が自動的に入力されます。現在の設定を新しいデータソースとして保存する場合は、ターゲット側 セクションの右上にある 保存 アイコンをクリックします。

        データソースの参照 のドロップダウンリストで データソース管理 をクリックすると、データソース ページに移動し、データソースの表示や管理を行うことができます。このページでは異なる種類のデータソースを一元的に管理します。詳細については、データソース モジュールのドキュメントを参照してください。

        パラメータ
        説明
        クラウドプロバイダー 現在、AWS、ファーウェイクラウド、Alibaba Cloud、および Tencent Cloud をサポートしています。ソースと同じクラウドプロバイダーを選択することも、異なるクラウド間でのデータ移行も可能です。

        説明

        現在、クロスクラウドデータ移行機能はデフォルトで利用できません。この機能を使用する場合は、OB Cloudテクニカルサポートにお問い合わせください。

        データベースタイプ 現在、ターゲット側では OceanBase Oracle Compatible のみをサポートしています。
        インスタンスタイプ 現在、クラスタインスタンス(トランザクション型) のみをサポートしています。
        リージョン ターゲット側データベースのリージョンを選択します。
        インスタンス OceanBaseデータベースのOracle互換モードのテナントが存在するインスタンスのIDまたは名前です。インスタンス ページで、ターゲットインスタンスのIDまたは名前を確認できます。

        説明

        クラウドプロバイダーがAlibaba Cloudの場合、アカウント間認証をサポートするAlibaba Cloudのメインアカウントのインスタンスも選択できます。詳細については、Alibaba Cloudアカウント認証を参照してください。

        テナント OceanBaseデータベースのOracle互換モードのテナントのIDまたは名前です。インスタンス ページで、ターゲットインスタンスを展開し、そのインスタンス下のターゲットテナントのIDまたは名前を確認できます。
        データベースアカウント データ移行用のOceanBaseデータベースのOracle互換モードのテナントのユーザー名。
        パスワード データベースユーザーのパスワード。
    4. 接続テストをして、次へ移動 をクリックします。

      データ移行がエンドポイントに初めて接続する際、接続テストに失敗した場合は、ポップアップウィンドウの指示に従って操作してください。

      • クラウドベンダー を AWS に設定した場合:

        エンドポイントサービスを作成する際に、パラメータ エンドポイントの使用を許可する で 許可する を選択した場合、データ移行がプライベート接続に初めて接続する際、AWSコンソールにアクセスし、受信したエンドポイント接続リクエストに対して エンドポイント接続リクエストを受け入れる 操作を行うよう求められます。

      • クラウドベンダー を ファーウェイクラウド に設定した場合:

        エンドポイントサービスを作成する際に、接続承認機能を有効にした場合、エンドポイントがそのエンドポイントサービスに接続するには承認が必要です。詳細については、エンドポイントサービスの接続承認の管理を参照してください。

      • クラウドベンダー を Tencent Cloud に設定した場合:

        エンドポイントサービスを作成する際に、自動接続を受け入れないように設定した場合、エンドポイントサービスが手動で接続を受け入れる必要があります。詳細については、エンドポイント接続の管理を参照してください。

    5. タイプとオブジェクトの選択 ページで、各パラメータを設定します。

      1. 同期トポロジー セクションで、一方向の同期 を選択します。

        データ移行は 一方向の同期 と 双方向同期 をサポートしています。本記事では単方向同期の操作について説明します。双方向同期の詳細については、双方向同期タスクの設定を参照してください。

      2. 移行タイプ セクションで、現在のデータ移行タスクの移行タイプを選択します。

        移行タイプ には スキーマ移行、完全な移行、増分同期 が含まれます。

        パラメータ
        説明
        構造移行 構造移行では、文字セットのマッピング関係を自ら定義する必要があります。データ移行は、ソースデータベースのデータ(構造)をターゲットデータベースにコピーするだけで、ソースデータ(構造)に影響を与えません。
        フル移行 フル移行タスク開始後、データ移行サービスは、ソースデータベースのテーブルの既存データをターゲット側データベースの対応するテーブルに移行します。
        増分同期 増分同期タスク開始後、データ移行は、ソース側データベースで変更されたデータ(追加、変更、削除)をターゲット側データベースの対応するテーブルに同期します。増分同期 には DML同期 と DDL同期期間 が含まれ、ニーズに応じてカスタマイズ設定できます。詳細は DML/DDLのカスタム設定 を参照してください。
      3. 移行オブジェクトの選択 セクションで、移行対象の選択方法を設定します。

        オブジェクトの指定 と マッチングルール の2つの方法で移行対象を選択できます。

      4. 移行範囲の選択 セクションで、移行する対象を選択します。

        • オブジェクトの指定 を選択した場合、データ移行は データベース/テーブル移行 と データベース全体の移行 をサポートしています。データベース・テーブル移行では、1つまたは複数のデータベース内のテーブルやビューを移行対象として選択できます。データベース全体の移行では、データベース全体を移行対象として選択できます。データベースにデータベース・テーブル移行を選択した場合、そのデータベースはデータベース全体の移行をサポートしなくなります。データベースにデータベース全体の移行を選択した場合、そのデータベースはデータベース・テーブル移行をサポートしなくなります。

        データベース/テーブル移行 または データベース全体の移行 の方法を選択した後、左側で移行する対象を選択し、> をクリックして右側のリストに追加します。

        データ移行はテキストによるオブジェクトのインポートをサポートしており、ターゲット側のオブジェクトの名前変更、行フィルタリングの設定、列情報の表示、および単一またはすべての移行オブジェクトの削除などの操作をサポートしています。

        migration113-zh

        説明

        データベース全体の移行 を選択した場合:

        • 右側のリストにはデータベース名のみが表示され、具体的なオブジェクトは表示されません。

        • 増分同期-DDL同期 移行タイプを選択した場合、ソース側に新規作成されたテーブルはターゲット側に同期されます。

        操作
        説明
        インポート 選択領域の右側にあるリストで、右上の オブジェクトのインポート をクリックします。移行オブジェクトのインポートを参照してください。
        名前の変更 データ移行では、移行オブジェクトの名前を変更できます。データベース・テーブルの名前変更を参照してください。
        行フィルター データ移行では、WHERE 条件を使用した行フィルタリングがサポートされています。SQL条件でデータをフィルタリングするを参照してください。また、カラムを表示 領域で、移行オブジェクトの列情報を確認できます。
        すべての移除/クリア データ移行では、データマッピング時に、一時的にターゲット側に選択された単一または複数のオブジェクトを削除する操作がサポートされています。
        • 単一の移行オブジェクトの削除
          選択領域の右側にあるリストで、対象オブジェクトの後ろにある 削除 アイコンをクリックすると、その移行オブジェクトを削除できます。
        • すべての移行オブジェクトの削除
          選択領域の右側にあるリストで、右上の すべてクリア をクリックします。ダイアログボックスで、確認 をクリックすると、すべての移行オブジェクトを削除できます。
        • マッチングルール を選択した場合、詳細については データベース間のマッチングルールの設定を参照してください。
    6. 次へ をクリックします。移行オプション ページで、各パラメータを設定します。

      • 構造移行

        タイプとオブジェクトの選択 ページで、スキーマ移行 を選択し、かつソース側とターゲット側の文字セットが一致しない場合に、以下のパラメータが表示されます。

        oms-domestic-104

        ソース側とターゲット側の文字セットが一致しない場合(例:ソース側がGBK、ターゲット側がUTF-8)、フィールドの切断やデータの不整合が発生する可能性があります。文字タイプ長の倍率 を設定することで、文字型フィールドの長さを増やすことができます。

        注意

        拡張後の長さは、ターゲット側の最大制限を超えてはなりません。

      • フル移行

        タイプとオブジェクトの選択 ページで、一方向の同期 > 完全な移行 を選択した場合に、以下のパラメータが表示されます。

        migration114-zh

        パラメータ
        説明
        読み取り並列設定 フル移行段階でソース側からデータを読み取る並列数を設定します。最大値は512です。並列数が高すぎると、ソース側の負荷が過大になり、業務に影響を与える可能性があります。
        書き込み並列設定 フル移行段階でターゲット側にデータを書き込む並列数を設定します。最大値は512です。並列数が高すぎると、ターゲット側の負荷が過大になり、業務に影響を与える可能性があります。
        フル移行レート制限の有無 実際のニーズに応じて、フル移行レートの制限を有効にするかどうかを決定できます。有効にする場合は、RPS(フル移行段階で1秒間にターゲット側に移行できるデータ行数の最大値の制限)とBPS(フル移行段階で1秒間にターゲット側に移行できるデータ量の最大値の制限)を設定してください。

        説明

        ここで設定されたRPSとBPSは、スロットリング機能としてのみ機能します。フル移行で実際に達成可能なパフォーマンスは、ソース側、ターゲット側、インスタンス仕様の設定などの要因の影響を受けます。

        ターゲット側テーブルにレコードが存在する場合の処理ポリシー 処理ポリシーには、移行を停止する と 無視 が含まれます:
        • 移行を停止する を選択した場合、ターゲット側のテーブルにデータが存在すると、フル移行はエラーとなり、移行は許可されません。ターゲット側のデータを適切に処理してから、移行を続けてください。

          注意

          エラー発生後に「復元」をクリックすると、データ移行はこの構成オプションを無視し、テーブルデータの移行を続けます。慎重に操作してください。

        • 無視 を選択した場合、ターゲット側のテーブルにデータが存在し、元のデータと書き込むデータが競合すると、データ移行は競合するデータをログに記録し、元のデータを変更せずに保持するポリシーでデータを書き込みます。
        インデックスの後付けを許可するかどうか インデックスの後付け機能は、フル移行の所要時間を短縮できます。ここでは、フルデータ移行完了後にインデックスを作成することを許可するかどうかを設定します。インデックスの後付けを選択する際の注意事項については、表の下部の説明を参照してください。

        注意

        • 移行タイプの選択 ページで、スキーマ移行 と 完全な移行 の両方を同時に選択している場合にのみ、このオプションの設定がサポートされます。

        • 後付けできるのは、非一意キーインデックスのみです。

        インデックスの後置を許可する場合、OceanBaseデータベースのハードウェア条件と現在の業務トラフィック状況に応じて、CLIツールを使用して以下の業務テナントパラメータを調整することを推奨します。

        // ファイルメモリバッファサイズの制限
        ALTER SYSTEM SET _temporary_file_io_area_size = '10' tenant = 'xxx';
        // OceanBaseデータベースV4.xのレート制限の無効化
        ALTER SYSTEM SET sys_bkgd_net_percentage = 100;
        
      • 増分同期

        タイプとオブジェクトの選択 ページで、一方向の同期 > 増分同期 を選択した場合に、以下のパラメータが表示されます。

        oms-domestic-121

        パラメータ
        説明
        書き込み並列数設定 このパラメータは、増分同期フェーズでターゲット側にデータを書き込む並列数を設定します。最大制限は512です。並列数が高すぎると、ターゲット側の負荷が過大になり、業務に影響を与える可能性があります。
        増分移行レートの制限 実際のニーズに応じて、増分同期レートの制限を有効にするかどうかを決定できます。有効にする場合は、RPS(増分同期フェーズで1秒間にターゲット側に同期できるデータ行数の最大値の制限)とBPS(増分同期フェーズで1秒間にターゲット側に同期できるデータ量の最大値の制限)を設定してください。

        説明

        ここで設定されたRPSとBPSは、速度制限とトラフィック制御の能力としてのみ機能します。実際の増分同期で達成可能な性能は、ソース側、ターゲット側、インスタンス仕様の設定などの要因の影響を受けます。

        増分同期開始時点
        • 移行タイプを選択した際に 完全な移行 を選択している場合は、このパラメータは表示されません。
        • 移行タイプを選択した際に 完全な移行 を選択せず、増分同期 を選択した場合は、この時間点以降のデータを移行するように指定してください。デフォルトは現在のシステム時刻です。詳細については、増分同期の開始時点の設定を参照してください。
      • 詳細オプション

        ターゲット側のOceanBaseデータベースのOracle互換モードテナントがV4.3.0以降のバージョンであり、かつ タイプとオブジェクトの選択 ページで、スキーマ移行 または 増分同期 > DDL同期期間 を選択した場合に、このセクションのパラメータが表示されます。

        migration74-zh

        ターゲット側のテーブルオブジェクトのストレージタイプには、デフォルト、行ストレージ、リスト、行列混合ストレージ が含まれます。この設定は、構造移行または増分同期時のターゲット側テーブルオブジェクトのストレージタイプを決定するために使用されます。

        説明

        デフォルトオプションは、ターゲット側のパラメータ設定に基づいて他のオプションを自動調整するものであり、構造移行のテーブルオブジェクトや増分DDLで追加されるテーブルオブジェクトが設定されたストレージタイプに応じた構造を書き込むかどうかを決定します。

    7. 次へ をクリックすると、システムはデータ移行タスクの事前チェックを実行します。

      事前チェック の段階で、データ移行はデータベースユーザーの読み書き権限、データベースのネットワーク接続などが要件を満たしているかどうかをチェックします。すべてのチェック項目が合格した場合にのみ、データ移行タスクを開始できます。事前チェックでエラーが発生した場合:

      • 問題を調査・解決した後、事前チェックを再実行し、成功するまで繰り返すことができます。

      • 失敗した事前チェック項目の操作列にある スキップ をクリックすると、ダイアログボックスが表示され、この操作をスキップした場合の具体的な影響が示されます。スキップしてもよいことを確認したら、ダイアログボックス内の 確認 をクリックしてください。

    8. 事前チェックに成功したら、購入 をクリックし、データ移行インスタンスの購入 ページで購入を進めます。

      購入が成功すると、データ移行タスクを開始できます。購入の詳細については、データ移行インスタンスの購入を参照してください。データ移行インスタンスの購入は一時的に不要な場合は、保存 をクリックしてデータ移行タスクの詳細ページに移動し、後から必要に応じて手動で購入することができます。

      データ移行の詳細ページの右上にある 検証タスクの設定 をクリックすると、ソースデータベースとターゲットデータベースのデータ差異を比較できます。詳細については、新規データ検証タスクの作成を参照してください。

      データ移行サービスでは、データ移行タスクの実行中に移行オブジェクトを変更できます。詳細については、移行オブジェクトの表示と変更を参照してください。データ移行タスクが開始されると、選択した移行タイプに従って順次実行されます。詳細については、データ移行タスクの詳細を見るの「移行詳細を見る」モジュールの内容を参照してください。

    前のトピック

    OceanBaseデータベースの異なる互換モード間でのデータ移行
    最後

    次のトピック

    OceanBaseデータベースのOracle互換モードのデータをOracleデータベースに移行する
    次
    このページの内容
    前提条件
    制限事項
    注意事項
    データ型のマッピング
    Oracleテーブルのパーティション変換
    Oracleインスタンスのシステム構成の確認と変更
    ソース側のOracleデータベースでアーカイブモードを有効にする
    ソース側Oracleデータベースで補償ログを有効にする
    Oracleデータベースのシステムパラメータの設定(オプション)
    サポートされているソースおよびターゲットインスタンスの種類
    手順