OceanBaseデータベースのOracle互換モードからOracleデータベースへのデータ移行タスクを新規作成し、構造移行、全量移行、増分同期を通じて、ソースデータベースの既存業務データと増分データをOracleデータベースに移行できます。
注意
データ移行タスクが長期間非アクティブ状態(タスクステータスが 失敗、一時停止 または 完了)の場合、増分ログの保持期間などの影響により、タスクが復旧できない可能性があります。データ移行システムは、非アクティブ状態が7日を超えるタスクを自動的に解放し、関連リソースを回収します。タスクに対してアラートを設定し、タスク関連の異常を速やかに処理することを推奨します。
背景
データ移行では、複数のOceanBaseデータベースのOracle互換モードのテーブルデータを、Oracleデータベースの単一のテーブルに集約することがサポートされています。この場合、構造移行は不要で、フル移行と増分同期のみが必要です。この集約同期機能の制限事項は以下のとおりです:
フル移行と増分同期において、ソース側にある列はターゲット側にも存在していなければなりません。この要件を満たさない場合、データ移行はエラーとなります。
主キー列はソース側のテーブルに存在していなければなりません。
ターゲットテーブルの列には、ソース側にはない列を含めることができます。
前提条件
ターゲット側のOracleデータベースに対応するスキーマが作成されていること。
ターゲット側のOceanBaseデータベースのクラスタとテナントが作成されていること。詳細については、インスタンスの作成およびテナントの作成を参照してください。
ソース側とターゲット側に、データ移行タスク専用のデータベースユーザーが作成され、関連する権限が付与されていること。詳細については、ユーザー権限の説明を参照してください。
制限事項
データ移行タスクの新規作成は、プロジェクトロールが プロジェクト所有者、プロジェクト管理者、または データサービス管理者 のユーザーのみがサポートします。
ソースデータベースの操作制限
構造移行およびフル移行段階では、データベースまたはテーブル構造変更のDDL操作を実行しないでください。そうでない場合、データ移行タスクが中断する可能性があります。
現在、データ移行はOracleデータベースの10G/11G/12C/18C/19Cバージョンをサポートしています。12C以降のバージョンには、データベースコンテナ(Container Database、CDB)とプラグアブルデータベース(Pluggable Database、PDB)が含まれます。同時に、OceanBaseデータベースのOracle互換モードV2.x、V3.x、V4.xもサポートしています。
データ移行サービスは、テーブル内のすべての列がLOB型(BLOB/CLOB/NCLOB)である場合の増分データ移行をサポートしていません。
データ移行サービスは、OceanBaseデータベースのOracle互換モードの非テンプレート型サブパーティションテーブルからOracleデータベースへの移行をサポートしていません。
データ移行サービスは、現在、式に基づくインデックスをサポートしていません。
データ移行サービスは、主キーを持つテーブルの複数テーブル集約のみをサポートしています。
データ移行サービスは、データベース名、テーブル名、列名がASCIIコードであり、特殊文字(改行、スペース、および .|"'`()=;/& を含む)を含まないオブジェクトの移行のみをサポートしています。
ターゲット側がデータベースの場合、データ移行サービスはターゲット側にトリガー(Trigger)が存在することをサポートしていません。存在する場合、データ移行が失敗する可能性があります。
データソース識別子やユーザーアカウントなどは、データ移行サービスシステム内でグローバルに一意である必要があります。
Oracleデータベース11G及びそれ以前のバージョンでは、30バイトを超えるデータベースオブジェクトの作成はサポートされていません。OceanBaseデータベースのOracle互換モードのデータをOracleデータベースに移行する際は、ソース側でこの制限を超えるデータベースオブジェクトを作成しないでください。
注意事項
OceanBaseデータベースV4.xでは、アーカイブログを有効にすることを強く推奨します。アーカイブログを有効にした後、Clogが回収されても、データ移行サービスはアーカイブログを消費することで増分同期機能を実現できます。
ソース側の文字セットがUTF-8の場合、ターゲット側ではソース側と互換性のある文字セット(例:UTF-8、UTF-16など)を使用し、文字セットの不互換によるターゲット側での文字化けなどの問題を避けることを推奨します。
ノード間のクロックが同期していない場合、またはクライアント端末とサーバー間のクロックが同期していない場合、増分同期の遅延時間が正確でない可能性があります。
例えば、時計が標準時より進んでいると、遅延時間が負の値になる可能性があります。時計が標準時より遅れていると、遅延が発生する可能性があります。
Oracle文字セットとOceanBaseデータベースのOracle互換モードでは、シナリオに応じてフィールド長の選択ポリシーが異なります。
ソーステーブルにフィールド名OMS_PK_INCRMTが含まれている場合、増分同期タスクは中断され、復旧できません。
DDL同期を有効にしていない場合、ターゲット側の一意インデックスを変更した後は、データ移行タスクを再起動する必要があります。そうしない場合、データの不整合が発生する可能性があります。
OceanBaseデータベースのOracle互換モードのゴミ箱内のオブジェクトを確認してください。オブジェクト数が100を超えると、内部テーブルのクエリがタイムアウトしやすくなります。ゴミ箱のオブジェクトをクリーンアップしてください。
Oracleデータベースのゴミ箱内のオブジェクトを確認してください。オブジェクト数が100を超えると、内部テーブルのクエリがタイムアウトしやすくなります。ゴミ箱のオブジェクトをクリーンアップしてください。
ゴミ箱が有効になっているか確認してください。
SELECT Value FROM V$parameter WHERE Name = 'recyclebin';ゴミ箱内のオブジェクト数を確認してください。
SELECT COUNT(*) FROM RECYCLEBIN;
ソースがOceanBaseデータベースでDDL同期が有効なデータ移行タスクにおいて、ソース側のデータベーステーブルでRENAME操作が発生した場合、増分同期でデータが失われないよう、タスクを再起動することを推奨します。
データ移行タスクを新規作成する際に、増分同期 のみを設定した場合、データ移行ではソースデータベースのローカル増分ログを48時間以上保持する必要があります。
データ移行タスクを新規作成する際に、全量移行 + 増分同期 を設定した場合、データ移行ではソースデータベースのローカル増分ログを少なくとも7日間以上保持する必要があります。そうでない場合、増分ログを取得できないためデータ移行タスクが失敗したり、ソースとターゲットのデータが不整合になったりする可能性があります。
OceanBaseデータベースをソースとして増分同期を行う場合、データベーステーブルオブジェクトにUDT列が含まれていると、増分同期タスクがUDT列をサポートしていないため異常が発生する可能性があります。
対応しているソースおよびターゲットのインスタンスタイプ
クラウドプロバイダー |
ソース |
ターゲット |
|---|---|---|
| AWS | OceanBase Oracle Compatible(Transactional) | RDS Oracle |
| AWS | OceanBase Oracle Compatible(Transactional) | Self-managed Oracle |
| Huawei Cloud | OceanBase Oracle Compatible(Transactional) | Self-managed Oracle |
| Google Cloud | OceanBase Oracle Compatible(Transactional) | Self-managed Oracle |
| Alibaba Cloud | OceanBase Oracle Compatible(Transactional) | Self-managed Oracle |
データ型のマッピング
OceanBaseデータベース Oracle互換モード |
Oracleデータベース |
|---|---|
| CHAR(n CHAR) | CHAR(n CHAR) |
| CHAR(n BYTE) | CHAR(n BYTE) |
| NCHAR(n) | NCHAR(n) |
| NCHAR(n BYTE) | NCHAR(n) |
| VARCHAR2(n) | VARCHAR2(n) |
| NVARCHAR2(n) | NVARCHAR2(n) |
| NVARCHAR2(n BYTE) | NVARCHAR2(n) |
| NUMBER(n) | NUMBER(n) |
| NUMBER(p, s) | NUMBER(p,s) |
| RAW | RAW |
| CLOB | CLOB |
| BLOB | BLOB |
| FLOAT(n) | FLOAT (n) |
| 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 |
| ROWID | ROWID |
| UROWID | UROWID |
手順
データ移行タスクを新規作成します。
OceanBase Cloudコンソールにログインします。
左側のナビゲーションバーで、データサービス > データ移行 をクリックします。
データ移行 ページで、データ移行 タブをクリックします。
データ移行 タブで、右上の タスクを作成する をクリックします。
タスク名を編集するテキストボックスに、カスタムの移行タスク名を入力します。
中国語、数字、英字の組み合わせを使用することをお勧めします。名前にはスペースを含めることができず、長さは64文字を超えてはなりません。
ソースとターゲットの設定 ページで、各パラメータを設定します。
ソース エリアで、各パラメータを設定します。
既に作成・保存されたデータソースを参照する必要がある場合、ソース の右側にある クイック入力 をクリックし、ドロップダウンリストから対象のデータソースを選択します。選択後、ソース エリアの各設定が自動的に入力されます。現在の設定を新しいデータソースとして保存する場合は、クイック入力 の右側にある 保存 アイコンをクリックします。
また、クイック入力 のドロップダウンリストで データソースの管理 をクリックすると、データソース ページに移動し、データソースの表示や管理ができます。データソース ページでは、異なるタイプのデータソースを一元的に管理できます。詳細については、データソースモジュールのドキュメントを参照してください。
パラメータ説明クラウドベンダー 現在、AWS、Huawei Cloud、Googleクラウド、および Alibaba Cloud をサポートしています。 データベースタイプ ソースを OceanBase Oracle Compatible に設定します。 インスタンスタイプ Dedicated (Transactional) と Self-managed Database が含まれます。現在、Dedicated (Transactional) のデータをOracleデータベースに移行することのみをサポートしています。 リージョン ソースデータベースのリージョンを選択します。 インスタンス OceanBaseデータベースのOracle互換モードテナントが存在するインスタンスのIDまたは名前です。インスタンス* ページで、対象インスタンスのIDまたは名前を確認できます。 説明
クラウドベンダーがAlibaba Cloudの場合、アカウント間認証をサポートするAlibaba Cloudのメインアカウントインスタンスの選択も可能です。詳細については、Alibaba Cloudアカウント認証を参照してください。
テナント OceanBaseデータベースのOracle互換モードテナントのIDまたは名前です。インスタンス* ページで、対象インスタンスを展開し、そのインスタンス下の対象テナントのIDまたは名前を確認できます。 データベースアカウント データ移行用のOceanBaseデータベースOracle互換モードテナントのユーザー名。 パスワード データベースユーザーのパスワード。 ターゲット エリアで、各パラメータを設定します。
既に作成・保存されたデータソースを参照する必要がある場合、ターゲット の右側にある クイック入力 をクリックし、ドロップダウンリストから対象のデータソースを選択します。選択後、ターゲット エリアの各設定が自動的に入力されます。現在の設定を新しいデータソースとして保存する場合は、クイック入力 の右側にある 保存 アイコンをクリックします。
また、クイック入力 のドロップダウンリストで データソースの管理 をクリックすると、データソース ページに移動し、データソースの表示や管理ができます。データソース ページでは、異なるタイプのデータソースを一元的に管理できます。詳細については、データソースモジュールのドキュメントを参照してください。
パラメータ説明クラウドベンダー 現在、AWS、Huawei Cloud、Googleクラウド、および Alibaba Cloud をサポートしています。ソースと同じクラウドベンダーを選択することも、異なるクラウドベンダー間でのデータ移行も可能です。 説明
現在、異なるクラウドベンダー間のデータ移行機能はデフォルトで無効です。この機能を使用する場合は、OceanBase Cloudのテクニカルサポートにお問い合わせください。
データベースタイプ ターゲットを Oracle として選択します。 インスタンスタイプ - クラウドベンダーを AWS に設定した場合、インスタンスタイプは RDS Oracle と セルフマネージドオラクル をサポートします。
- クラウドベンダーを Huawei Cloud または Google Cloud に設定した場合、インスタンスタイプは セルフマネージドオラクル をサポートします。
リージョン ターゲットデータベースのリージョンを選択します。 接続タイプ エンドポイント と パブリック接続 が含まれます。 - エンドポイント 接続方式を選択した場合、ページに表示されているアカウントIDをエンドポイントサービスの許可リストに追加し、そのアカウントのエンドポイントがエンドポイントサービスに接続できるようにする必要があります。詳細については、プライベート接続の選択を参照してください。
- クラウドベンダー を AWS に設定し、エンドポイントサービス作成時にパラメータ エンドポイントの使用を許可する で 有効 を選択した場合、データ移行サービスが初めてプライベート接続にアクセスする際、AWSコンソールにアクセスし、受信したConnectionsリクエストに対して Accept endpoint connection request 操作を実行するよう求められます。
- クラウドベンダーを Google Cloud に設定した場合、Published Servicesに認可プロジェクトを追加してください。認可後は、データソースの接続テスト時に手動で認可する必要はありません。
- パブリック接続 接続方式を選択した場合、ページに表示されているデータソースIPアドレスをOracleデータベースインスタンスの許可リストに追加し、接続性を確保する必要があります。詳細については、パブリック接続の選択を参照してください。
説明
ソースとターゲットのリージョンを選択すると、ページに許可リストに追加する必要があるデータソースIPアドレスが表示されます。
接続情報 - 接続タイプ を エンドポイント に設定した場合、エンドポイントサービス名を入力してください。
- 接続タイプ を パブリック接続 に設定した場合、データベースホストのIPアドレスとポート番号を入力してください。
Service Name OracleデータベースのService名。 データベースアカウント データ移行用のOracleデータベースのユーザー名。 パスワード データベースユーザーのパスワード。
テストして続行 をクリックします。
タイプとオブジェクトを選択 ページで、各パラメータを設定します。
同期トポロジー 領域で、一方向同期 を選択します。
データ移行は 一方向同期 と 双方向同期 をサポートしています。本記事では一方向同期の操作について説明します。双方向同期の詳細については、双方向同期タスクの設定を参照してください。
サブスクリプションタイプとオブジェクトを選択する ステップで、現在のデータ移行タスクの移行タイプを選択します。
移行タイプ には、スキーマ移行、完全移行、および 増分同期 が含まれます。
パラメータ説明構造移行 構造移行では、文字セットのマッピング関係を自ら定義する必要があります。データ移行は、ソースデータベースのデータ(構造)をターゲットデータベースにコピーするだけで、ソースデータ(構造)に影響を与えません。 フル移行 フル移行タスク開始後、データ移行サービスは、ソースデータベースのテーブルの既存データをターゲット側データベースの対応するテーブルに移行します。 増分同期 増分同期タスク開始後、データ移行は、ソース側データベースで変更されたデータ(追加、変更、削除)をターゲット側データベースの対応するテーブルに同期します。増分同期 には、DML同期 と DDL同期 が含まれ、ニーズに応じてカスタマイズ設定できます。詳細については、DML/DDLのカスタム設定を参照してください。 移行対象を選択してください エリアで、移行対象の選択方法を設定します。
オブジェクトの指定 と マッチングルール の 2 種類の方法で移行対象を選択できます。
移行範囲を選択してください エリアで、移行する対象を選択します。
オブジェクトの指定 を選択した場合、データ移行は データベースオブジェクト と データベース全体 をサポートします。データベース・テーブル移行では、1 つまたは複数のデータベース内のテーブルやビューを移行対象として選択できます。データベース移行では、データベース全体を移行対象として選択できます。あるデータベースでデータベース・テーブル移行を選択した場合、そのデータベースはデータベース移行をサポートしなくなります。あるデータベースでデータベース移行を選択した場合、そのデータベースはデータベース・テーブル移行をサポートしなくなります。
データベースオブジェクト または データベース全体 を選択した後、左側で移行する対象を選択し、> をクリックして右側のリストに追加します。
データ移行は、テキストをインポートしてオブジェクトを追加することをサポートしており、ターゲット側のオブジェクトの名前変更、行フィルタリングの設定、列を表示情報の確認、および削除単一またはすべての移行オブジェクトなどの操作もサポートしています。
説明
データベース移行を選択した場合:
右側のリストにはデータベース名のみが表示され、具体的なオブジェクトの表示はサポートされません。
増分同期-DDL同期移行タイプを選択した場合、ソース側で新規作成されたテーブルはターゲット側に同期されます。
操作説明オブジェクトのインポート 選択エリアの右側のリストで、右上の インポート対象 をクリックします。詳細については、移行オブジェクトのインポートを参照してください。 \ 名前の変更 データ移行は移行オブジェクトの名前変更をサポートしています。詳細については、データベース・テーブルの名前変更を参照してください。 \ 行フィルタリング データ移行は WHERE条件を使用した行フィルタリングをサポートしています。詳細については、SQL条件でのデータフィルタリングを参照してください。列を表示エリアで、移行オブジェクトの列情報を確認することもできます。\ 削除/すべてクリア データ移行では、データマッピング時に、一時的にターゲット側に選択された単一または複数のオブジェクトを削除する操作をサポートしています。 - 単一の移行オブジェクトの削除
選択エリアの右側のリストで、対象オブジェクトの後ろにある 削除 アイコンをクリックすると、その移行オブジェクトを削除できます。 - すべての移行オブジェクトの削除
選択エリアの右側のリストで、右上の すべてクリア をクリックします。ダイアログボックスで、OK をクリックすると、すべての移行オブジェクトが削除されます。
マッチングルール を選択した場合、詳細については データベース間のマッチングルールの設定を参照してください。
次へ をクリックします。移行オプション ページで、各パラメータを設定します。
フル移行
サブスクリプションタイプとオブジェクトを選択する ステップで、一方向同期 > 完全移行 を選択した場合に、以下のパラメータが表示されます。
パラメータ説明読み取り並列設定 このパラメータは、フル移行段階でソース側からデータを読み取る並列数を設定します。最大値は512です。並列数が高すぎると、ソース側の負荷が過大になり、業務に影響を与える可能性があります。 書き込み並列設定 このパラメータは、フル移行段階でターゲット側にデータを書き込む並列数を設定します。最大値は512です。並列数が高すぎると、ターゲット側の負荷が過大になり、業務に影響を与える可能性があります。 フル移行レートの制限の有無 実際のニーズに応じて、フル移行レートの制限を有効にするかどうかを決定できます。有効にする場合は、ソース側読み取りRPS(フル移行段階で1秒間にソース側から最大で読み取れる行数の上限)、ソース側読み取りBPS(フル移行段階で1秒間にソース側から最大で読み取れるストリーム量の上限)、ターゲット側書き込み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;- 移行を停止する を選択した場合、ターゲット側テーブルオブジェクトにデータが存在すると、フル移行はエラーとして「移行は許可されません」と表示されます。ターゲット側のデータを適切に処理した後、移行を続けてください。
増分同期
タイプとオブジェクトを選択 ステップで、一方向同期 > 増分同期 を選択した場合に、以下のパラメータが表示されます。
パラメータ説明書き込み並列設定 このパラメータは、増分同期段階でターゲット側にデータを書き込む並列数を設定します。最大値は512です。並列数が高すぎると、ターゲット側の負荷が過大になり、業務に影響を与える可能性があります。 増分移行レートの制限の有無 実際のニーズに応じて、増分同期レートの制限を有効にするかどうかを決定できます。有効にする場合は、ターゲット側書き込みRPS(増分同期段階で1秒間にターゲット側に同期できるデータ行数の最大値の制限)とターゲット側書き込みBPS(増分同期段階で1秒間にターゲット側に同期できるストリーム量の最大値の制限)を設定してください。 説明
ここで設定されたRPSとBPSは、速度制限とトラフィック制限の能力としてのみ機能します。増分同期で実際に達成可能な性能は、ソース側、ターゲット側、インスタンス仕様の設定などの要因によって制限されます。
増分同期開始時点 - 移行タイプの選択時に 完全移行 を選択している場合、このパラメータは表示されません。
- 移行タイプの選択時に 完全移行 を選択していないが、増分同期 を選択している場合は、特定の時点以降のデータの移行を指定してください。デフォルトは現在のシステム時刻です。増分同期の時点の設定を参照してください。
次へ をクリックすると、システムはデータ移行タスクの事前チェックを実行します。
事前チェック プロセスでは、データ移行はデータベースユーザーの読み書き権限、データベースのネットワーク接続などが要件を満たしているかどうかをチェックします。すべてのチェックタスクが合格した場合にのみ、データ移行タスクを開始できます。事前チェックでエラーが発生した場合:
問題を調査・処理した後、事前チェックを再実行し、事前チェックが成功するまで繰り返すことができます。
または、失敗した事前チェック項目の操作列にある スキップ をクリックすることもできます。これにより、その操作をスキップする具体的な影響を示すダイアログボックスがポップアップ表示されます。スキップしてもよいことを確認したら、ダイアログボックス内の OK をクリックしてください。
事前チェックが成功したら、購入 をクリックし、データ移行インスタンスを購入する ページに進んで購入します。
購入が成功すると、データ移行タスクを開始できます。購入の詳細については、データ移行インスタンスの購入を参照してください。データ移行インスタンスの購入が一時的に不要な場合は、保存 をクリックして、データ移行タスクの詳細ページに移動してください。その後、必要に応じて手動で購入できます。
データ移行の詳細ページの右上隅にある 検証タスクの設定 をクリックすると、ソースデータベースとターゲットデータベースのデータの差異を比較できます。詳細については、新しいデータ検証タスクの作成を参照してください。
データ移行サービスは、データ移行タスクの実行中に移行オブジェクトを変更することをサポートしています。詳細については、移行オブジェクトの表示と変更を参照してください。データ移行タスクが開始されると、選択した移行タイプに従って順次実行されます。詳細については、データ移行タスクの詳細の表示の「移行の詳細を見る」モジュールの内容を参照してください。