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