OracleデータベースからOceanBaseデータベースのOracle互換モードへのデータ移行タスクを新規作成し、構造移行、フル移行、増分同期を通じて、ソースデータベースの既存業務データおよび増分データをOceanBaseデータベースのOracle互換モードに移行できます。
注意
データ移行タスクが長期間非アクティブ状態(タスクステータスが 失敗、一時停止 または 完了)にある場合、増分ログの保持期間などの影響により、タスクが回復できない可能性があります。データ移行システムは、非アクティブ状態が7日間を超えるタスクを自動的に解放し、関連リソースを回収します。タスクに対してアラートを設定し、タスク関連の異常を速やかに処理することを推奨します。
前提条件
ターゲット側のOceanBaseデータベースOracle互換モードで対応するスキーマを作成していること。
Oracleソースインスタンスではアーカイブログが有効になっており、データ移行サービスの増分レプリケーション開始前にすでにログファイルの切り替えが行われていること。
OracleソースインスタンスにはLogMinerツールがインストールされており、正常に使用できること。
ターゲット側のOceanBaseクラスタインスタンスとテナントが作成済みであること。詳細については、インスタンスの作成およびテナントの作成を参照してください。
ソース側とターゲット側にデータ移行タスク専用のデータベースユーザーを作成し、関連する権限を付与していること。詳細については、ユーザー権限の説明を参照してください。
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データベース11G及びそれ以前のバージョンでは、30バイトを超えるデータベースオブジェクトの作成はサポートされていません。
データ移行サービスは、ソース側の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) ); |
元のテーブル定義をサポートします |
Oracleインスタンスのシステム構成の確認と変更
以下の操作を実行する必要があります:
注意
AWS RDS Oracleインスタンスで以下の操作を実行する際には、権限制限があります。詳細については、RDS for Oracleユーザーと権限を参照してください。
ソース側のOracleデータベースでアーカイブモードを有効にする
ソース側のOracleデータベースでサプリメンタル・ロギングを有効にする
(オプション) Oracleデータベースのシステムパラメータを設定する
説明
インスタンスタイプをセルフマネージド Oracleに選択した場合、システムパラメータ
_log_parallelism_maxを設定できます。
ソース側のOracleデータベースでアーカイブモードを有効にする
AWS RDS Oracleインスタンスでアーカイブモードを有効にする
AWS RDS Oracleインスタンスでアーカイブモードを有効にする場合、保存時間に基づく設定のみをサポートし、サイズによる制御はサポートされません。
EXEC rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours',24);
セルフマネージド 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データベースでサプリメンタル・ロギングを有効にする
AWS RDS Oracleインスタンスでサプリメンタル・ロギングを有効にする
EXEC rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD');
EXEC rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','PRIMARY KEY');
EXEC rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD','UNIQUE');
サプリメンタル・ロギングを有効にした後、アーカイブログに切り替えます。
EXEC rdsadmin.rdsadmin_util.switch_logfile;
AWS RDS Oracleインスタンスでサプリメンタル・ロギングを有効にすると、テーブルレベルの制御機能がないため、以下の影響が発生します。
PKとUKのみの設定がサポートされており、データをフィルタリングする条件の設定に制限があります。データのフィルタリングが必要な場合は、
alter_supplemental_logging('ADD','ALL')を設定する必要がありますが、これによりログ量が大幅に増加します。ソース側とターゲット側のテーブル構造(主キー、UK関連)が一致しない場合、データ品質の問題が発生する可能性があります。
セルフマネージド 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;未開の場合は、以下の操作を実行してください:
以下のステートメントを実行し、サプリメンタル・ロギングを有効にします。
ALTER DATABASE ADD supplemental log DATA(PRIMARY KEY, UNIQUE) columns;開いた後、アーカイブログを2回切り替え、タスクを開始する前に5分以上待機してください。Oracle RACの場合は、複数のインスタンスを交互に切り替えます。
ALTER SYSTEM SWITCH LOGFILE;Oracle RACの場合、あるインスタンスで複数回ログを切り替えた後に別のインスタンスへ切り替える際、交互に切り替えないと、初回のファイル取得時に、後から切り替えたインスタンスがサプリメンタル・ロギング開始前のログを取得してしまう可能性があります。
テーブルレベルで
supplemental_log_data_pkとsupplemental_log_data_uiを有効にします。以下のステートメントを実行し、データベースレベルの
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データベースを使用する場合、システムパラメータ _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(Transactional) |
| AWS | Self-managed Oracle | OceanBase Oracle Compatible(Transactional) |
| Huawei Cloud | Self-managed Oracle | OceanBase Oracle Compatible(Transactional) |
| Google Cloud | Self-managed Oracle | OceanBase Oracle Compatible(Transactional) |
| Alibaba Cloud | Self-managed Oracle | OceanBase Oracle Compatible(Transactional) |
手順
データ移行タスクを新規作成します。
OceanBase Cloudコンソールにログインします。
左側のナビゲーションバーで、データサービス > データ移行 をクリックします。
データ移行 ページで、データ移行 タブをクリックします。
データ移行 タブで、右上の タスクを作成する をクリックします。
タスク名を編集するテキストボックスに、カスタムの移行タスク名を入力します。
中国語、数字、英字の組み合わせを使用することを推奨します。名前にはスペースを含めることができず、長さは64文字を超えてはなりません。
ソースとターゲットの設定 ページで、各パラメータを設定します。
ソース セクションで、各パラメータを設定します。
既に作成・保存された<UI-TERM key="obcloud-console.MainMenu.home.constant.DataSource">データソース</UI-TERM>を参照する必要がある場合、**<UI-TERM key="oms-cloud.Migration.compents.MigrationSourceTarget.form.title">ソース</UI-TERM>** の右側にある **<UI-TERM key="oms-cloud.components.SearchFilterSelect.ReferenceDataSource">クイック入力</UI-TERM>** をクリックし、ドロップダウンリストから対象のデータソースを選択します。選択完了後、**<UI-TERM key="oms-cloud.Migration.compents.MigrationSourceTarget.form.title">ソース</UI-TERM>** セクションの各設定が自動的に入力されます。現在の設定を新しいデータソースとして保存する場合は、**<UI-TERM key="oms-cloud.components.SearchFilterSelect.ReferenceDataSource">クイック入力</UI-TERM>** の右側にある **<UI-TERM key="oms-cloud.DataVerify.hooks.useModifyParamsDrawer.Save">保存</UI-TERM>** アイコンをクリックします。
また、**<UI-TERM key="oms-cloud.components.SearchFilterSelect.ReferenceDataSource">クイック入力</UI-TERM>** のドロップダウンリストで **<UI-TERM key="oms-cloud.components.SearchFilterSelect.ManageDataSources">データソースの管理</UI-TERM>** をクリックすると、**<UI-TERM key="obcloud-console.MainMenu.home.constant.DataSource">データソース</UI-TERM>** ページに移動し、データソースの表示や管理を行えます。**<UI-TERM key="obcloud-vibe.billing.export.dataSource">データソース</UI-TERM>** ページでは、異なる種類のデータソースを一元的に管理できます。詳細については、[データソース](../250.data-sources-management/100.create-data-sources.md)モジュールのドキュメントを参照してください。
|パラメータ|説明|
|-----------------------|----------------|
| <UI-TERM key="oms-cloud.pages.Performance.CloudVendor">クラウドベンダー</UI-TERM> | 現在 **<UI-TERM key="oceanbase-intl-business.SrcConstants.CloudProvider.AWS">AWS</UI-TERM>**、**<UI-TERM key="obcloud-console.utils.textFormat.getCloudProviderText.HuaweiCloud">Huawei Cloud</UI-TERM>**、**<UI-TERM key="oms-cloud.Migration.constants.GoogleCloud">Googleクラウド</UI-TERM>**、および **Alibaba Cloud** をサポートしています。|
| データベースタイプ | ソースを **Oracle** として選択します。 |
| インスタンスタイプ | <ul><li><UI-TERM key="oms-cloud.pages.CompatibilityAssessment.CloudVendor">クラウドベンダー</UI-TERM>** を **<UI-TERM key="obcloud-console.modal.SubscriptionConfirmModal.AWSCloud">AWS</UI-TERM>** に設定した場合、インスタンスタイプは **RDS Oracle** と **<UI-TERM key="oms-cloud.components.Endpoint.constants.SelfBuiltOracle">セルフマネージドオラクル</UI-TERM>** をサポートします。</li><li>クラウドベンダーを **Huawei Cloud**、**<UI-TERM key="obcloud-console.Step2.Privatelink.constant.GoogleCloud">Google Cloud</UI-TERM>**、または **Alibaba Cloud** に設定した場合、インスタンスタイプは **<UI-TERM key="oms-cloud.components.Endpoint.constants.SelfBuiltOracle">セルフマネージドオラクル</UI-TERM>** をサポートします。</li></ul>|
| リージョン | ソースデータベースのリージョンを選択します。|
| <UI-TERM key="oms-cloud.Detail.components.MigrationConnectInfo.dbEngine">接続タイプ</UI-TERM> | **<UI-TERM key="oceanbase-intl-console.Connect.Step2.Privatelink.Endpoint">エンドポイント</UI-TERM>** と **<UI-TERM key="oms-cloud.pages.Migration.New.components.MigrationSourceTarget.SourceMigration.instanceType.PublicIP">パブリック接続</UI-TERM>** が含まれます。<ul><li>**<UI-TERM key="oms-cloud.pages.Migration.New.components.MigrationSourceTarget.SourceMigration.instanceType.PrivateLink">エンドポイント</UI-TERM>** 接続方式を選択した場合、ページに表示されているアカウントIDをエンドポイントサービスの許可リストに追加する必要があります。これにより、そのアカウントのエンドポイントがエンドポイントサービスに接続できるようになります。詳細については、[プライベート接続の選択](../250.data-sources-management/400.select-endpoint/200.aws-endpoint.md)を参照してください。<ul><li>**<UI-TERM key="src.page.WorkspaceCluster.Detail.8988D30A">クラウドベンダー</UI-TERM>** を **<UI-TERM key="oms-cloud.Migration.constants.AWSCloud">AWS</UI-TERM>** に設定し、エンドポイントサービス作成時にパラメータ **エンドポイントを使用するために受け入れる必要があります** で **必要** を選択した場合、データ移行サービスが初めてプライベート接続にアクセスする際、AWSコンソールにアクセスし、受信したConnectionsリクエストに対して **Accept endpoint connection request** 操作を実行するよう求められます。</li><li>クラウドベンダーを **<UI-TERM key="oms-cloud.Migration.constants.GoogleCloud">Googleクラウド</UI-TERM>** に設定した場合、Published Servicesに認可プロジェクトを追加してください。認可後は、データソースの接続テスト時に手動で認可する必要はありません。</li></ul></li><li>**<UI-TERM key="oms-cloud.pages.Migration.New.components.MigrationSourceTarget.SourceMigration.instanceType.PublicIP">パブリック接続</UI-TERM>** 接続方式を選択した場合、ページに表示されている<UI-TERM key="obcloud-console.MainMenu.home.constant.DataSource">データソース</UI-TERM> IPアドレスをOracleデータベースインスタンスの許可リストに追加して、接続性を確保する必要があります。詳細については、[パブリック接続の選択](../250.data-sources-management/400.select-endpoint/200.aws-endpoint.md)を参照してください。<main id="notice" type='explain'><h4>説明</h4><p> ソースと<UI-TERM key="oms-cloud.Migration.compents.MigrationSourceTarget.TargetMigration.form.title">ターゲット</UI-TERM>のリージョンを選択すると、ページに許可リストに追加する必要がある<UI-TERM key="obcloud-console.MainMenu.home.constant.DataSource">データソース</UI-TERM> IPアドレスが表示されます。</p></main></li></ul>|
|接続情報|<ul><li>**<UI-TERM key="oms-cloud.pages.Migration.New.components.MigrationSourceTarget.SourceMigration.ConnectionType">接続タイプ</UI-TERM>** を **<UI-TERM key="oms-cloud.pages.Migration.New.Endpoint.Mysql.HUAWEI_CLOUD.instanceType.PrivateLink">エンドポイント</UI-TERM>** に設定した場合、エンドポイントサービス名を入力してください。</li><li>**<UI-TERM key="dss.List.DataSourceList.DetailDrawer.ConnectionType">接続タイプ</UI-TERM>** を **<UI-TERM key="oms-cloud.pages.Migration.New.components.MigrationSourceTarget.SourceMigration.instanceType.PublicIP">パブリック接続</UI-TERM>** に設定した場合、データベースホストのIPアドレスとポート番号を入力してください。</li></ul> |
| Service Name | OracleデータベースのService名。|
|データベースアカウント|データ移行用のOracleデータベースのユーザー名。|
|パスワード|データベースユーザーのパスワード。|
ターゲット エリアで、各パラメータを設定します。
既に作成・保存されたデータソースを参照する場合は、ターゲット の右側にある クイック入力 をクリックし、ドロップダウンリストから対象のデータソースを選択します。選択完了後、ターゲット エリアの各設定は自動的に入力されます。現在の設定保存を新しいデータソースとして設定する場合は、クイック入力 の右側にある 保存 アイコンをクリックしてください。
また、クイック入力 のドロップダウンリストで データソースの管理 をクリックすると、データソース ページに移動し、データソースの表示や管理を行えます。データソース ページでは、異なるタイプのデータソースを一元的に管理できます。詳細については、データソースモジュールのドキュメントを参照してください。
パラメータ説明クラウドプロバイダー 現在、AWS、Huawei Cloud、Google Cloud、および Alibaba Cloud をサポートしています。ソースと同じクラウドプロバイダーを選択することも、異なるクラウド間でのデータ移行も可能です。 説明
現在、クラウド間のデータ移行機能はデフォルトで利用できません。この機能を使用する場合は、OceanBase Cloudのテクニカルサポートにお問い合わせください。
データベースタイプ 現在、ターゲット側では OceanBase Oracle Compatible のみをサポートしています。 インスタンスタイプ 現在、Dedicated (Transactional) のみをサポートしています。 リージョン ターゲットデータベースのリージョンを選択します。 インスタンス OceanBaseデータベースのOracle互換モードのテナントが存在するインスタンスのIDまたは名前です。インスタンス ページで、ターゲットインスタンスのIDまたは名前を確認できます。 説明
クラウドプロバイダーがAlibaba Cloudの場合、アカウント間認証をサポートするAlibaba Cloudのメインアカウントインスタンスを選択することもできます。詳細については、Alibaba Cloudアカウント認証を参照してください。
テナント OceanBaseデータベースのOracle互換モードのテナントのIDまたは名前です。インスタンス ページで、ターゲットインスタンスを展開し、そのインスタンス内のターゲットテナントのIDまたは名前を確認できます。 データベースアカウント データ移行に使用するOceanBaseデータベースのOracle互換モードのテナントのユーザー名です。 パスワード データベースユーザーのパスワード。 テストして続行 をクリックします。
タイプとオブジェクトの選択 ページで、各パラメータを設定します。
同期トポロジー セクションで、一方向同期 を選択します。
データ移行は 一方向同期 と 双方向同期 をサポートしています。本記事では単方向同期の操作について説明します。双方向同期の詳細については、双方向同期タスクの設定を参照してください。
移行タイプ セクションで、現在のデータ移行タスクの移行タイプを選択します。
移行タイプ には、スキーマ移行、全量移行、および 増分同期 が含まれます。
パラメータ説明構造移行 構造移行では、文字セットのマッピング関係を自ら定義する必要があります。データ移行は、ソースデータベースのデータ(構造)をターゲットデータベースにコピーするだけで、ソースデータ(構造)に影響を与えません。 フル移行 フル移行タスクが開始されると、データ移行サービスはソースデータベースのテーブルの既存データをターゲット側のデータベースの対応するテーブルに移行します。 増分同期 増分同期タスクが開始されると、データ移行はソースデータベースで変更されたデータ(追加、変更、削除)をターゲットデータベースの対応するテーブルに同期します。増分同期 には DML同期 と DDL同期 が含まれます。ニーズに応じてカスタマイズ設定が可能です。詳細については、DML/DDLのカスタム設定を参照してください。 移行対象を選択してください セクションで、移行オブジェクトの選択方法を設定します。
オブジェクトの指定 と マッチングルール の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 をクリックしてください。
事前チェックが成功したら、購入 をクリックし、データ移行インスタンスを購入する ページに進んで購入します。
購入が成功すると、データ移行タスクを開始できます。購入の詳細については、データ移行インスタンスの購入を参照してください。データ移行インスタンスの購入が一時的に不要な場合は、保存 をクリックしてデータ移行タスクの詳細ページに移動し、後から必要に応じて手動で購入することができます。
データ移行の詳細ページの右上隅にある 検証タスクの設定 をクリックすると、ソースデータベースとターゲットデータベースのデータ差異を比較できます。詳細については、データ検証タスクの新規作成を参照してください。
データ移行サービスは、データ移行タスクの実行中に移行オブジェクトを変更することをサポートしています。詳細については、移行オブジェクトの表示と変更を参照してください。データ移行タスクが開始されると、選択した移行タイプに従って順次実行されます。詳細については、データ移行タスクの詳細の表示の「移行詳細の表示」モジュールの内容を参照してください。