Data Transmission Service (DTS) は、ダウンタイムを最小限に抑えながら、自己管理 Oracle データベースから ApsaraDB RDS for PostgreSQL インスタンスにデータを移行することをサポートします。スキーマ移行、完全なデータ移行、増分データ移行を同時に実行することで、移行中もソースデータベースでトラフィックを処理し続けることができます。
前提条件
開始する前に、以下を確認してください。
Oracle データベースのバージョンが 9i、10g、11g、12c、18c、または 19c であること。
Oracle データベースがアーカイブログモードで実行されており、アーカイブ・ログファイルにアクセス可能で、適切な保持期間が設定されていること。詳細については、「アーカイブ REDO ログファイルの管理」をご参照ください。
Oracle データベースで補足ロギングが有効になっており、
SUPPLEMENTAL_LOG_DATA_PKとSUPPLEMENTAL_LOG_DATA_UIの両方がYesに設定されていること。詳細については、「補足ロギング」をご参照ください。移行するすべてのテーブルにプライマリキーまたは UNIQUE NOT NULL インデックスが含まれていること。
ターゲットの ApsaraDB RDS for PostgreSQL インスタンスが作成されていること。詳細については、「ApsaraDB RDS for PostgreSQL インスタンスの作成」をご参照ください。
DTS の Oracle 移行に関する機能と制限事項を確認済みであること。移行前に、Advanced Database & Application Migration (ADAM) を使用してデータベースの互換性評価を実施してください。詳細については、「Oracle データベースの準備」および「概要」をご参照ください。
課金
| 移行タイプ | タスク構成料金 | インターネットトラフィック料金 |
|---|---|---|
| スキーマ移行と完全なデータ移行 | 無料 | データが Alibaba Cloud からインターネット経由で移行される場合にのみ課金されます。課金概要をご参照ください。 |
| 増分データ移行 | 有料です。「課金概要」をご参照ください。 | — |
移行タイプ
| 移行タイプ | 説明 |
|---|---|
| スキーマ移行 | Oracle から ApsaraDB RDS for PostgreSQL にオブジェクトスキーマを移行します。サポートされるオブジェクトタイプ:テーブル、ビュー、シノニム、トリガー、ストアドプロシージャ、ストアドファンクション、パッケージ、カスタムタイプ。 説明 DTS はトリガーと互換性がありません。データの不整合を防ぐため、移行前にソースデータベースからトリガーを削除してください。詳細については、「トリガーを含むソースデータベースのデータ同期タスクの設定」をご参照ください。 |
| 完全なデータ移行 | Oracle データベースから ApsaraDB RDS for PostgreSQL に既存のすべてのデータを移行します。このフェーズでは、移行対象のオブジェクトに対して DDL 操作を実行しないでください。 |
| 増分データ移行 | 完全なデータ移行が完了した後、DTS は Oracle データベースから REDO ログファイルをポーリングし、増分変更を ApsaraDB RDS for PostgreSQL に適用します。これにより、移行中もソースデータベースを運用し続けることができます。 |
増分移行でサポートされる SQL 操作
| 操作タイプ | SQL ステートメント |
|---|---|
| DML | INSERT、UPDATE、DELETE |
| DDL | CREATE TABLE (パーティション句、サブパーティション句、または関数を含むステートメントを除く。CREATE TABLE AS SELECT はサポートされていません)、ALTER TABLE (ADD COLUMN、ADD INDEX、DROP COLUMN、DROP INDEX、MODIFY COLUMN、RENAME COLUMN)、DROP TABLE、RENAME TABLE、TRUNCATE TABLE、CREATE INDEX |
制限事項
スキーマ移行中、DTS は外部キーをソースデータベースからターゲットデータベースに移行します。
完全なデータ移行および増分データ移行中、DTS はセッションレベルで外部キーの制約チェックとカスケード操作を一時的に無効にします。移行中にソースデータベースでカスケード削除操作を実行すると、データの不整合が発生する可能性があります。
ソースデータベースの制限事項
ソースデータベースサーバーには十分なアウトバウンド帯域幅が必要です。帯域幅が不足すると、移行速度が低下します。
ソースデータベースが Express Connect 経由で接続された Oracle RAC データベースの場合、ソースデータベースの設定時に仮想 IP アドレス (VIP) を指定する必要があります。
ソースデータベースが Express Connect、VPN Gateway、Smart Access Gateway、データベースゲートウェイ、または Cloud Enterprise Network (CEN) 経由で接続された Oracle RAC データベースの場合、ソースデータベースの設定時には Single Client Access Name (SCAN) IP アドレスではなく、単一の VIP を使用してください。VIP を指定した後、Oracle RAC データベースのノードフェイルオーバーはサポートされません。
Oracle の VARCHAR2 フィールドに空文字列 (Oracle では NULL と評価される) が含まれており、PostgreSQL の対応するフィールドに非 NULL 制約がある場合、移行タスクは失敗します。
移行するテーブルには、すべてのフィールドが一意である PRIMARY KEY または UNIQUE 制約が必要です。これらがない場合、ターゲットデータベースに重複したレコードが含まれる可能性があります。
Oracle 12c 以降では、テーブル名は 30 バイトを超えることはできません。
移行オブジェクトとしてテーブルを選択し、ターゲットでテーブル名または列名を変更する必要がある場合、1 つのタスクでサポートされるテーブルは最大 1,000 です。1,000 を超えるテーブルの場合は、複数のタスクを設定するか、データベース全体を移行してください。
増分移行では、REDO ログ記録とアーカイブ・ログ記録を有効にする必要があります。これらの保持要件を満たさない場合、DTS が必要なログにアクセスできなくなり、タスクの失敗や、極端な場合にはデータ損失やデータの不整合を引き起こす可能性があります。DTS のサービスレベルアグリーメント (SLA) は、不十分なログ保持期間に起因する障害をカバーしません。
増分移行のみ:REDO ログとアーカイブ・ログは 24 時間以上保持する必要があります。
完全なデータ移行 + 増分データ移行:REDO ログとアーカイブ・ログは少なくとも 7 日間保持する必要があります。完全なデータ移行が完了した後、保持期間を 24 時間以上に短縮できます。
スキーマ移行および完全なデータ移行中は、移行対象のオブジェクトに対して DDL 操作を実行しないでください。これにより、移行が失敗します。
完全なデータ移行のみ (増分なし) の間は、ソースデータベースに書き込まないでください。データ整合性を確保するため、スキーマ移行、完全なデータ移行、増分データ移行を一緒に実行してください。
移行中に LONGTEXT フィールドを更新しないでください。これにより、移行が失敗します。
その他の制限事項
移行はオフピーク時に実行してください。完全なデータ移行は、ソースデータベースとターゲットデータベースの両方で読み取りおよび書き込みリソースを使用するため、データベースの負荷が増加します。
完全なデータ移行後、同時 INSERT による断片化のため、ターゲットの表領域はソースよりも大きくなります。
DTS は、失敗した移行タスクを最大 7 日間自動的に再試行します。ワークロードをターゲットに切り替える前に、失敗したタスクを停止またはリリースしてください。または、
REVOKEステートメントを実行して、ターゲットデータベース上の DTS アカウントから書き込み権限を取り消してください。そうしないと、再開された失敗タスクがターゲットデータをソースデータで上書きする可能性があります。ソースデータベースとターゲットデータベースの文字セットは互換性がある必要があります。互換性のない文字セットは、データの不整合や移行の失敗を引き起こします。
互換性のないデータの型による失敗を避けるため、DTS のスキーマ移行機能を使用してください。
ソースデータベースとターゲットデータベースは同じタイムゾーンを使用する必要があります。
DTS は NULL 終端文字
\0を ApsaraDB RDS for PostgreSQL に書き込みません。移行データにこの文字が含まれている場合、データの不整合が発生する可能性があります。Oracle の CHECK 制約は、ApsaraDB RDS for PostgreSQL の非 NULL 制約に変換されます。
DTS はカスタムタイプのオブジェクトを ApsaraDB RDS for PostgreSQL に移行します。Oracle によって自動的に生成された組み込みオブジェクトは移行されません。ApsaraDB RDS for PostgreSQL はこれらをネイティブにサポートしています。
データベースアカウントの設定
Oracle データベースにログインし、DTS が使用するアカウントを作成し、必要な権限を付与します。
以下の表に示す権限を持つアカウントが既にある場合は、このステップをスキップしてください。
| データベース | スキーマ移行 | 完全なデータ移行 | 増分データ移行 |
|---|---|---|---|
| 自己管理 Oracle データベース | スキーマオーナー権限 | スキーマオーナー権限 | 詳細な権限 |
| ApsaraDB RDS for PostgreSQL | スキーマオーナー権限 | — | — |
アカウントを作成して権限を付与するには:
自己管理 Oracle データベース:データベースアカウントの準備、CREATE USER、および GRANT
ApsaraDB RDS for PostgreSQL インスタンス:アカウントの作成
移行タスクの作成
データ移行タスクページに移動します。
Data Management (DMS) コンソールにログインします。
上部のナビゲーションバーで、[DTS] をクリックします。
左側のナビゲーションウィンドウで、[DTS (DTS)] > [データ移行] を選択します。
手順は、DMS コンソールのモードおよびレイアウトによって異なる場合があります。詳細については、「シンプルモード」および「DMS コンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。また、直接「新しい DTS コンソールのデータ移行タスクページ」にアクセスすることもできます。
[データ移行タスク] の横にあるドロップダウンリストから、移行インスタンスが存在するリージョンを選択します。
新しい DTS コンソールでは、左上隅からリージョンを選択します。
[タスクの作成] をクリックし、ソースデータベースとターゲットデータベースを設定します。
警告ソースデータベースとターゲットデータベースを設定した後、続行する前にページの上部に表示される制限事項を確認してください。この確認をスキップすると、タスクの失敗やデータの不整合を引き起こす可能性があります。
ソースデータベース
パラメーター 説明 タスク名 移行タスクの名前。DTS はデフォルトの名前を割り当てます。タスクを簡単に識別できるように、わかりやすい名前を使用してください。 データベースタイプ [Oracle] を選択します。 アクセス方法 ソース Oracle データベースへのアクセスに使用される方法。この例では、[パブリック IP アドレス] が選択されています。他のアクセス方法については、まず必要な環境を設定してください。詳細については、「準備の概要」をご参照ください。 インスタンスリージョン ソース Oracle データベースが存在するリージョン。 ホスト名または IP アドレス ソース Oracle データベースの IP アドレス。 ポート番号 ソース Oracle データベースのサービスポート。デフォルト:1521。この例では、ポートがインターネット経由でアクセス可能である必要があります。 Oracle タイプ ソース Oracle データベースのアーキテクチャ。[非 RAC インスタンス] を選択して [SID] パラメーターを設定するか、[RAC または PDB インスタンス] を選択して [サービス名] パラメーターを設定します。この例では、[非 RAC インスタンス] を使用します。 データベースアカウント ソース Oracle データベースのアカウント。必要な権限については、「データベースアカウントの設定」をご参照ください。 データベースパスワード データベースアカウントのパスワード。 送信先データベース
パラメーター 説明 データベースタイプ [PostgreSQL] を選択します。 アクセス方法 [Alibaba Cloud インスタンス] を選択します。 インスタンスリージョン ターゲットの ApsaraDB RDS for PostgreSQL インスタンスが存在するリージョン。 インスタンス ID ターゲットの ApsaraDB RDS for PostgreSQL インスタンスの ID。 データベース名 ターゲットデータベースの名前。 データベースアカウント ターゲットインスタンスのアカウント。必要な権限については、「データベースアカウントの設定」をご参照ください。 データベースパスワード データベースアカウントのパスワード。 ソースデータベースが IP アドレスホワイトリストを使用している場合は、DTS サーバーの CIDR ブロックをホワイトリストに追加します。その後、[接続をテストして次へ] をクリックします。
警告DTS サーバーの CIDR ブロックをデータベースのホワイトリストやセキュリティグループに追加すると、セキュリティリスクが生じる可能性があります。DTS を使用する前に、ユーザー名とパスワードのセキュリティ強化、公開ポートの制限、API 呼び出しの認証、ホワイトリストとセキュリティグループルールの定期的な監査、不正な CIDR ブロックの削除などの予防措置を講じてください。パブリック IP アドレスを使用する代わりに、Express Connect、VPN Gateway、または Smart Access Gateway を介してデータベースを DTS に接続することを検討してください。
移行オブジェクトと設定を構成します。
パラメーター 説明 移行タイプ サービス継続性を確保するために、[スキーマ移行]、[完全なデータ移行]、および [増分データ移行] を選択します。ダウンタイムを伴う 1 回限りの移行の場合は、[スキーマ移行] と [完全なデータ移行] のみを選択します。 説明増分データ移行を行わない場合、移行中はソースデータベースに書き込まないでください。
競合するテーブルの処理モード [事前チェックしてエラーを報告]:開始前にテーブル名の競合をチェックします。競合が存在する場合、タスクは事前チェックに失敗します。オブジェクト名マッピングを使用して、ターゲットテーブルを削除または名前変更せずに競合を解決します。[エラーを無視して続行]:競合チェックをスキップします。 警告このオプションは、データの不整合を引き起こす可能性があります。スキーマが一致する場合、DTS は重複するプライマリキーを持つレコードをスキップします。スキーマが異なる場合、特定の列のみが移行されるか、タスクが失敗します。
ソースオブジェクト [ソースオブジェクト] からオブジェクトを選択し、矢印アイコンをクリックして [選択したオブジェクト] に追加します。 選択したオブジェクト オブジェクトを右クリックして名前を変更するか、WHERE フィルター条件を設定します。[一括編集] をクリックして、複数のオブジェクトの名前を一度に変更します。 説明オブジェクト名マッピング機能でオブジェクトの名前を変更すると、依存オブジェクトの移行が失敗する可能性があります。WHERE 条件については、「フィルター条件の設定」をご参照ください。テーブルごとの増分 SQL 操作の選択については、テーブルを右クリックして含める SQL 操作を選択します。
[次へ: 詳細設定] をクリックし、次のパラメーターを設定します。
パラメーター 説明 タスクのスケジュールに使用する専用クラスターを選択 デフォルトでは、DTS はタスクを共有クラスターにスケジュールします。専用クラスターを使用するには、まず購入する必要があります。詳細については、「DTS 専用クラスターとは 接続失敗時の再試行時間 タスク開始後にソースまたはターゲットデータベースに到達不能になった場合に DTS が再試行する時間。有効な値:10~1,440 分。デフォルト:720 分。これを少なくとも 30 分に設定してください。この期間内に DTS が再接続すると、タスクは自動的に再開されます。 説明複数のタスクがソースまたはターゲットデータベースを共有している場合、最後に指定された再試行時間が適用されます。DTS は再試行期間中もインスタンスに課金します。ビジネス要件に基づいて再試行時間を指定し、ソースデータベースとターゲットインスタンスがリリースされた後、速やかに DTS インスタンスをリリースすることを推奨します。
ソースおよびターゲットデータベースで他の問題が発生した場合の再試行までの待機時間。 タスクの開始後に DDL または DML 操作が失敗した場合に DTS が再試行する時間。 有効な値: 1~1,440 分。 デフォルト: 10 分。 この値は 10 分以上に設定してください。 この値は、[接続失敗の再試行時間] の値より小さくする必要があります。 完全なデータ移行のスロットリングを有効にする 完全なデータ移行中に DTS のリソース使用量を制限して、データベースサーバーへの負荷を軽減します。[ソースデータベースへの 1 秒あたりのクエリ数 (QPS)]、[完全データ移行の RPS]、および[完全移行時のデータ移行速度 (MB/s)] を設定します。完全データ移行が選択されている場合にのみ利用可能です。 増分データ移行のスロットリングを有効にする 増分データ移行中に DTS のリソース使用量を制限します。[増分データ移行の RPS] と [増分移行のデータ移行速度 (MB/s)] を設定します。[増分データ移行] が選択されている場合にのみ使用できます。 環境タグ DTS インスタンスを識別するためのオプションのタグ。 実際の書き込みコード ターゲットデータベースに書き込まれるデータのエンコード形式。 ETL の設定 ETL(抽出・変換・書き出し)機能を有効にするかどうかを指定します。[はい] を選択すると、コードエディタにデータ処理文を入力できます。詳細については、「データ移行またはデータ同期タスクで ETL を設定する」をご参照ください。[いいえ] を選択すると、ETL をスキップします。関連情報:「ETL とは? モニタリングとアラート タスクの失敗または移行遅延がしきい値を超える場合にアラートを設定するかどうか。アラートのしきい値と連絡先を指定するには、[はい] を選択します。詳細については、「新しい DTS タスクのモニタリングとアラートの設定」をご参照ください。 [次へ: タスク設定を保存して事前チェック] をクリックします。この設定の API パラメーターをプレビューするには、[次へ: タスク設定を保存して事前チェック] にカーソルを合わせ、[API 呼び出しのプレビュー] をクリックします。
DTS はタスクを開始する前に事前チェックを実行します。タスクは事前チェックに合格した後にのみ開始できます。- 事前チェックが失敗した場合、各失敗項目の横にある [詳細の表示] をクリックし、問題を修正して、[再度事前チェック] をクリックします。- 事前チェックでアラートが生成された場合、問題を修正して事前チェックを再実行するか、[アラート詳細の確認] > [無視] > [OK] > [再度事前チェック] をクリックして続行します。アラートを無視すると、データの不整合が発生する可能性があります。
成功率が 100% に達するのを待ってから、[次へ: インスタンスの購入] をクリックします。
[インスタンスの購入] ページで、次のパラメーターを設定します。
パラメーター 説明 リソースグループ 移行インスタンスのリソースグループ。デフォルト:デフォルトのリソースグループResource Management とは インスタンスクラス インスタンスクラスは、移行速度を決定します。詳細については、「データ移行インスタンスの仕様」をご参照ください。 [Data Transmission Service (従量課金) サービス利用規約] チェックボックスを読み、選択してください。
[購入して開始] をクリックします。タスク管理ページでタスクの進捗を監視します。