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