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) 権限をアカウントに付与します。
- アーカイブロギングと補足ロギングを有効にします。
タイプ 手順 アーカイブロギング 次のステートメントを実行して、アーカイブログを有効にします。 起動マウント; データベースarchivelogを変更します。データベースを開く。アーカイブログリスト;
補足ロギング データベースまたはテーブルレベルで補足ログを有効にします。 説明 データベースレベルの補足ログを有効にして、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;
- 次のいずれかの方法を使用して、テーブルレベルの補足ログを有効にします。
- テーブルレベルでプライマリキーの補足ログを有効にする:
alter table table_name add supplemental log data (primary key) columns;
- すべての列でテーブルレベルの補足ログを有効にする:
alter table tb_name add supplemental log data (all) columns ;
- テーブルレベルでプライマリキーの補足ログを有効にする:
- 最小限の補足ログを有効にする:
- データベースレベルの補足ロギングの有効化
- 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に付与します。
手順
変更追跡インスタンスを作成します。 詳細については、「DTSインスタンスの購入」をご参照ください。
説明購入ページで、インスタンスタイプをOracleに設定し、インスタンスを作成するリージョンを選択します。
にログインします。 DTSコンソール。
左側のナビゲーションウィンドウで、[追跡の変更] をクリックします。
[変更追跡タスク] ページの上部で、変更追跡インスタンスが存在するリージョンを選択します。
変更追跡インスタンスを見つけ、[操作] 列の [タスクの設定] をクリックします。
変更追跡タスクのソースデータベースとネットワークタイプを設定します。
セクション
パラメーター
説明
なし
タスク名
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を使用します。
ページの右下隅にある [ホワイトリストと次への設定] をクリックします。
警告ソースまたはターゲットのデータベースインスタンスが、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セキュリティグループルールから手動で検出して削除することを推奨します。
データ変更の種類とオブジェクトを選択します。
パラメーター
説明
必要なデータ型
データ更新
DTSは、INSERT、DELETE、およびUPDATE操作を含む、選択したオブジェクトのデータ更新を追跡します。
スキーマの更新
DTSは、ソースインスタンスのすべてのオブジェクトスキーマで実行される作成、削除、および変更操作を追跡します。 変更追跡クライアントを使用して、必要なデータをフィルタリングする必要があります。
説明オブジェクトとしてデータベースを選択した場合、DTSはデータベース内の新しいオブジェクトを含むすべてのオブジェクトのデータ変更を追跡します。
オブジェクトとしてテーブルを選択した場合、DTSはこのテーブルのデータ変更のみを追跡します。 この場合、別のテーブルのデータ変更を追跡する場合は、選択したオブジェクトにテーブルを追加する必要があります。 詳細については、「変更追跡用オブジェクトの変更」をご参照ください。
必要なオブジェクト
[必須オブジェクト] セクションから1つ以上のオブジェクトを選択し、
アイコンをクリックして、オブジェクトを [選択済み] セクションに追加します。
説明変更追跡のオブジェクトとしてテーブルまたはデータベースを選択できます。
ページの右下隅にある [保存して事前チェック] をクリックします。
説明変更追跡タスクを開始する前に、DTSは事前チェックを実行します。 タスクが事前チェックに合格した後にのみ、変更追跡タスクを開始できます。
タスクが事前チェックに合格しなかった場合は、失敗した各項目の横にある
アイコンをクリックして詳細を表示できます。 原因に基づいて問題をトラブルシューティングした後、再度事前チェックを実行できます。
次のメッセージが表示されたら、[事前チェック] ダイアログボックスを閉じます。[事前チェックの合格]
変更追跡タスクが設定された後、DTSは初期変更追跡を実行します。 最初の変更の追跡には約1分かかります。 最初の変更の追跡が完了したら、1つ以上のコンシューマグループを作成して、追跡されたデータを使用できます。