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インスタンスのシステム構成の確認と変更
以下の操作を実行する必要があります:
ソース側のOracleデータベースでアーカイブモードを有効にします。
ソース側のOracleデータベースで補償ログを有効にします。
(オプション) Oracleデータベースのシステムパラメータを設定します。
説明
インスタンスタイプをオンプレミスOracleに選択した場合、システムパラメータ
_log_parallelism_maxを設定できます。
ソース側のOracleデータベースでアーカイブモードを有効にする
SELECT log_mode FROM v$database;
log_modeフィールドはarchivelogである必要があります。そうでない場合は、以下の方法で変更する必要があります。
以下のコマンドを実行して、アーカイブモードを有効にします。
SHUTDOWN IMMEDIATE; STARTUP MOUNT; ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;以下のコマンドを実行して、アーカイブログのパスとクォータを確認します。
recovery fileのパスとクォータを確認し、db_recovery_file_dest_sizeの設定値は可能な限り大きく設定することを推奨します。また、アーカイブを有効にした後は、RMANなどの方法で定期的にアーカイブログをクリーンアップする必要があります。SHOW PARAMETER db_recovery_file_dest;ビジネスニーズに応じて、アーカイブログのクォータを変更します。
ALTER SYSTEM SET db_recovery_file_dest_size =50G SCOPE = BOTH;
ソース側のOracleデータベースで補償ログを有効にする
LogMiner Readerは、Oracleシステム構成でテーブルレベルの補償ログのみを有効にすることをサポートしています。移行中にソース側のOracleデータベースで新規に作成されたテーブルがあり、それを移行する必要がある場合は、DML操作を実行する前に、PKおよびUKの補償ログを開く必要があります。そうでない場合、データ移行時にログが不完全であるという例外が発生します。
注意
補償ログはOracleプライマリデータベースで有効にする必要があります。
ソース側とターゲット側のインデックスが一致しない、ETLが期待通りに機能しない、パーティションテーブルの移行パフォーマンスが低下するなどの問題が発生した場合、以下の補償ログを追加する必要があります:
DataBaseレベルまたはTableレベルの
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が期待通りに動作しない可能性があります。 | DataBaseレベルでPK、UKの補償ログを有効にする必要があります。 手動で関連する列を補償ログに追加します。 |
| PK/UK/パーティション列の追加、削除、変更、またはETL列の変更 | 起動時に補償ログの追加が必要なルールを満たさないため、データの不整合やデータ移行のパフォーマンス低下が発生する可能性があります。 | 上記の補償ログのルールに従って、適切に列を追加します。 |
LogMiner Readerは、以下の2つの方法でチェックを行います。補償ログが有効になっていない場合は終了します。
DataBaseレベルで
supplemental_log_data_pkとsupplemental_log_data_uiを有効にします。以下のコマンドを実行して、補償ログが有効になっているかどうか確認します。クエリ結果がすべて
YESであれば、補償ログは有効になっています。SELECT supplemental_log_data_pk, supplemental_log_data_ui FROM v$database;有効になっていない場合は、以下の操作を実行してください:
以下のステートメントを実行して、補償ログを有効にします。
ALTER DATABASE ADD supplemental log DATA(PRIMARY KEY, UNIQUE) columns;有効にした後、アーカイブログを2回切り替え、タスクを開始する前に5分以上待機する必要があります。Oracle RACの場合は、複数のインスタンスを交互に切り替えます。
ALTER SYSTEM SWITCH LOGFILE;Oracle RACの場合、あるインスタンスを複数回切り替えた後、別のインスタンスに切り替える場合、交互に切り替えないと、最初のファイル取得時に、後から切り替えたインスタンスが補償ログを有効にする前のログを取得してしまう可能性があります。
Tableレベルで
supplemental_log_data_pkとsupplemental_log_data_uiを有効にします。以下のステートメントを実行して、DataBaseレベルの
supplemental_log_data_minが有効になっているか確認します。SELECT supplemental_log_data_min FROM v$database;クエリ結果が
YESまたはIMPLICITであれば、有効になっています。以下のステートメントを実行し、同期対象テーブルのテーブルレベル補償ログが有効になっているか確認します。
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;有効にした後、アーカイブログを2回切り替え、タスクを開始する前に5分以上待機する必要があります。Oracle RACの場合は、複数のインスタンスを交互に切り替えます。
ALTER SYSTEM SWITCH LOGFILE;
Oracleデータベースのシステムパラメータの設定(オプション)
オンプレミスのOracleデータベースを使用する場合、Oracleデータベースのシステムパラメータ _log_parallelism_max を1に設定することを推奨します。このシステムパラメータは通常、デフォルトで2に設定されています。
_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';
_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;
システムパラメータ
_log_parallelism_maxを変更した後、インスタンスを再起動し、アーカイブログを2回切り替え、タスクを開始する前に5分以上待機します。
対応しているソースおよびターゲット側のインスタンスタイプ
クラウドプロバイダー |
ソース |
ターゲット端 |
|---|---|---|
| AWS | RDS Oracle | OceanBase Oracle Compatible(トランザクション型) |
| AWS | オンプレミス Oracle | OceanBase Oracle Compatible(トランザクション型) |
| 华为云 | オンプレミス Oracle | OceanBase Oracle Compatible(トランザクション型) |
| 腾讯云 | オンプレミス Oracle | OceanBase Oracle Compatible(トランザクション型) |
| Alibaba Cloud | オンプレミス Oracle | OceanBase Oracle Compatible(トランザクション型) |
操作手順
データ移行タスクを新規作成します。

OB Cloudデータベースコンソールにログインします。
左側のナビゲーションペインで、データサービス > データ移行 をクリックします。
データ移行 ページで、データ移行 タブをクリックします。
データ移行 タブで、右上の タスクを作成する をクリックします。
タスク名を編集するテキストボックスに、カスタムの移行タスク名を入力します。
中国語、数字、英字の組み合わせを使用することを推奨します。名前にはスペースを含めず、長さは64文字を超えないようにしてください。
ソースとターゲットを設定する ページで、各パラメータを設定します。
ソース セクションで、各パラメータを設定します。
既に作成・保存されたデータソースを参照する必要がある場合、ソース の右側にある クイックフィル をクリックし、ドロップダウンリストから対象のデータソースを選択します。選択完了後、ソースエリアの各設定が自動的に入力されます。現在の設定を新しいデータソースとして保存する場合は、ソース エリアの右上にある 保存 アイコンをクリックしてください。
また、クイックフィル のドロップダウンリストで データソースの管理 をクリックすると、データソース ページに移動し、データソースの表示や管理を行えます。この記事では異なる種類のデータソースを一元的に管理します。詳細については、データソースモジュールのドキュメントをご参照ください。
パラメータ説明クラウドプロバイダー 現在、Huawei Cloud、Tencent Cloud、および Alibaba Cloud をサポートしています。 データベースタイプ ソースを Oracle に設定します。 インスタンスタイプ 現在、セルフマネージドオラクル のみをサポートしています。 リージョン ソースデータベースのリージョンを選択します。 接続タイプ エンドポイント と パブリックIP が含まれます。 - エンドポイント 接続方式を選択した場合、ページに表示されている認可済みのアカウントIDを、エンドポイントサービスのホワイトリストに追加する必要があります。これにより、そのアカウントのエンドポイントがエンドポイントサービスに接続できるようになります。詳細については、プライベートネットワークのホワイトリストに追加するをご参照ください。
- パブリックIP 接続方式を選択した場合、ページに表示されているデータソースのIPアドレスをOracleデータベースインスタンスのホワイトリストに追加する必要があります。これにより、接続性が確保されます。詳細については、パブリックネットワークのホワイトリストに追加するをご参照ください。
説明
ソースとターゲットのリージョンを選択すると、ページにホワイトリストに追加する必要があるデータソースのIPアドレスが表示されます。
接続情報 - 接続タイプ を エンドポイント に設定した場合、エンドポイントサービス名を入力してください。
- 接続タイプ を パブリックIP に設定した場合、データベースホストのIPアドレスとポート番号を入力してください。
Service Name OracleデータベースのService名です。 データベースアカウント データ移行用のOracleデータベースのユーザー名です。 パスワード データベースユーザーのパスワードです。 ターゲット エリアで、各パラメータを設定します。
既に作成・保存されたデータソースを参照する必要がある場合、ターゲット の右側にある クイックフィル をクリックし、ドロップダウンリストから対象のデータソースを選択します。選択完了後、ターゲットエリアの各設定が自動的に入力されます。現在の設定を新しいデータソースとして保存する場合は、ターゲット エリアの右上にある 保存 アイコンをクリックしてください。
また、クイックフィル のドロップダウンリストで データソースの管理 をクリックすると、データソース ページに移動し、データソースの表示や管理を行えます。この記事では異なる種類のデータソースを一元的に管理します。詳細については、データソースモジュールのドキュメントをご参照ください。
パラメータ説明クラウドベンダー 現在、AWS、Huawei Cloud、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互換モードのテナントのユーザー名です。 パスワード データベースユーザーのパスワード。
テストして続行 をクリックします。
データ移行がエンドポイントに初めてアクセスする際、接続テストに失敗した場合は、ポップアップウィンドウの指示に従って操作してください。
クラウドベンダー を AWS に設定した場合:
エンドポイントサービス作成時に、パラメータ エンドポイントの使用を許可する で 許可する を選択した場合、データ移行がプライベート接続に初めてアクセスする際、AWSコンソールにアクセスし、受信したエンドポイント接続要求を エンドポイント接続要求を受け入れる 操作を実行するよう求められます。
クラウドベンダー を Huawei Cloud に設定した場合:
エンドポイントサービス作成時に接続承認機能を有効にした場合、エンドポイントがそのエンドポイントサービスに接続するには承認が必要です。詳細については、エンドポイントサービスの接続承認の管理をご参照ください。
クラウドベンダー を Tencent Cloud に設定した場合:
エンドポイントサービス作成時に自動接続を受け入れないよう設定した場合、エンドポイントサービスが手動で接続を受け入れる必要があります。詳細については、エンドポイント接続の管理をご参照ください。
タイプとオブジェクトの選択 ページで、各パラメータを設定します。
同期トポロジー 領域で、一方向同期 を選択します。
データ移行は 一方向同期 と 双方向同期 をサポートしています。本記事では単方向同期の操作について説明します。双方向同期の詳細については、双方向同期タスクの設定をご参照ください。
移行タイプ 領域で、現在のデータ移行タスクの移行タイプを選択します。
移行タイプ には、スキーマ移行、完全移行、および 増分同期 が含まれます。
パラメータ説明構造移行 構造移行では、文字セットのマッピング関係を自ら定義する必要があります。データ移行は、ソースデータベースのデータ(構造)をターゲットデータベースにコピーするだけで、ソースデータ(構造)に影響を与えません。 フル移行 フル移行タスクが開始されると、データ移行サービスはソースデータベースのテーブルの既存データをターゲット側のデータベースに対応するテーブルに移行します。 増分同期 増分同期タスクが開始されると、データ移行はソースデータベースで変更されたデータ(追加、変更、削除)をターゲットデータベースの対応するテーブルに同期します。増分同期 には DML同期 と DDL同期 が含まれ、ニーズに応じてカスタマイズ設定できます。詳細については、DML/DDLのカスタム設定をご参照ください。 </3> 移行対象を選択してください 領域で、移行オブジェクトの選択方法を設定します。
オブジェクトの指定 と ルールによる一致 の2つの方法で移行オブジェクトを選択できます。
移行範囲を選択してください 領域で、移行するオブジェクトを選択します。
- オブジェクトの指定 を選択した場合、データ移行は データベースオブジェクト と データベース全体 をサポートします。テーブル・ビュー移行では、1つまたは複数のデータベース内のテーブルやビューを移行対象として選択できます。データベース移行では、データベース全体を移行対象として選択できます。データベースに対してテーブル・ビュー移行を選択した場合、そのデータベースではデータベース移行を使用できなくなります。データベースに対してデータベース移行を選択した場合、そのデータベースではテーブル・ビュー移行を使用できなくなります。
データベースオブジェクト または データベース全体 のいずれかの方法を選択した後、左側で移行する対象を選択し、> をクリックして右側のリストに追加します。
データ移行では、テキスト形式でオブジェクトをインポートでき、ターゲット側のオブジェクトの名前変更、行フィルタリングの設定、列情報の表示、および単一またはすべての移行オブジェクトの削除などの操作をサポートします。

説明
データベース移行 を選択した場合:
右側のリストにはデータベース名のみが表示され、具体的なオブジェクトは表示されません。
増分同期-DDL同期 移行タイプを選択した場合、ソース側に新規作成されたテーブルはターゲット側に同期されます。
操作説明オブジェクトのインポート 選択エリアの右側のリストで、右上の インポート対象 をクリックします。詳細については、移行オブジェクトのインポートをご参照ください。 名前の変更 データ移行では、移行オブジェクトの名前を変更できます。詳細については、データベース・テーブルの名前変更をご参照ください。 行フィルタリング データ移行では WHERE条件を使用した行フィルタリングをサポートします。詳細については、SQL条件でのデータフィルタリングをご参照ください。また、列を表示 エリアで、移行オブジェクトの列情報を確認できます。削除/すべて削除 データ移行では、データマッピング時に、一時的にターゲット側に選択された単一または複数のオブジェクトを削除する操作をサポートします。 - 単一の移行オブジェクトの削除
選択エリアの右側のリストで、対象オブジェクトの後ろにある 削除 アイコンをクリックすると、その移行オブジェクトを削除できます。 - すべての移行オブジェクトの削除
選択エリアの右側のリストで、右上の すべてクリア をクリックします。ダイアログボックスで、OK をクリックすると、すべての移行オブジェクトを削除できます。
- ルールによる一致 を選択した場合、詳細については データベース間のマッチングルールの設定をご参照ください。
次へ をクリックします。移行オプション ページで、各パラメータを設定します。
構造移行
タイプとオブジェクトの選択 ページで、スキーマ移行 を選択し、かつソース側とターゲット側の文字セットが一致しない場合にのみ、以下のパラメータが表示されます。

ソース側とターゲット側の文字セットが一致しない場合(例:ソース側がGBK、ターゲット側がUTF-8)、フィールドの切り捨てやデータの不整合が発生する可能性があります。文字数拡張係数 を設定することで、文字型フィールドの長さを拡張できます。
注意
拡張後の長さは、ターゲット側の最大制限を超えてはなりません。
フル移行
タイプとオブジェクトの選択 ページで、一方向同期 > 完全移行 を選択した場合にのみ、以下のパラメータが表示されます。
パラメータ説明読み取り並列設定 このパラメータは、フル移行段階でソース側からデータを読み取る並列数を設定します。最大制限は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は、速度制限とレート制限の能力としてのみ機能します。実際の増分同期で達成可能な性能は、ソース側、ターゲット側、インスタンス仕様の設定などの要因の影響を受けます。
増分同期開始時点 - 移行タイプの選択時に 完全移行 を選択した場合、このパラメータは表示されません。
- 移行タイプの選択時に 完全移行 を選択せず、増分同期 を選択した場合は、この時間点以降のデータを移行するように指定してください。デフォルトは現在のシステム時刻です。詳細については、増分同期ポイントの設定をご参照ください。
} 詳細オプション
ターゲット側のOceanBaseデータベースのOracle互換モードテナントがV4.3.0以降のバージョンであり、かつ タイプとオブジェクトを選択してください ページで、スキーマ移行 または 増分同期 > DDL同期 を選択した場合に、このセクションのパラメータが表示されます。

ターゲット側のテーブルオブジェクトのストレージタイプには、デフォルト、行ストア、カラムストア、および 行列ハイブリッド型 が含まれます。この設定は、構造移行または増分同期時のターゲット側テーブルオブジェクトのストレージタイプを決定するために使用されます。
説明
デフォルト オプションは、ターゲット側のパラメータ設定に基づいて他のオプションを適応させるものです。構造移行のテーブルオブジェクトや増分DDLで新規作成されるテーブルオブジェクトは、設定されたストレージタイプに応じて対応する構造を書き込みます。
次へ をクリックすると、システムはデータ移行タスクの事前チェックを実行します。
事前チェック プロセスでは、データ移行はデータベースユーザーの読み書き権限、データベースのネットワーク接続などが要件を満たしているかどうかをチェックします。すべてのチェック項目が合格した場合にのみ、データ移行タスクを開始できます。事前チェックでエラーが発生した場合:
問題を調査・処理した後、事前チェックを再実行し、成功するまで繰り返すことができます。
失敗した事前チェック項目の操作列にある スキップ をクリックすることもできます。これにより、その操作をスキップする具体的な影響を示すダイアログボックスがポップアップ表示されます。スキップしてもよいことを確認したら、ダイアログボックス内の OK をクリックしてください。
事前チェックに成功したら、購入 をクリックし、データ移行インスタンスを購入する ページに進んで購入します。
購入が成功すると、データ移行タスクを開始できます。購入の詳細については、データ移行インスタンスの購入をご参照ください。データ移行インスタンスの購入が一時的に不要な場合は、保存 をクリックしてデータ移行タスクの詳細ページに移動し、後から必要に応じて手動で購入できます。
データ移行の詳細ページの右上隅にある 検証タスクの設定 をクリックすると、ソースデータベースとターゲットデータベース間のデータ差異を比較できます。詳細については、データ検証タスクの新規作成をご参照ください。
データ移行サービスは、データ移行タスクの実行中に移行オブジェクトを変更することをサポートしています。詳細については、移行オブジェクトの表示と変更をご参照ください。データ移行タスクが開始されると、選択した移行タイプに従って順次実行されます。詳細については、データ移行タスクの詳細の表示の「移行の詳細を見る」モジュールの内容をご参照ください。