すべてのプロダクト
Search
ドキュメントセンター

Data Transmission Service:自己管理型Oracleデータベースからのデータ変更の追跡

最終更新日:Jan 22, 2025

Data Transmission Service (DTS) を使用すると、データベースからのデータ変更をリアルタイムで追跡できます。 変更追跡機能は、軽量キャッシュ更新、ビジネスのデカップリングと非同期データ処理、抽出、変換、読み込み (ETL) 操作の同期などのシナリオで使用できます。 このトピックでは、自己管理型Oracleデータベースからのデータ変更を追跡する方法について説明します。

前提条件

  • 自己管理型Oracleデータベースのエンジンバージョンは、9i、10g、または11gです。 Real Application Cluster (RAC) インスタンスはサポートされていません。

  • SUPPLEMENTAL_LOG_DATA_PKおよびSUPPLEMENTAL_LOG_DATA_UIを含む補足ログは、自己管理型Oracleデータベースに対して有効になっています。 詳細については、『サプリメンタルロギング』をご参照ください。

  • 自己管理型OracleデータベースはARCHIVELOGモードで実行されています。 アーカイブされたログファイルにアクセスでき、アーカイブされたログファイルに適切な保存期間が設定されます。 詳細については、『 アーカイブ REDO ログファイルの管理』をご参照ください。

注意事項

  • DTSは、gh-ostまたはpt-online-schema-changeを使用して実行されるDDL操作を追跡しません。 したがって、変更追跡クライアントは、スキーマの競合により、消費されたデータを宛先テーブルに書き込むことができない場合があります。

  • ソースデータベースが実行中のデータ移行タスクなどの別のタスクに関与している場合、DTSは他のオブジェクトのデータ変更を追跡できます。 この場合、変更追跡クライアントで追跡されたデータを手動でフィルタリングする必要があります。

準備

ソースOracleデータベースにログインし、データベースアカウントを作成し、データベース管理者 (DBA) 権限をアカウントに付与します。

重要 Oracleデータベースからのデータ変更を追跡する必要があるが、データベース管理者 (DBA) 権限をデータベースアカウントに付与できない場合は、アーカイブロギングと補足ロギングを有効にし、アカウントにきめ細かい権限を付与できます。
  1. アーカイブロギングと補足ロギングを有効にします。
    タイプ手順
    アーカイブロギング次のステートメントを実行して、アーカイブログを有効にします。
    
    起動マウント;
    データベースarchivelogを変更します。データベースを開く。アーカイブログリスト; 
    補足ロギングデータベースまたはテーブルレベルで補足ログを有効にします。
    説明 データベースレベルの補足ログを有効にして、DTSタスクの安定性を確保できます。 テーブルレベルの補足ロギングを有効にして、ソースOracleデータベースのディスク使用量を減らすことができます。
    • データベースレベルの補足ロギングの有効化
      1. 最小限の補足ログを有効にする:
        alter database add supplemental log data;
      2. データベースレベルで主キーと一意キーの補足ログを有効にする:
        alter database add supplemental log data (primary key,unique index) columns;
    • テーブルレベルの補足ロギングの有効化
      1. 最小限の補足ログを有効にする:
        alter database add supplemental log data;
      2. 次のいずれかの方法を使用して、テーブルレベルの補足ログを有効にします。
        • テーブルレベルでプライマリキーの補足ログを有効にする:
          alter table table_name add supplemental log data (primary key) columns;
        • すべての列でテーブルレベルの補足ログを有効にする:
          alter table tb_name add supplemental log data (all) columns ;
  2. Oracleデータベース・アカウントにきめ細かい権限を付与
    への
    # rdsdt_dtsacctなどのデータベースアカウントを作成し、そのアカウントに権限を付与します。
    rdsdt_dtsacctによるIDENTIFIEDユーザーrdsdt_dtsacctを作成します。rdsdt_dtsacctにセッション作成を付与します。rdsdt_dtsacctへの接続を許可します。rdsdt_dtsacctにリソースを付与します。sys.dbms_logmnrでrdsdt_dtsacctに実行を許可します。V_$LOGMNR_LOGSでrdsdt_dtsacctにselectを付与します。all_objectsのselectをrdsdt_dtsacctに付与します。all_tab_colsのselectをrdsdt_dtsacctに付与します。dba_registryのselectをrdsdt_dtsacctに付与します。rdsdt_dtsacctに任意のテーブルを選択します。rdsdt_dtsacctへのトランザクションの選択を許可します。-- v$log特権
    v_$ logのselectをrdsdt_dtsacctに付与します。-- v$logfile特権
    v_$ logfileのselectをrdsdt_dtsacctに付与します。-- v$archived_log特権
    v_$ archived_logでrdsdt_dtsacctにselectを付与します。-- v $パラメータ特権
    v_$ パラメータのselectをrdsdt_dtsacctに付与します。-- v $データベース特権
    v_$ データベースのselectをrdsdt_dtsacctに付与します。-- v$active_instances特権
    v_$ active_instancesのselectをrdsdt_dtsacctに付与します。-- v $インスタンス特権
    v_$ インスタンスのselectをrdsdt_dtsacctに付与します。-- v$logmnr_content権限
    v_$ logmnr_contentsのselectをrdsdt_dtsacctに付与します。-- システムテーブル
    sys.USE R$ の選択をrdsdt_dtsacctに付与します。select on SYS.OBJ $をrdsdt_dtsacctに付与します。select on SYS.COL $をrdsdt_dtsacctに付与します。select on SYS.IND $をrdsdt_dtsacctに付与します。select on SYS.ICOL $をrdsdt_dtsacctに付与します。select on SYS.CDEF $をrdsdt_dtsacctに付与します。select on SYS.CCOL $をrdsdt_dtsacctに付与します。select on SYS.TABPART $をrdsdt_dtsacctに付与します。select on SYS.TABSUBPART $をrdsdt_dtsacctに付与します。select on SYS.TABCOMPART $をrdsdt_dtsacctに付与します。

手順

  1. 変更追跡インスタンスを作成します。 詳細については、「DTSインスタンスの購入」をご参照ください。

    説明

    購入ページで、インスタンスタイプOracleに設定し、インスタンスを作成するリージョンを選択します。

  2. にログインします。 DTSコンソール

  3. 左側のナビゲーションウィンドウで、[追跡の変更] をクリックします。

  4. [変更追跡タスク] ページの上部で、変更追跡インスタンスが存在するリージョンを選択します。

  5. 変更追跡インスタンスを見つけ、[操作] 列の [タスクの設定] をクリックします。

  6. 変更追跡タスクのソースデータベースとネットワークタイプを設定します。

    Configure the source database and network type

    セクション

    パラメーター

    説明

    なし

    タスク名

    DTSが自動的に生成するタスク名。 タスクを簡単に識別できるように、わかりやすい名前を指定することをお勧めします。 一意のタスク名を使用する必要はありません。

    移行元データベース

    インスタンスタイプ

    ソースインスタンスの種類。 この例では、ECSインスタンスのユーザー作成データベースが使用されています。

    説明

    他のインスタンスタイプを選択した場合、自己管理データベースのネットワーク環境をデプロイする必要があります。 詳細については、「準備の概要」をご参照ください。

    データベースエンジン

    このパラメーターの値はOracleに設定されており、変更することはできません。

    インスタンスリージョン

    購入ページで選択したソースリージョン。 このパラメーターの値は変更できません。

    ECS インスタンス ID

    自己管理型OracleデータベースをホストするElastic Compute Service (ECS) インスタンスのID。

    ポート番号

    自己管理型Oracleデータベースのサービス・ポート番号。

    SID

    自己管理型OracleデータベースのシステムID (SID) 。

    データベースアカウント

    自己管理型Oracleデータベースのアカウント。

    説明

    データベースアカウントの作成方法と権限付与方法の詳細については、「準備」をご参照ください。

    データベースパスワード

    データベースアカウントのパスワードを設定します。

    消費者ネットワークタイプ

    なし

    変更追跡インスタンスのネットワークタイプ。

    説明
    • と同じネットワークタイプを選択することを推奨します。 変更追跡クライアントがインストールされているECSインスタンス。 たとえば、ECSインスタンスが仮想プライベートクラウド (VPC) にデプロイされている場合、ネットワークタイプとしてVPCを選択し、VPCおよびvSwitchパラメーターを指定します。

    • 内部ネットワーク上のデータ変更を追跡する場合、ネットワーク遅延は最小限に抑えられます。

    • クラシック

      クラシックを選択した場合、他の設定は必要ありません。 詳細については、次をご参照ください: クラシックネットワーク

    • [VPC]

      VPCを選択した場合、VPCおよびvSwitchパラメーターを指定する必要があります。 詳細については、次をご参照ください: VPCを使用します。

  7. ページの右下隅にある [ホワイトリストと次への設定] をクリックします。

    警告
    • ソースまたはターゲットのデータベースインスタンスが、ApsaraDB RDS for MySQLまたはApsaraDB for MongoDBインスタンスなどのAlibaba Cloudデータベースインスタンス、またはElastic Compute Service (ECS) でホストされている自己管理型データベースの場合、DTSサーバーのCIDRブロックがデータベースインスタンスのホワイトリストまたはECSセキュリティグループルールに自動的に追加されます。 詳細については、「DTSサーバーのCIDRブロックをオンプレミスデータベースのセキュリティ設定に追加する」をご参照ください。 ソースデータベースまたはターゲットデータベースがデータセンター上の自己管理データベースである場合、または他のクラウドサービスプロバイダーからのデータベースである場合、DTSサーバーのCIDRブロックを手動で追加して、DTSがデータベースにアクセスできるようにする必要があります。

    • DTSサーバーのCIDRブロックがデータベースインスタンスまたはECSセキュリティグループルールのホワイトリストに自動的または手動で追加されると、セキュリティリスクが発生する可能性があります。 したがって、DTSを使用してデータを移行する前に、潜在的なリスクを理解して認識し、アカウントとパスワードのセキュリティを強化し、公開されるポートを制限し、API呼び出しを認証し、ホワイトリストまたはECSセキュリティグループルールを定期的に確認してCIDRブロックを禁止するか、Express connectを使用してデータベースをDTSに接続する。VPNゲートウェイ、またはSmart Access Gateway。

    • DTSタスクが完了またはリリースされた後、追加されたCIDRブロックをデータベースインスタンスのホワイトリストまたはECSセキュリティグループルールから手動で検出して削除することを推奨します。

  8. データ変更の種類とオブジェクトを選択します。

    Select the data change types and objects

    パラメーター

    説明

    必要なデータ型

    • データ更新

      DTSは、INSERT、DELETE、およびUPDATE操作を含む、選択したオブジェクトのデータ更新を追跡します。

    • スキーマの更新

      DTSは、ソースインスタンスのすべてのオブジェクトスキーマで実行される作成、削除、および変更操作を追跡します。 変更追跡クライアントを使用して、必要なデータをフィルタリングする必要があります。

    説明
    • オブジェクトとしてデータベースを選択した場合、DTSはデータベース内の新しいオブジェクトを含むすべてのオブジェクトのデータ変更を追跡します。

    • オブジェクトとしてテーブルを選択した場合、DTSはこのテーブルのデータ変更のみを追跡します。 この場合、別のテーブルのデータ変更を追跡する場合は、選択したオブジェクトにテーブルを追加する必要があります。 詳細については、「変更追跡用オブジェクトの変更」をご参照ください。

    必要なオブジェクト

    [必須オブジェクト] セクションから1つ以上のオブジェクトを選択し、Rightwards arrowアイコンをクリックして、オブジェクトを [選択済み] セクションに追加します。

    説明

    変更追跡のオブジェクトとしてテーブルまたはデータベースを選択できます。

  9. ページの右下隅にある [保存して事前チェック] をクリックします。

    説明
    • 変更追跡タスクを開始する前に、DTSは事前チェックを実行します。 タスクが事前チェックに合格した後にのみ、変更追跡タスクを開始できます。

    • タスクが事前チェックに合格しなかった場合は、失敗した各項目の横にあるInfo iconアイコンをクリックして詳細を表示できます。 原因に基づいて問題をトラブルシューティングした後、再度事前チェックを実行できます。

  10. 次のメッセージが表示されたら、[事前チェック] ダイアログボックスを閉じます。[事前チェックの合格]

    変更追跡タスクが設定された後、DTSは初期変更追跡を実行します。 最初の変更の追跡には約1分かかります。 最初の変更の追跡が完了したら、1つ以上のコンシューマグループを作成して、追跡されたデータを使用できます。

次のステップ

  1. コンシューマーグループの作成

  2. Kafkaクライアントを使用した追跡データの消費

  3. SDKデモを使用した追跡データの消費