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