Data Transmission Service (DTS) は、自己管理 Oracle データベースからのデータ変更をリアルタイムで追跡します。この機能は、軽量なキャッシュ更新、ビジネスのデカップリング、非同期データ処理、および抽出・変換・書き出し(ETL)同期に利用できます。
前提条件
開始する前に、以下の点を確認してください。
Oracle データベースのバージョンが 9i、10g、または 11g であることです。Real Application Cluster(RAC)およびプラガブル・データベース(PDB)インスタンスはサポートされていません。
データベースがアーカイブログモードで実行されていることです。確認には、次のコマンドを実行します。
SELECT log_mode FROM v$database;結果が
NOARCHIVELOGの場合、続行する前にアーカイブログモードを有効化してください。補足ログが有効化されており、
SUPPLEMENTAL_LOG_DATA_PKおよびSUPPLEMENTAL_LOG_DATA_UIの値がYesに設定されていることです。確認には、次のコマンドを実行します。SELECT supplemental_log_data_min, supplemental_log_data_pk, supplemental_log_data_ui FROM v$database;supplemental_log_data_minの戻り値がNOの場合、続行する前に補足ログを有効化してください。詳細については、「Oracle データベースアカウントの設定」をご参照ください。アーカイブログファイルが 24 時間を超える保持期間でアクセス可能であること。リドログおよびアーカイブログの保持期間が 24 時間未満の場合、DTS がこれらのログを取得できない可能性があり、タスクの失敗やデータ損失を引き起こすことがあります。この要件を満たすよう保持期間を設定してください。これを満たさない場合、Data Transmission Service(DTS)のサービスレベル合意(SLA)で定められたサービスの信頼性およびパフォーマンスは保証されません。
Oracle データベースを実行しているサーバーに十分な送信帯域幅があることです。帯域幅が不足すると、変更追跡の速度が低下します。
ApsaraDB RDS for MySQL インスタンスがクラシックネットワークタイプの場合、その ApsaraDB RDS for MySQL インスタンスに対して内部エンドポイントが設定されていることです。
制限事項
ソースデータベース
単一の変更追跡タスクでは最大 500 テーブルを追跡できます。500 テーブルを超えて追跡する場合は、複数のタスクをバッチ単位で構成するか、個別のテーブルではなく、データベース全体を追跡対象として選択してください。
ソーステーブルには、すべてのフィールドが一意であるプライマリキーまたは一意制約が必要です。これらの制約がない場合、一部の追跡された変更が重複する可能性があります。
リドログおよびアーカイブログの両方が有効化されている必要があります。
Oracle RAC
Express Connect 経由で接続されるソースが Oracle RAC データベースの場合、タスクの構成時に単一クライアントアクセス名(SCAN)IP アドレスではなく、仮想 IP アドレス(VIP)を指定してください。
ソースが Elastic Compute Service(ECS)上でホストされる Oracle RAC データベース、または Express Connect、VPN Gateway、Smart Access Gateway、Database Gateway、Cloud Enterprise Network(CEN)経由で接続される Oracle RAC データベースの場合、SCAN IP アドレスではなく単一の VIP を使用してください。VIP を指定した後、Oracle RAC データベースのノードフェイルオーバーはサポートされません。
データの型
FLOAT および DOUBLE 列について、DTS は
ROUND(COLUMN, PRECISION)関数を使用して値を取得します。精度が指定されていない場合、DTS は FLOAT に対してデフォルトで 38 桁、DOUBLE に対して 308 桁を設定します。タスクを開始する前に、これらのデフォルト値が要件を満たすことを確認してください。
Oracle データベースアカウントの設定
データベースアカウントを作成し、必要な権限を付与します。以下のいずれかのオプションを選択してください。
オプション 1:DBA 権限の付与
アカウントを作成し、データベース管理者(DBA)権限を付与します。手順については、Oracle ドキュメントの「CREATE USER」および「GRANT」をご参照ください。
オプション 2:詳細な権限の付与
DBA 権限を付与できない場合、以下の手順を実行してログの有効化と特定の権限の付与を行います。
ステップ 1:アーカイブログの有効化
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;
archive log list;ステップ 2:補足ログの有効化
データベースレベルまたはテーブルレベルの補足ログを選択してください。
データベースレベルの補足ログは、DTS タスクの安定性を向上させます。テーブルレベルの補足ログは、ソース Oracle データベースにおけるディスク使用率を削減します。
*データベースレベルの補足ログ*
-- 最小補足ログを有効化
alter database add supplemental log data;
-- プライマリキーおよび一意なインデックスの補足ログを有効化
alter database add supplemental log data (primary key, unique index) columns;*テーブルレベルの補足ログ*
-- 最小補足ログを有効化(以下の両方の方法に必須)
alter database add supplemental log data;
-- 方法 A:特定のテーブルに対してプライマリキーの補足ログを有効化
alter table table_name add supplemental log data (primary key) columns;
-- 方法 B:特定のテーブルのすべての列に対して補足ログを有効化
alter table tb_name add supplemental log data (all) columns;ステップ 3:詳細な権限の付与(Oracle 9i–11g)
-- アカウントの作成(例:アカウント名 rdsdt_dtsacct)
create user rdsdt_dtsacct IDENTIFIED BY rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;
grant connect to rdsdt_dtsacct;
grant resource to rdsdt_dtsacct;
grant execute on sys.dbms_logmnr to rdsdt_dtsacct;
grant select on V_$LOGMNR_LOGS to rdsdt_dtsacct;
grant select on all_objects to rdsdt_dtsacct;
grant select on all_tab_cols to rdsdt_dtsacct;
grant select on dba_registry to rdsdt_dtsacct;
grant select any table to rdsdt_dtsacct;
grant select any transaction to rdsdt_dtsacct;
-- v$log の権限
grant select on v_$log to rdsdt_dtsacct;
-- v$logfile の権限
grant select on v_$logfile to rdsdt_dtsacct;
-- v$archived_log の権限
grant select on v_$archived_log to rdsdt_dtsacct;
-- v$parameter の権限
grant select on v_$parameter to rdsdt_dtsacct;
-- v$database の権限
grant select on v_$database to rdsdt_dtsacct;
-- v$active_instances の権限
grant select on v_$active_instances to rdsdt_dtsacct;
-- v$instance の権限
grant select on v_$instance to rdsdt_dtsacct;
-- v$logmnr_contents の権限
grant select on v_$logmnr_contents to rdsdt_dtsacct;
-- システムテーブル
grant select on sys.USER$ to rdsdt_dtsacct;
grant select on SYS.OBJ$ to rdsdt_dtsacct;
grant select on SYS.COL$ to rdsdt_dtsacct;
grant select on SYS.IND$ to rdsdt_dtsacct;
grant select on SYS.ICOL$ to rdsdt_dtsacct;
grant select on SYS.CDEF$ to rdsdt_dtsacct;
grant select on SYS.CCOL$ to rdsdt_dtsacct;
grant select on SYS.TABPART$ to rdsdt_dtsacct;
grant select on SYS.TABSUBPART$ to rdsdt_dtsacct;
grant select on SYS.TABCOMPART$ to rdsdt_dtsacct;変更追跡タスクの作成
変更追跡タスクページへ移動します。
Data Management(DMS)コンソール にログインします。
上部ナビゲーションバーで、DTS をクリックします。
左側ナビゲーションウィンドウで、DTS(DTS) > 変更追跡 を選択します。
シンプルモードでは、左上隅の
アイコンにポインターを合わせ、すべての機能 > DTS > 変更追跡 を選択します。または、新しい DTS コンソール を直接開きます。変更追跡タスク の右側で、タスクのリージョンを選択します。
新しい DTS コンソールでは、ワークベンチ の右側にあるドロップダウンリストからリージョンを選択します。
タスクの作成 をクリックします。表示されたページで、ソースデータベースおよびコンシューマーのネットワークタイプを構成します。
警告続行する前に、ページ上部に表示される 使用制限 を必ずご確認ください。このステップを省略すると、タスクが失敗したり、追跡されたデータが消費されなかったりする可能性があります。
ソースデータベースの設定
パラメーター 説明 タスク名 タスクを識別するための説明的な名前です。タスク名は一意である必要はありません。 既存のデータベース接続を選択 既存の接続を再利用するかどうかを選択します。選択した場合、DTS は保存済みのパラメータ設定を自動的に適用します。 データベースタイプ Oracle を選択します。 アクセス方法 ソースインスタンスの種類です。本例では ECS 上の自己管理データベース を選択します。その他のアクセス方法については、「Oracle データベースアカウントの設定」をご参照ください。 インスタンスリージョン Oracle データベースが配置されているリージョンです。 ECS インスタンス ID Oracle データベースをホストする ECS インスタンスの ID です。 ポート番号 Oracle データベースのサービスポートです。デフォルト値:1521。 Oracle の種類 Non-RAC Instance:システム ID(SID)を指定します。RAC or PDB Instance:サービス名を指定します。RAC および PDB インスタンスはサポートされていません。本例では Non-RAC Instance を選択します。 データベースアカウント 「Oracle データベースアカウントの設定」で作成したアカウントです。 データベースパスワード データベースアカウントのパスワードです。 消費者ネットワークタイプ
パラメーター 説明 ネットワークタイプ 固定値:VPC。VPC および vSwitchVPC を選択します。変更追跡クライアントが VPC 内にデプロイされている場合、ネットワーク遅延を最小限に抑えるために、同じ VPC および vSwitch を選択してください。これらの設定はタスク構成後に変更できません。詳細については、「」をご参照ください。 接続のテストと続行 をクリックします。DTS は、ソースデータベースのセキュリティ設定に自動的に自社サーバーの CIDR ブロックを追加します。
ECS 上でホストされるデータベース:CIDR ブロックが ECS インスタンスのセキュリティグループルールに追加されます。
Alibaba Cloud のデータベースインスタンス(例:ApsaraDB RDS for MySQL や ApsaraDB for MongoDB):CIDR ブロックがインスタンスのホワイトリストに追加されます。
データセンターまたはサードパーティのクラウド上の自己管理型データベース: データベースのセキュリティ設定に、DTS サーバーの CIDR ブロックを手動で追加します。CIDR ブロックの完全なリストについては、「DTS サーバーの CIDR ブロックを追加する」をご参照ください。
警告DTS サーバーの CIDR ブロックをホワイトリストまたはセキュリティグループに追加すると、潜在的なセキュリティリスクが発生します。続行する前に、強力な認証情報の使用、公開ポートの制限、API 呼び出しの認証、ホワイトリストおよびセキュリティグループルールの定期的なレビュー、不正な CIDR ブロックの削除など、予防措置を講じてください。より安全な接続を実現するには、Express Connect、VPN Gateway、または Smart Access Gateway をご利用ください。
変更追跡の対象オブジェクトおよび高度な設定を構成します。
基本設定
パラメーター 説明 データ変更の種類 データ更新:選択したオブジェクトに対する INSERT、DELETE、UPDATE 操作を追跡します。スキーマ更新:ソースインスタンスのすべてのオブジェクトスキーマに対する作成、削除、変更操作を追跡します。変更追跡クライアントを使用して、消費するデータをフィルター処理します。 ソースオブジェクト 「ソース オブジェクト」セクションからオブジェクトを選択し、
アイコンをクリックして、「選択済みオブジェクト」セクションに移動します。すべてのオブジェクト(新しく追加されたオブジェクトを含む)を追跡するには、データベースを選択します。特定のテーブルのみを追跡するには、それらのテーブルを選択します。後でさらにテーブルを追加する必要がある場合は、「変更追跡の対象オブジェクトを変更する」をご参照ください。高度な設定
パラメーター 説明 監視およびアラート機能 いいえ:アラート機能を無効化します。はい:アラート機能を有効化します。タスクの失敗または遅延がしきい値を超えた際に通知を受け取るためのアラートのしきい値およびアラート連絡先を指定します。 失敗した接続のリトライ時間 DTS が失敗した接続をリトライする時間枠です。有効な値:10~1440 分。デフォルト値:120 分。30 分を超える値を設定してください。DTS がこの時間枠内に再接続した場合、タスクは再開されます。それ以外の場合はタスクが失敗します。複数のタスクで同一のインスタンスが使用されている場合、最も短いリトライ時間枠が優先されます。リトライ中も DTS の課金が発生します。この値はビジネス要件に基づいて設定し、不要になった時点でインスタンスをリリースしてください。 ETL の構成 [はい]: ETL を有効にします。ポリシーをコードエディタに入力してください。[いいえ]: ETL を無効にします。詳細については、「ETL とは何か」をご参照ください。 次へ:タスク設定の保存と事前チェック をクリックします。DTS は、タスクの開始前に自動的に事前チェックを実行します。
チェック項目のいずれかが失敗した場合、項目の横にある 詳細の表示 をクリックし、エラーメッセージに基づいて問題を解決した後、再チェック をクリックします。
無視可能な項目に対してアラートが生成された場合、アラートの詳細の確認 をクリックし、ダイアログボックスで 無視 をクリックします。OK をクリックして確認し、その後 再チェック をクリックします。アラートを無視すると、データの不整合が発生する可能性があります。
この構成の OpenAPI パラメーターをプレビューするには、次へ:タスク設定の保存と事前チェック の上にポインターを合わせ、OpenAPI パラメーターのプレビュー をクリックします。
成功率 が 100 % になるまで待機し、その後 次へ:インスタンスの購入 をクリックします。
購入 ページで、課金方法を選択します。
パラメーター 説明 支払い方法 サブスクリプション:固定期間分の料金を前払いします。長期利用に適しており、契約期間が長いほど単価が低くなります。従量課金:時間単位で課金されます。短期利用に適しています。不要になった場合は、ご利用のインスタンスをリリースすることで課金を停止できます。 リソースグループ設定 インスタンスが所属するリソースグループです。デフォルト値: デフォルトリソースグループResource Management とは。詳細については、「」をご参照ください。 サブスクリプション期間 サブスクリプション の支払い方法を選択した場合のみ利用可能です。選択可能な期間は、1~9 ヶ月、1 年、2 年、3 年、または 5 年です。 「[Data Transmission Service (Pay-as-you-go) Service Terms]」を読み取り、および選択してください。
購入して開始 をクリックします。タスクリストでタスクの進行状況を監視します。
次のステップ
タスクが実行中の場合、追跡されたデータを消費するためのコンシューマーグループを作成します。