Data Transmission Service (DTS) は、オンプレミスの自己管理 Oracle データベースから PolarDB-X 2.0 インスタンスへデータをリアルタイムで同期します。スキーマ同期、初期完全同期、および増分同期をサポートし、ソース側の DML 操作および DDL 操作を保持します。
前提条件
開始する前に、以下の点を確認してください。
Oracle データベースのバージョンが、19c、18c、12c、11g、10g、または 9i のいずれかであること
Oracle データベースがアーカイブログモードで実行されており、アーカイブログファイルにアクセス可能で、適切な保持期間が設定されていること — 詳細については、「アーカイブ・リドゥ・ログ・ファイルの管理」をご参照ください。
Oracle データベースで補足ログが有効化されており、
SUPPLEMENTAL_LOG_DATA_PKおよびSUPPLEMENTAL_LOG_DATA_UIがYesに設定されていること — 詳細については、「補足ログ」をご参照ください。PolarDB-X 2.0 インスタンスの利用可能なストレージ容量が、Oracle データベースの合計データサイズより大きいこと
DTS の Oracle 同期に関する機能と制限を確認し、Advanced Database & Application Migration (ADAM) を使用してデータベース評価を実施している必要があります。詳細については、「Oracle データベースを準備する」および「概要」をご参照ください。
課金
| 同期タイプ | 料金 |
|---|---|
| スキーマ同期および初期完全同期 | 無料 |
| 増分同期 | 課金済み — 課金概要 |
サポートされる同期トポロジ
単方向 1 対 1 同期
単方向 1 対多同期
単方向 多対 1 同期
単方向 カスケード同期
詳細については、「同期トポロジ」をご参照ください。
同期可能な SQL 操作
| タイプ | 文 |
|---|---|
| DML | INSERT、UPDATE、DELETE |
| DDL | CREATE TABLE、ALTER TABLE、DROP TABLE、RENAME TABLE、TRUNCATE TABLE;CREATE VIEW、ALTER VIEW、DROP VIEW;CREATE PROCEDURE、ALTER PROCEDURE、DROP PROCEDURE;CREATE FUNCTION、DROP FUNCTION;CREATE TRIGGER、DROP TRIGGER;CREATE INDEX、DROP INDEX |
必要な権限
| データベース | 必要な権限 | 参考情報 |
|---|---|---|
| 自己管理 Oracle データベース | 詳細な権限 | データベースアカウントの準備、CREATE USER、GRANT |
Oracle データベースから増分データを同期するには、まずアーカイブログと補足ログを有効にしてください。詳細については、「Oracle データベースの設定」をご参照ください。
制限事項
DTS はスキーマ同期時に外部キーを同期します。完全同期および増分同期時には、DTS はセッションレベルで外部キーに対する制約チェックおよびカスケード操作を一時的に無効化します。同期タスク実行中にソースデータベースでカスケード更新または削除操作を実行すると、データの不整合が発生する可能性があります。
ソースデータベースの制限事項
| 制限事項 | 影響 | 対応策 |
|---|---|---|
| テーブルには PRIMARY KEY または UNIQUE 制約が必要であり、すべてのフィールドが一意である必要があります | ターゲットデータベースに重複レコードが存在する可能性があります | タスク開始前に制約を追加してください |
| Oracle 12c 以降:テーブル名は 30 バイトを超えてはいけません | テーブルを同期できません | 制限内に収まるようテーブル名を変更してください |
| 送信先オブジェクトの編集(テーブルまたは列の名前変更):1 タスクあたり最大 1,000 テーブル | リクエストエラーが発生します | 複数のタスクを設定してテーブルをバッチ処理で同期するか、データベース全体を同期してください |
| Express Connect 経由で接続された Oracle RAC データベース:データ同期タスクの構成時にデータベースの VIP を指定する必要があります | 同期タスクが失敗したり、予期しない動作をしたりします | タスク構成時に VIP を指定してください |
| Oracle RAC データベース:データ同期タスクの構成時に、Single Client Access Name (SCAN) IP アドレスではなく VIP を使用する必要があります。VIP を指定した後は、Oracle RAC データベースのノードフェイルオーバーはサポートされません | 同期タスクが失敗したり、予期しない動作をしたりします | タスク構成時に VIP を指定してください。また、ノードフェイルオーバーがサポートされないことを前提に運用計画を立ててください |
| リドゥログおよびアーカイブログの保持期間は十分に長くする必要があります:増分同期のみのタスクでは 24 時間以上、完全+増分同期のタスクでは最低 7 日間。完全同期完了後は、保持期間を 24 時間以上に短縮できます | DTS がリドゥログまたはアーカイブログを取得できず、タスク失敗、データの不整合、またはデータ損失を引き起こす可能性があります。保持期間が不十分な場合、DTS のサービスレベル契約 (SLA) は適用されません | タスク開始前に保持期間を設定し、完全同期完了後に再確認してください |
| 同期タスク実行中にプライマリ/セカンダリ スイッチオーバーを実行しないでください | タスクが失敗します | 同期ウィンドウ外でスイッチオーバーを実行してください |
| 同期中に LONGTEXT フィールドの更新を行わないでください | タスクが失敗します | タスク実行中は LONGTEXT フィールドの更新を一時停止してください |
| スキーマ同期または完全同期中に DDL ステートメントを実行しないでください | タスクが失敗します | 同期ウィンドウ外でスキーマ変更を実行してください |
| Oracle VARCHAR2 の空文字列は NULL 値として扱われます。対応する送信先列に NOT NULL 制約がある場合、同期は失敗します | タスクが失敗します | 同期前に送信先列の NOT NULL 制約を解除してください |
その他の制限事項
| 制限事項 | 影響 | 対応策 |
|---|---|---|
| 増分同期実行中に、Oracle Data Pump を使用してソースデータベースにデータを書き込まないでください | データ損失が発生する可能性があります | 増分同期実行中は Data Pump の操作を一時停止してください |
| DTS は初期完全同期時に両方のデータベースの読み取りおよび書き込みリソースを使用するため、サーバー負荷が増加します | ピーク時間帯にデータベースのパフォーマンスが低下します | 非ピーク時間帯に同期タスクを実行してください |
| 初期完全同期中の同時 INSERT 操作により、送信先データベースでテーブルの断片化が発生します | 初期完全同期完了後、送信先の表領域がソースの表領域より大きくなります | 想定される動作です。ストレージが制約されていない限り、特別な対応は不要です |
| 同期中に DTS 以外のツールを使用して送信先データベースに書き込むと、データの不整合が発生するリスクがあります。Data Management (DMS) を使用したオンライン DDL 操作は、データ損失を引き起こす可能性があります | 送信先データベースでデータの不整合またはデータ損失が発生します | 同期中は、送信先データベースへの書き込みに DTS のみを使用してください |
| 同期遅延は、送信先で最新に同期されたデータのタイムスタンプとソースの現在時刻に基づいて算出されます。ソースで DML 活動がない場合、遅延メトリックがドリフトし、実際の遅延を反映しなくなる可能性があります | 遅延の測定値が不正確になります | 遅延を更新するために、ソースで DML 操作を実行してください。同期対象としてデータベース全体を選択した場合は、ハートビートテーブルを作成できます。このテーブルは 1 秒ごとに更新されます |
同期タスクの作成
ステップ 1:データ同期タスクページへ移動
Data Management (DMS) コンソール にログインします。
上部ナビゲーションバーで、[データ + AI] をクリックします。
左側ナビゲーションウィンドウで、[DTS (DTS)] > [データ同期] を選択します。
ナビゲーションは、DMS コンソールモードによって異なる場合があります。「シンプルモード」および「DMS コンソールのレイアウトとスタイルのカスタマイズ」をご参照ください。また、新しい DTS コンソールのデータ同期タスクページに直接アクセスすることもできます。
ステップ 2:リージョンの選択
[データ同期] ページの右側で、データ同期インスタンスが配置されているリージョンを選択します。
新しい DTS コンソールでは、上部ナビゲーションバーでリージョンを選択します。
ステップ 3:ソースおよび送信先データベースの構成
[タスクの作成] をクリックします。[データ同期タスクの作成] ウィザードで、以下のパラメーターを構成します。
タスク設定
| パラメーター | 説明 |
|---|---|
| タスク名 | DTS タスクの名前です。DTS が自動的に名前を生成します。タスクを識別しやすくするために、意味のある名前を指定してください。名前は一意である必要はありません。 |
ソースデータベース
| パラメーター | 説明 |
|---|---|
| DMS データベースインスタンスの選択 | 既存のデータベースインスタンスを選択すると、DTS がパラメーターを自動的に設定します。空白のままにすると、以下のパラメーターを手動で構成できます。 |
| データベースタイプ | [Oracle] を選択します。 |
| アクセス方法 | ソースデータベースへの接続に使用するネットワーク方式を選択します。この例では、[ECS 上の自己管理データベース] を使用します。異なるアクセス方法を使用する場合は、まず対応するネットワーク環境を構築してください — 詳細については、「準備の概要」をご参照ください。 |
| インスタンスリージョン | ソース Oracle データベースが配置されているリージョンです。 |
| [インスタンス ID] | Oracle データベースをホストする Elastic Compute Service (ECS) インスタンスの ID です。 |
| ポート番号 | Oracle データベースのサービスポートです。デフォルト値: 1521。 |
| Oracle タイプ | ソース Oracle データベースのアーキテクチャ。この例では、[RAC または PDB インスタンス] を使用します。[Non-RAC インスタンス] を選択して [SID] を設定するか、[RAC または PDB インスタンス] を選択して [サービス名] を設定します。 |
| データベースアカウント | ソース Oracle データベースのアカウントです。 |
| データベースパスワード | データベースアカウントのパスワードです。 |
宛先データベース
| パラメーター | 説明 |
|---|---|
| [DMS データベースインスタンスの選択] | 既存のデータベースインスタンスを選択すると、DTS がパラメーターを自動的に設定します。空白のままにすると、以下のパラメーターを手動で構成できます。 |
| データベースタイプ | [PolarDB-X 2.0] を選択します。 |
| アクセス方法 | [Alibaba Cloud インスタンス] を選択します。 |
| インスタンスリージョン | 送信先 PolarDB-X 2.0 インスタンスが配置されているリージョンです。 |
| データベースアカウント | PolarDB-X 2.0 インスタンスのデータベースアカウントです。このアカウントには、インスタンスに対する読み取りおよび書き込み権限が必要です。 |
| データベースパスワード | データベースアカウントのパスワードです。 |
ステップ 4:接続性のテスト
[接続性のテストと続行] をクリックします。
DTS は、データベースタイプに応じてネットワークアクセスを自動的に処理します。
Alibaba Cloud データベースインスタンス(例:ApsaraDB RDS for MySQL や ApsaraDB for MongoDB)の場合:DTS が自動的に CIDR ブロックをインスタンスのホワイトリストに追加します。
[ECS 上の自己管理データベース] の場合:DTS が自動的に CIDR ブロックを ECS インスタンスのセキュリティグループルールに追加します。ECS インスタンスからデータベースに到達できることを確認してください。
オンプレミスデータベースまたはサードパーティのクラウドデータベース: DTS の CIDR ブロックをデータベースのホワイトリストに手動で追加します — 詳細については、「DTS サーバーの CIDR ブロックを追加する」をご参照ください。
DTS の CIDR ブロックをホワイトリストまたはセキュリティグループルールに追加すると、ネットワークが公開されます。続行する前に、以下の予防措置を講じてください:データベースの認証情報を強化する、公開ポートを制限する、API 呼び出しを認証する、ホワイトリストおよびセキュリティグループルールを定期的に確認する、不正な CIDR ブロックを削除する。あるいは、Express Connect、VPN Gateway、または Smart Access Gateway を使用して、データベースを DTS に接続することもできます。
ステップ 5:同期対象および設定の構成
以下のパラメーターを構成します。
同期タイプ
| パラメーター | 説明 |
|---|---|
| 同期タイプ | デフォルトでは、増分データ同期 が選択されています。また、スキーマ同期 および 全量データ同期 も選択してください。事前チェックが正常に完了すると、DTS は選択したオブジェクトの既存データを同期し、増分同期のベースラインとして機能します。 |
競合処理
| パラメーター | 説明 |
|---|---|
| 競合テーブルの処理モード | [事前チェックとエラー報告]:送信先内のテーブルにソーステーブルと同じ名前のテーブルがないかチェックします。事前チェックは、同一のテーブル名が存在しない場合にのみ合格します。名前が競合し、送信先テーブルを削除または名前変更できない場合は、オブジェクト名マッピング機能を使用して同期済みテーブルの名前を変更してください。詳細については、「オブジェクト名のマッピング」をご参照ください。[エラーを無視して続行]:同一名チェックをスキップします。全データ同期中、プライマリキーまたは一意キーの値が一致する既存の送信先レコードは保持され (上書きされません)、増分同期中には上書きされます。ソースと送信先のスキーマが異なる場合、同期が失敗するか、一部のカラムのみが同期される可能性があります。慎重に使用してください。 |
オブジェクト選択
| パラメーター | 説明 |
|---|---|
| ソースオブジェクト | ソースオブジェクト セクションからオブジェクトを選択し、右矢印アイコンをクリックして [選択したオブジェクト] セクションに移動します。 カラム、テーブル、またはデータベースを選択できます。 テーブルまたはカラムを選択した場合、DTS はビュー、トリガー、ストアドプロシージャなどの他のオブジェクトタイプを同期しません。 |
| [選択されたオブジェクト] | 送信先で単一オブジェクトの名前を変更するには、[選択されたオブジェクト] セクションでそのオブジェクトを右クリックします — 「オブジェクト名のマッピング」の単一オブジェクトの名前をマップする セクションをご参照ください。複数のオブジェクトを一度に名前を変更するには、[一括編集] をクリックします — 複数のオブジェクト名を一度にマップする をご参照ください。特定のオブジェクトについて同期対象のSQL操作をフィルターするには、そのオブジェクトを右クリックしてSQL操作を選択します。WHERE条件を使用して行をフィルターするには、オブジェクトを右クリックして条件を指定します — フィルター条件を設定する をご参照ください。 |
ステップ 6:高度な設定の構成
[次へ:高度な設定] をクリックし、以下のパラメーターを構成します。
| パラメーター | 説明 |
|---|---|
| タスクスケジューリング用の専用クラスター | デフォルトでは、DTS はタスクを共有クラスターにスケジュールします。安定性を向上させるには、専用クラスターを購入してください。詳細については、「DTS 専用クラスターとは」をご参照ください。 |
| 接続失敗時のリトライ時間 | ソースデータベースまたはターゲットデータベースに到達不能な場合に DTS がリトライする期間です。有効な値:10~1440 分。デフォルト値:720 分。この値は 30 分以上に設定してください。リトライ期間内に DTS が再接続した場合、タスクは再開されます。再接続できなかった場合、タスクは失敗します。複数のタスクが同じソースデータベースまたはターゲットデータベースを共有し、リトライ期間が異なる場合は、最も短い期間が適用されます。リトライ中も DTS インスタンスは課金対象となります。ビジネスニーズに応じてこの値を設定し、不要になったインスタンスはリリースしてください。 |
| その他の問題に対するリトライ時間 | タスク開始後に DDL または DML 操作が失敗した場合に DTS がリトライする期間です。有効な値:1~1440 分。デフォルト値:10 分。この値は 10 分以上に設定してください。この値は、接続失敗時のリトライ時間 よりも短くする必要があります。 |
| 完全データ移行のレート制限を有効化 | 完全データ同期中のデータベースへの負荷を制限します。ソースデータベースへの秒間クエリ数 (QPS)、完全データ移行の RPS、および 完全移行のデータ移行速度 (MB/秒) を設定します。完全データ同期 を選択した場合にのみ表示されます。 |
| 増分データ同期のレート制限を有効化 | 増分データ同期中のデータベースへの負荷を制限します。増分データ同期の RPS と 増分同期のデータ同期速度 (MB/秒) を設定します。 |
| 環境タグ | DTS インスタンスに環境ラベルでタグ付けします。ニーズに応じて選択してください。 |
| 実際の書き込みコード | ターゲットデータベースに書き込まれるデータのエンコード形式です。ニーズに応じて選択してください。 |
| ETL の設定 | 抽出、変換、ロード (ETL) 機能を設定するかどうかを指定します。コードエディタでデータ処理文を入力するには はい を選択します。詳細については、「データ移行またはデータ同期タスクでの ETL の設定」をご参照ください。いいえ を選択するとスキップされます。関連情報:「ETL とは |
| モニタリングとアラート | タスクの失敗や高い同期遅延に対するアラートを設定します。アラートのしきい値と通知連絡先を設定するには はい を選択します。詳細については、「DTS タスク作成時のモニタリングとアラートの設定」をご参照ください。いいえ を選択するとスキップされます。 |
ステップ 7:事前チェックの実行
[次へ:タスク設定の保存と事前チェック] をクリックします。
保存前にこのタスク構成の API パラメーターをプレビューするには、ボタンにカーソルを合わせて [OpenAPI パラメーターのプレビュー] をクリックします。
DTS はタスク開始前に事前チェックを実行します。事前チェックが成功した場合にのみ、タスクを開始できます。
事前チェックが失敗した場合:各失敗項目の横にある [詳細の表示] をクリックし、問題を解決してから [再チェック] をクリックします。
アラートがトリガーされた場合:アラートを無視できる場合は、[アラートの詳細を確認]、次に [無視]、次に [OK]、そして [再チェック] の順にクリックします。アラートを無視すると、データの不整合が発生する可能性があります。
ステップ 8:インスタンスの購入
[成功率] が 100% になるまで待ち、その後 [次へ:インスタンスの購入] をクリックします。
購入ページで、以下のパラメーターを構成します。
| パラメーター | 説明 |
|---|---|
| 支払い方法 | サブスクリプション:固定期間の前払い方式。長期利用に適したコスト効率の高い課金方法です。従量課金:時間単位で課金されます。短期利用に適しています。不要になった場合は、課金を避けるためインスタンスをリリースしてください。 |
| リソースグループ設定項目 | データ同期インスタンスが属するリソースグループです。デフォルト値: デフォルトリソースグループResource Management とは |
| インスタンスクラス | データ同期インスタンスのインスタンスクラスデータ同期インスタンスの同期速度を表します。ご要件となるスループットに応じて選択してください — 詳細については、「」をご参照ください。 |
| サブスクリプション期間 | サブスクリプション支払い方法のみで利用可能です。有効なオプション:1~9か月、または1年、2年、3年、5年です。 |
ステップ 9:タスクの開始
「[Data Transmission Service(従量課金)サービス利用規約]」を読み、選択した後、「[購入して開始]」をクリックします。確認ダイアログで、「[OK]」をクリックします。
タスクはタスクリストに表示されます。そこで進行状況を監視できます。
よくある質問
リドゥログまたはアーカイブログの保持期間が十分でない場合、どうなりますか?
DTS は増分同期に必要なログデータを取得できず、タスクが失敗します。場合によっては、データの不整合やデータ損失を引き起こす可能性があります。回復するには、保持期間を延長してタスクを再開してください。増分同期のみのタスクでは、ログを 24 時間以上保持してください。完全同期を含むタスクでは、少なくとも 7 日間保持してください — 完全同期完了後は、保持期間を 24 時間以上に短縮できます。
タスク実行中にソースデータベースでプライマリ/セカンダリ スイッチオーバーが発生しました。どうすればよいですか?
ソースでプライマリ/セカンダリ スイッチオーバーが発生すると、同期タスクが失敗します。スイッチオーバーが完了し、ソースデータベースが安定した後にタスクを再開してください。
同期遅延が増加しています。どうすれば修正できますか?
ソースで長期間 DML 操作が実行されていない場合、遅延メトリックがドリフトし、実際の遅延を反映しなくなる可能性があります。遅延を更新するために、ソースで DML 操作を実行してください。ソースデータベースが定期的にアイドル状態になる長時間実行タスクでは、ハートビートテーブルを作成できます — データベース全体を同期対象として選択した場合、DTS はハートビートテーブルを 1 秒ごとに更新して、遅延メトリックを正確に保ちます。
増分同期実行中に Oracle Data Pump を使用できますか?
いいえ。増分同期実行中に Oracle Data Pump を使用してソースデータベースにデータを書き込むと、データ損失が発生します。同期タスクが完了または一時停止するまで、Data Pump の操作を一時停止してください。