E Microsoft SQL Serverについてのトランザクション・ログ監査データ収集

この章では、Microsoft SQL Serverデータベース用Oracle GoldenGate (Oracle AVDF 20.9以降)を構成する方法、およびAudit Vault Serverコンソールでトランザクション・ログ監査証跡を作成する方法について説明します。

Microsoft SQL Server 2012はOracle AVDF 20.12で非推奨となり、将来のリリースでサポートが終了します。

E.1 Oracle GoldenGate for Microsoft SQL Serverを使用したトランザクション・ログ監査証跡の概要

Microsoft SQL Serverにおける変更データ・キャプチャ(CDC)では、SQL Serverの表内のデータに関して実行された挿入、更新および削除操作が記録されます。

この機能では、SQL Serverエージェントを使用してデータが取得されます。CDC表の先頭5列にはメタデータが含まれています。これらの列では、取得された変更に関連する追加情報が示されます。その表では、その表に適用された挿入、削除および更新操作ごとに1行が表示されます。挿入操作の結果である行のデータ列には、その挿入の後の列値が含まれています。削除操作の結果である行のデータ列には、その削除の前の列値が含まれています。更新操作では、更新前の列値を特定するために1行のエントリが必要になり、更新後の列値を指定するために2行目のエントリが必要になります。

トランザクション・ログ・コレクタでは、Oracle GoldenGateのExtractプロセス(CDCキャプチャ)を利用してCDC表データがXMLファイルにプルされます。

ノート:

このExtractプロセスでは、構成済オブジェクトに対して実行されたデータ操作言語(DML)操作のみが取得されます。
Oracle AVDFのSQL Server用トランザクション・ログ・コレクタでは、生成されたXMLファイルからトランザクション・ログ・レコードが収集されます。これらのログはAudit Vault Serverに転送され、変更の前と後の値が「データ変更前後の値」レポートに示されます。DMLの変更は、「データ変更前後の値のレポート」で確認できます。

Oracle AVDF 20.10以降、「データ変更前後の値」レポートにはキー列に関する追加情報が含まれています。デフォルトでは、GoldenGateは表の主キー列をキー列として使用します。表に主キーが定義されていない場合や、別の列をキー列として使用する場合は、GoldenGateのパラメータ・ファイルでキー列を指定するオプションを使用できます。

図E-1 トランザクション・ログの収集プロセス

図E-1の説明が続きます
「図E-1 トランザクション・ログの収集プロセス」の説明

ノート:

Oracle GoldenGate for Microsoft SQL Serverでは、プログラム名、データベース・ユーザー名、OSユーザー名、OS端末、クライアント・ホスト名、クライアントID、プロセスID、データベース内でコミットされたトランザクションのプロキシ・セッションIDなど、特定の詳細は取得されません。その結果、この制限により、Oracle AVDFの「データ変更前後の値」レポートにこれらのフィールドの空の値が表示されます。

E.2 サイズ設定のガイドライン

Oracle GoldenGate for Microsoft SQL Serverを構成するには、次のサイズ設定ガイドラインに従います。

前提条件

Oracle GoldenGateドキュメント内の必要事項にある、システムおよびサイズ設定の要件に従います。

一般的なサイズ設定のガイドライン

  • メモリーおよびCPUについては、Extractごとに32 GBのメモリーおよび2つのCPUから始めます。これは、それがマルチスレッド・プロセスであり、大規模なトランザクションを処理するときに大量のメモリーを使用するためです。トランザクションの量およびパターンに応じて、Oracle GoldenGateドキュメント内のガイドラインに従って適切にリソースをスケール・アップします。
  • ディスク領域については、2 TBから始め、Extractでソース・データベースから取得されるデータの量に基づいて、それを変更します。Extractでは、処理するためにバッファに格納するトランザクションが大きい場合は、証跡ファイル用にストレージが、キャッシュ・ファイル用に一時ディスク領域が使用されます。

大規模なトランザクションに起因する一時ディスク領域の要求でキャッシュがいっぱいになり、それが、トランザクションでキャッシュされたデータまたは一時ファイルに波及する場合があります。適宜リサイクルできるように、アーカイブ・ポリシーを構成しファイルの保存期間を定義します。

大規模トランザクションを処理するために十分な物理メモリーを維持します。ガイドラインに従って、Extractで使用できるメモリーを32 GB以上にします。より正確な見積りを行うには、データベース・サーバーの実行履歴から統計を収集し、最大のトランザクションのサイズを確認します。Oracle GoldenGateでは、トランザクションの統計を表示するsend <extract> cachemgr, cachestatsコマンドが用意されています。これは、見積りのベースラインを特定するのに役立ちます。

通常は、Oracle GoldenGate Extractプロセスのためのサイズ設定、ストレージおよびメモリーは、主にトランザクション量とトランザクション・パターンによって決まります。標準値がないため、すべての単一データベース・サーバーからこれらの統計を収集して見積ります。単一のGoldenGateインスタンスまたはExtractプロセスでサポートできるデータベースの数は、システム・リソース(複数のExtractをサポートしている)に応じて異なります。データベースごとに1つのExtractを構成します。

E.3 Oracle GoldenGateの制限付き使用ライセンス

Oracle GoldenGateの制限付きライセンスは、Oracle AVDFリリース20に付属しています。

このライセンスでは、Oracle GoldenGateをインストールしExtractプロセスを使用して、Oracle AVDFによって監視されるデータベース・システムでのトランザクションの変更点を取得できます。Oracle GoldenGateから抽出されたデータはOracle AVDFによってのみ消費されます。Oracle GoldenGate Classic ArchitectureまたはMicroservices Architectureは、Oracle AVDFアプライアンスがデプロイされているサーバー以外の別個のサーバーにデプロイします。次に、Oracle GoldenGate Extract機能を構成します。Oracle AVDF 20.9は、Microsoft SQL Serverバージョン2012、2014、2016、2017および2019に対応するOracle GoldenGate Classic Architecture 19.1.0.0.200414と、Oracle AVDF 20.10のMicrosoft SQL Serverバージョン2017および2019に対応するMicroservices Architectureバージョン21.4.0.0.0をサポートしています。

E.4 Microsoft SQL Serverデータベース用のOracle GoldenGateのインストール

次の手順を実行して、Oracle GoldenGate for Microsoft SQL Serverをインストールします。

Oracle GoldenGateは、Oracle AVDFアプライアンスがデプロイされているサーバー以外の別個のサーバーにデプロイします。その後で、Oracle GoldenGate統合Extract機能を構成します。

Oracle AVDF 20.9以前

Oracle Software Delivery Cloudから、Oracle GoldenGate 19.1.0.0.0 Classic Architectureをインストールします。

Oracle GoldenGate 19cドキュメントに記載された、「異種データベース用のGoldenGateのインストール」の手順を実行します。Oracle GoldenGate Classic Architectureのインストール後に、My Oracle Supportからパッチ31050939を適用します。

Oracle AVDF 20.10以降

Oracle GoldenGateのダウンロード」からOracle GoldenGate 21.4.0.0.0 Microservices Architectureをインストールします。

Oracle GoldenGate 21cのOracle GoldenGate Microservicesドキュメントに記載された、「Oracle GoldenGateのインストール」の手順を実行します。

E.5 Microsoft SQL Server 2012からのトランザクション・ログ・データの取得(バージョン2019を使用)

Oracle GoldenGateのチェンジ・データ・キャプチャ(CDC)のキャプチャ(Extract)プロセスを使用することで、Microsoft SQL Serverからトランザクション・ログ・データを取得します。

E.5.1 Microsoft SQL Serverからのトランザクション・ログ・データの取得(Classic Architecture)

このプロセスを使用して、Microsoft SQL ServerとOracle GoldenGate Classic ArchitectureのCDC Extractプロセスを構成します。

  1. ユーザーおよび権限の作成
  2. Managerプロセスの作成
  3. Oracle GoldenGateシステムの準備
  4. CDCキャプチャのためのシステムの準備
  5. GoldenGate CDC Extractの作成

バージョン19.1.0.0.200414以上でのOracle GoldenGate CDC Extractプロセスでは、Microsoft SQL Serverバージョン2012から2019までのトランザクション・ログ・データの取得がサポートされています。SQL Server 2014、2016および2017については、Microsoft社によって、SQL ServerのCDC機能に直接影響する複数の重要な問題が特定され修正されています。このことは、Oracle GoldenGateで正しくデータを取得できるかどうかに影響します。Microsoftパッチを必要とする現在の既知の問題には、KB3030352、KB3166120およびKB4073684が含まれています。ソース・データベースとしてSQL Server 2014、2016または2017を使用している場合は、ご使用のバージョンのSQL Serverに、最新のサービス・パックまたは累積更新プログラムを適用することをお薦めします。詳細は、Oracle GoldenGateドキュメント内のSQL Serverのサポート対象バージョンを参照してください。

E.5.1.1 ユーザーおよび権限の作成

Oracle GoldenGate Extractプロセス用に使用するユーザーと、サプリメンタル・ロギングの有効化に使用するユーザーには、別々の権限セットが必要です。

手順については、Oracle GoldenGateドキュメント内の次のトピックを参照してください:

E.5.1.2 Managerプロセスの作成

Managerプロセスは、Microsoft Windowsサービスとして実行することも、現行ユーザーとして対話形式で実行することもできます。

Managerプロセスには次のものが必要です:

  • Oracle GoldenGateディレクトリ内のファイルおよびフォルダに対する完全な管理権限。
  • 証跡ファイルがOracle GoldenGateディレクトリ以外の場所に保存されている場合は、証跡ファイルに対するすべての制御権限。
  • サーバーのローカル管理者グループ内のメンバーシップ(クラスタ内のすべてのノード上)。
  • Windows認証を使用してリモート・データベースに接続されているExtractでWindowsサービスとしてManagerプロセスを実行している場合、そのプロセスは、Managerプロセスを実行しているアカウントでそのデータベースにログインしようとします。Managerのサービス・アカウントにリモートSQL Serverインスタンスへの正しいアクセス権があることを確認します。

Extractのデータを取得するプログラムは、Managerアカウントで動作し、Managerのオペレーティング・システム権限を継承します。

Oracle GoldenGateのルート・フォルダにGLOBALS.txtという名前のファイルを作成します。

データベースに作成される可能性があるOracle GoldenGateオブジェクトによって使用される新しいスキーマをデータベースに追加します。そのGLOBALS.txtファイルを開き、GGSCHEMA <schema_name>と書き込みます。このGGSCHEMAパラメータを使用して、Oracle GoldenGateで所有されているデータベース・オブジェクトを含むスキーマの名前を指定します(トリガーベース・レプリケーション用のデータ定義言語(DDL)レプリケーションをサポートしているデータベース・オブジェクト、ハートビート表の実装に含まれているデータベース・オブジェクト、およびSQL ServerのCDCキャプチャとクリーンアップの実装に含まれているデータベース・オブジェクトなど)。GLOBALSファイルを作成した後に、.txt拡張子を削除します。GGSCHEMAで示されているスキーマ名はシステム・オブジェクトとして扱われます。また、GGSCHEMAの下の、ワイルドカードが使用されている表名は、Extractから除外されます。GGSCHEMAで取得する必要がある場合は、ワイルドカードを使用せずに、必ずそれぞれの表名を明示的にマップしてください。

GoldenGateフォルダの場所でコマンド・プロンプトを開いてそこでggsci.exeを実行するか、これを管理者として直接実行します。

ggsci.exeを実行すると、GoldenGateコマンド・プロンプトが表示されます。

GGSCIコマンド・プロンプトで次のコマンドを実行します:

create subdirs

Managerプロセスを作成するには、次の手順を実行します:

  1. GGSCIで次のコマンドを入力します:

    edit params mgr

    メモ帳または類似エディタで、パラメータ・ファイルが開かれます。

  2. パラメータ・ファイルに、Managerプロセスのポート番号を入力します。既知のポート番号以外の、任意のポート番号を使用できます。次の形式を使用します: port <port_number>

    例: port 3456

  3. 次のコマンドを入力します。

    start mgr

    これにより、Managerプロセスが起動され、ManagerプロセスとローカルOracle GoldenGateインスタンスの間の通信のみが有効になります。パラメータの詳細と、Managerについて他のタイプのネットワーク通信を構成する方法の詳細は、Oracle GoldenGateドキュメント内のManagerおよびネットワーク通信の構成を参照してください。

Managerプロセスが実行中かどうかを確認するには、次のコマンドを入力します:

info all

(オプション) ManagerプロセスをWindowsサービスとして追加するには、次のコマンドを実行します。ManagerプロセスがすでにWindowsサービスとして実行されている場合は、警告またはエラー・メッセージが表示されます。その場合には、ManagerプロセスをWindowsサービスとして追加する必要はありません。

stop mgr
shell install addservice
start mgr
E.5.1.3 Oracle GoldenGateのためのシステムの準備

Extractでは、Open Database Connectivity (ODBC)接続によってソースSQL Serverデータベースに接続します。

この接続を確立するには、「データ ソース (ODBC)」コントロール パネルからデータ・ソース名(DSN)を設定します。手順は、Oracle GoldenGateドキュメント内のExtractデータベース接続の構成を参照してください。

E.5.1.4 CDCキャプチャのためのシステムの準備

CDCキャプチャ・プロセスを作成するには、サプリメンタル・ロギングを有効にし、Oracle GoldenGate CDCクリーンアップ・ジョブを作成します。

次の手順を参照してください:

E.5.1.5 GoldenGate CDC Extractの作成

この項では、CDC Extractプロセスを開始する手順を説明します。

CDC Extractのパラメータ・ファイルを作成する前に、GGSCIを介してデータベースにすでにログインしていること、サプリメンタル・ロギングおよびOracle GoldenGateのCDCクリーンアップ・ジョブが有効になっていること、およびManagerプロセスが実行されていることを確認してください。次のファイルは、CDC Extractプロセスのパラメータ・ファイルのサンプルです。パラメータ・ファイル内のフィールドの詳細は、Oracle GoldenGateドキュメント内のCDCキャプチャ用の有効なパラメータと無効なパラメータを参照してください。

新しいExtractパラメータ・ファイルを作成して保存するには、GGSCIで次のコマンドを入力します:

edit params <extract_name>

たとえば:

edit params exta

必要なパラメータを追加できるように、メモ帳または類似エディタが開かれます。次のパラメータ・ファイルの例には、必要最小限のパラメータが含まれています:


EXTRACT <extract_name>
SOURCEDB <dsn> USERID <username> PASSWORD <password>
OUTPUTFORMAT XML _AUDIT_VAULT
EXTTRAIL .\dirdat\{Any combination of two alphabets indicating prefix of trail file e.g. ab, bc, ea, sn.....etc}
TABLE owner.table_name;

ノート:

OUTPUTFORMATは、EXTTRAILの前に指定する必要があります。

次のパラメータ・ファイルの例は、1つの表に関する内容になっています。ここでのdirdatフォルダには、Oracle GoldenGateで生成された証跡ファイルが含まれます。

EXTRACT exta
SOURCEDB GGDB USERID sa PASSWORD passwd
OUTPUTFORMAT XML _AUDIT_VAULT
EXTTRAIL .\dirdat\ea
TABLE dbo.employee;

ノート:

次の例およびコマンドでは、引き続きExtract名としてextaが使用されています。

Extractプロセスを追加するには、GGSCIで次のコマンドを実行します:

add extract exta, tranlog, begin now
add exttrail .\dirdat\ea, extract exta

Managerプロセスがすでに実行されていることを確認してから、GGSCIで次のコマンドを指定してExtractを起動します:

start extract exta
info all

これにより、Extractプロセスが起動されます。この時点以降は、Extractによって監視されている表に対するすべてのDML操作が、取得されて、dirdatフォルダ内の証跡ファイルに入力されます。Extractプロセス、ネーミング規則、証跡の作成などの詳細は、オンライン変更同期の構成を参照してください。

Extractプロセスを停止するには、次のコマンドを入力します:

stop exta

E.5.2 Microsoft SQL Serverからのトランザクション・ログ・データの取得(Microservices Architecture)

このプロセスを使用して、Microsoft SQL ServerとOracle GoldenGate Microservices ArchitectureのCDC Extractプロセスを構成します。

  1. ユーザーおよび権限の作成
  2. Oracle GoldenGateシステムの準備
  3. Oracle GoldenGateのためのデータベースの構成
  4. CDCキャプチャのためのシステムの準備
  5. GoldenGate CDC Extractの作成
E.5.2.1 ユーザーおよび権限の作成

Oracle GoldenGate Extractプロセス用に使用するユーザーと、サプリメンタル・ロギングの有効化に使用するユーザーには、別々の権限セットが必要です。

手順については、Oracle GoldenGateドキュメント内の次のトピックを参照してください:

E.5.2.2 Oracle GoldenGateのためのシステムの準備

Extractでは、Open Database Connectivity (ODBC)接続によってソースSQL Serverデータベースに接続します。

この接続を確立するには、「データ ソース (ODBC)」コントロール パネルからデータ・ソース名(DSN)を設定します。手順は、Oracle GoldenGateドキュメント内のExtractデータベース接続の構成を参照してください。

E.5.2.3 Oracle GoldenGateのためのデータベースの構成

Oracle GoldenGateのためのデータベース資格証明とTRANDATA情報を構成します。

  1. Oracle GoldenGateサービス・マネージャのコンソールで「管理サービス」ページを開きます。
  2. 「管理サービス」のナビゲーション・メニューで、「構成」をクリックします。
  3. 「データベース」タブを選択します。
  4. 「資格証明」の横にあるプラス・ボタンをクリックして、データベース資格証明を追加します。
  5. 「資格証明ドメイン」フィールドに、ドメイン名を入力します。
  6. 「資格証明別名」フィールドに別名を入力します。
  7. 「DSN」フィールドに、データ・ソース名(DSN)を入力します(「Oracle GoldenGateのためのシステムの準備」で作成したもの)。
  8. ユーザーIDおよびパスワードを入力します。
  9. 「発行」をクリックします。
  10. 新しい資格証明の「データベースに接続」アイコンをクリックして、新しく作成した資格証明でターゲット・データベースに接続できることを確認します。

    データベース接続のテスト後に、資格証明の表の下に「TRANDATA情報」セクションが表示されます。

  11. 「TRANDATA情報」の横にあるプラス・ボタンをクリックします。
  12. 「表」を選択して、「表名」フィールドに表名を追加します。
  13. 列を必要に応じて編集します。
  14. 「CSNモードの準備」ドロップダウン・リストで、「nowait」を選択します。
  15. 「発行」をクリックします。
E.5.2.4 CDCキャプチャのためのシステムの準備

CDCキャプチャ・プロセスを作成するには、サプリメンタル・ロギングを有効にし、Oracle GoldenGate CDCクリーンアップ・ジョブを作成します。

次の手順を参照してください:

E.5.2.5 GoldenGate CDC Extractの作成

次のステップを使用して、Microsoft SQL ServerのCDC取得を作成して実行します。

  1. Oracle GoldenGateサービス・マネージャのコンソールで「管理サービス」ページを開きます。
  2. 「Extract」の横にあるプラス・ボタンをクリックします。
  3. 抽出タイプに「データ・キャプチャExtractの変更」を選択して、「次」をクリックします。
  4. 「プロセス名」フィールドにプロセス名を入力します。
  5. 「目的」フィールドで、「一方向」を選択します。
  6. 「資格証明別名」ドロップダウン・リストで、「Oracle GoldenGateのためのデータベースの構成」で作成した資格証明別名を選択します。
  7. 「開始」ドロップダウンリストで、「今すぐ」を選択します。
  8. 2文字の「トレイル名」を入力します。
  9. 証跡サブディレクトリのカスタマイズが必要な場合は、そのディレクトリのフルパスを「トレイルのサブディレクトリ」フィールドに入力します。

    このディレクトリは任意に指定できますが、ファイル・システムに存在している必要があります。

  10. 「トレイル・サイズ」フィールドに、証跡のサイズをMB単位で入力します。

    GoldenGateのレコード生成率が低い(1秒当たり50レコード未満)場合は、証跡サイズを100MBなどの小さい値に設定することをお薦めします。

    ノート:

    その他のフィールドはすべてオプションのため、未変更のままでもかまいません。
  11. 「次」をクリックします。
  12. 「パラメータ・ファイル」セクションで、次のパラメータを入力します:

    EXTRACT <extract_name>
    SOURCEDB <DSN_name> USERIDALIAS <user_alias>, DOMAIN <domain_name>
    OUTPUTFORMAT XML _AUDIT_VAULT
    EXTTRAIL <subdirectory>/<trail_name>
    TABLE <schema>.<trail_name>;

    たとえば:

    EXTRACT exta
    SOURCEDB odbc1 USERIDALIAS sql, DOMAIN OracleGoldenGate
    OUTPUTFORMAT XML _AUDIT_VAULT
    EXTTRAIL dirdat/ea
    TABLE dbo.employee;

    パラメータのガイドラインは次のとおりです:

    • OUTPUTFORMATパラメータのXML_AUDIT_VAULTの間には空白を入れます。
    • パラメータ・ファイルでは、EXTTRAILパラメータの前にOUTPUTFORMATパラメータを含めます。それ以外の場合は、XMLファイルが生成されなくなります。
    • TABLEコマンドは必ずセミコロン(;)で終わるようにします。
    • すべてのパラメータの順序が前述の例とまったく同じ順序であることを確認します。

    • TABLEコマンドには、DMLの変更の取得対象にする表を指定します。
    • Oracle GoldenGateのパラメータの詳細は、「Oracle GoldenGateのパラメータ」を参照してください。
  13. 「作成および実行」をクリックしてCDC Extractプロセスを開始します。

    新しく作成したCDC Extractが、「管理サービス」ページの「Extract」セクションに表示されます。

  14. CDC Extractのステータスを表示するには:

    1. 抽出の「アクション」ボタンをクリックします。
    2. 「詳細」を選択します。
    3. 「レポート」タブをクリックして、診断メッセージを表示します。

      抽出プロセスが失敗した場合、このレポートに関連するエラーが表示されます。

E.5.2.6 サンプルのOracle GoldenGate CDC Extractパラメータ・ファイル

これらのOracle GoldenGate CDC Extractパラメータ・ファイルをサンプルとして使用します。

表のDMLを監査して、キー列として使用する列を設定します

次のパラメータ・ファイルは、CDC Extractが次の操作を実行するように構成します:

  • dboスキーマ内のemp表に対するDML操作の取得
  • empnoenameのキー列としての設定
EXTRACT <extract name>
SOURCEDB <Database Name@Database Server:port> USERIDALIAS <useralias>, DOMAIN <Domain name>
OUTFORMAT XML _AUDIT_VAULT
EXTTRAIL <subdirectory>/<trail name>
TABLE dbo.emp, KEYCOLS (empno, ename);

表内のDMLの監査

次のパラメータ・ファイルは、必要な表に対するDML操作を監査します:
  • 示されているパラメータ・ファイルは、1つの表に関する内容になっています。
  • 追加の表名は、ユーザーが追加できます。
EXTRACT <extract_name> 
SOURCEDB <Database Name@Database Server:port> USERIDALIAS <useralias>, DOMAIN <Domain name> 
OUTPUTFORMAT XML _AUDIT_VAULT 
EXTTRAIL <subdirectory> {Any combination of two alphabets indicating prefix of trail file e.g. ab, bc, ea, sn.....etc} 
TABLE owner.table_name;
例: 次のパラメータ・ファイルは、dbo.employee表に対するDML操作を監査します。監査データは、\dirdat\eaの場所に格納されます:
EXTRACT exta 
SOURCEDB HR@10.245.102.35:3306 USERIDALIAS mysql, DOMAIN OracleGoldenGate 
OUTPUTFORMAT XML _AUDIT_VAULT 
EXTTRAIL \dirdat\ea 
TABLE dbo.employee;
  • extaは、CDC Extractの名前です。
  • HRは、データベースの名前です。
  • 10.245.102.35は、データベースがインストールされているホストのIPです。
  • 3306は、MySQLデータベースのポート番号です。
  • mysqlは、USERIDALIASです。
  • OracleGoldenGateは、DOMAINです。
  • dbo.employeedboは、employee表を所有するスキーマ名です。

GETBEFORECOLSオプションを使用したDMLの監査

次のパラメータ・ファイルでは、GETBEFORECOLSオプションを有効にして、特定の表に対するDML操作を取得するようにExtractプロセスを構成します。このオプションにより、Oracle GoldenGateによって生成された監査ファイルのビフォア・イメージにキー列が表示されるようになります。これは、更新および削除操作のレポートにキー列を表示するために不可欠です。

EXTRACT exta 
SOURCEDB HR@10.245.102.35:3306 USERIDALIAS mysql, DOMAIN OracleGoldenGate
OUTPUTFORMAT XML _AUDIT_VAULT
EXTTRAIL ea 
TABLE dbo.employee, GETBEFORECOLS(ON UPDATE ALL, ON DELETE ALL);

GETBEFORECOLSを使用して、取得して証跡のビフォア・イメージに書き込む列を指定します。前述の例では、ALLキーワードは、更新および削除操作のビフォア・イメージにすべての列を含める必要があることを示しています。

KEYCOLSオプションを使用したDMLの監査

次のパラメータ・ファイルでは、KEYCOLSオプションを使用して、特定の表に対するDML操作を取得するようにExtractプロセスを構成します。このオプションは、表で主キーまたは適切な一意の索引が使用できないときに、代替主キーを定義するために使用します。

EXTRACT exta 
SOURCEDB HR@10.245.102.35:3306 USERIDALIAS mysql, DOMAIN OracleGoldenGate 
OUTPUTFORMAT XML _AUDIT_VAULT
EXTTRAIL ea 
TABLE dbo.emp3, KEYCOLS(id,name), GETBEFORECOLS(ON DELETE ALL);

前述のパラメータ・ファイルは、dbo.emp3表に対するDML操作を監査します。KEYCOLSオプションは、id列とname列をまとめて一意の主キーまたは代替索引(KEYCOLS(id, name))として扱う場合に使用します。監査データは、ea証跡に格納されます。KEYCOLSの形式は、KEYCOLs(column1, column1, ...)です。

E.6 Audit Vaultコンソールでの監査証跡の作成

Audit VaultコンソールでMicrosoft SQL Serverデータベース・ターゲットについてのトランザクション・ログ監査証跡を作成するには、次のガイドラインに従います。

ノート:

監査証跡を作成する前に、Audit Vault ServerコンソールでMicrosoft SQL Serverデータベース・ターゲットについてAV.COLLECTOR.TIMEZONEOFFSET属性を設定することをお薦めします。これは、トランザクション・ログ監査証跡でそのターゲットから監査レコードのタイムゾーンが取得されるためです。

AV.COLLECTOR.TIMEZONEOFFSETをMicrosoft SQL Serverデータベースのタイムゾーン・オフセットに設定します。たとえば、正のオフセットが+03:00、負のオフセットが-03:00です。

すべての手順を確認するには、「ターゲットの登録」を参照してください。

「エージェントベース収集を使用する監査証跡の追加」で示した手順で監査証跡を作成する場合は、次のガイドラインに従ってください:

「証跡のタイプ」で、「TRANSACTION LOG」を選択します。

「証跡の場所」で、CDC Extract XMLファイルを含むディレクトリのフルパスを入力します。

•証跡の場所にアクセスできるホスト・マシンでAudit Vault Agentが実行されていることを確認します。

• Audit Vault Agentユーザーに証跡の場所に対する読取り権限があることを確認します。

E.7 監査証跡のクリーン・アップ

監査証跡のクリーンアップでは、Audit Vault Agentによる読取リ対象のファイルが削除されます。

「Oracle GoldenGate Extractのクリーン・アップ」を参照してください。

E.8 SQL Serverトランザクションのセッション情報の管理

SQL Serverトランザクションのセッション情報取得を管理する方法を学習します。

ヒント:

パフォーマンスの問題を防ぐには、セッション情報を取得する表の数を制限します。

E.8.1 SQL Serverトランザクションのセッション情報の取得

Oracle AVDF 20.14以降では、トリガー・ベースのアプローチを使用して、SQL Serverトランザクションのセッション情報を取得できます。

  1. GolenGateチェンジ・データ・キャプチャのExtractを構成します:
  2. Extractを停止します。
  3. 既存のXMLファイルをすべて別の場所に移動します。
  4. 次のパッチ・ファイルを<AGENT_HOME>/av/plugins/com.oracle.av.plugin.mssql/config/から、SQL Serverインスタンスにアクセスできるマシンにコピーします:
    • create_session_info_metadata.sql
    • delete_session_info_metadata.sql
    • enable_session_info.sql
    • disable_session_info.sql
    • grant_privileges_session_info.sql
    • revoke_privileges_session_info.sql
  5. target_file.txtファイルを作成し、GoldenGate CDC Extractがトランザクション・ログ・データを収集する各表について、このファイルに表名(1行に1つの表名)を追加します。
    たとえば、GoldenGate CDC Extractパラメータ・ファイルにdbo.salaryおよびdbo.employeeが記載されている場合、target_file.txtは次のようになります:
    dbo.salary
    dbo.eomployee
  6. SQL Server (MSSQLServer)サービスを実行するユーザーに、target_file.txtに対する読取り権限があることを確認します。

    通常、このユーザーはNT Service\MSSQLSERVERです。

  7. create_session_info_metadata.sqlスクリプトを実行して、セッション情報メタデータ表を作成します。
    SQLCMD -S <server_name> -d <database_name> -U <super_admin_user> -i"<full path of create_session_info_metadata.sql>"
    たとえば:
    SQLCMD -S PHOENIX86253 -d somedb -U sa  -i"C:\foo\bar\create_session_info_metadata.sql"
  8. enable_session_info.sqlスクリプトを実行して、target_file.txtで指定された各表のセッション情報を収集するためのトリガーを作成します。
    SQLCMD -S <server_name> -d <database_name> -U <super_admin_user> -v target_file="'<full path of target_file.txt>'" dml_operation="'insert,update,delete'" -i"<full path of enable_session_info.sql>"
    dml_operationパラメータはカンマ区切りのリストで、insert、updateまたはdeleteを含めることができます。
    • 更新および削除のみのためにセッション情報を収集する必要がある場合は、dml_operation="'update,delete'"を設定します
    • 挿入および削除のみのためにセッション情報を収集する必要がある場合は、dml_operation="'insert,delete'"を設定します
    • 削除のみのためにセッション情報を収集する必要がある場合は、dml_operation="'delete'"を設定します
    たとえば:
    SQLCMD -S PHOENIX86253 -d somedb -U sa -v target_file="'C:\foo\bar\target_file.txt'" dml_operation="'update, delete'" -i"C:\foo\bar\enable_session_info.sql"
  9. target_file.txtで指定された表に対してDML操作を実行し、対応するレコードがAVDFメタデータ表dbo.avdf_dml_session_dataおよびdbo.avdf_lsn_time_mappingに存在することを確認します。
  10. grant_privileges_session_info.sqlスクリプトを実行して、AVDFで使用されるMicrosoft SQL Serverターゲット・ユーザーに権限を付与します:
    SQLCMD -S <server_name> -d <database_name> -U <super_admin_user> -i"<full path of grant_privileges_session_info.sql>" -v username="[<user_name>]"
    たとえば:
    SQLCMD -S PHOENIX86253 -d somedb -U sa -i"C:\foo\bar\grant_privileges_session_info.sql" -v username="[targetuser]"
    Windowsユーザーの場合は、ドメインとユーザーの両方を指定します
    SQLCMD -S PHOENIX86253 -d somedb -U sa -i"C:\foo\bar\grant_privileges_session_info.sql" -v username="[domain\user]"
  11. GoldenGate管理コンソールでGoldenGate Extractを開始します。これにより、XMLファイルの生成が開始されます。
  12. AVDFコンソールでターゲットを変更し、監査収集属性av.collector.get_tran_log_session_infoYに設定します。

    監査証跡では、監査収集属性 av.collector.get_tran_log_session_infoYに設定されている場合にのみ、AVDFメタデータ表からセッション情報がフェッチされます。

  13. AVDFコンソールで監査証跡を停止して開始します。詳細は、Oracle Audit Vault Serverでの監査証跡の停止、開始および自動起動を参照してください。
  14. オプションで、クライアント識別子(アプリケーション・ユーザー)情報を取得するために、顧客アプリケーションはSQL Serverのcontext_infoでアプリケーション・ユーザーを設定する必要があります。
    たとえば:
     declare @test varbinary(128); set @test = convert(varbinary(128),'<application user name>'); set CONTEXT_INFO @test;

E.8.2 SQL Serverトランザクションのセッション情報収集の無効化

  1. target_file.txtファイルを作成し、セッション情報収集を無効にする必要がある各表について、このファイルに表名(1行に1つの表名)を追加します。
    たとえば、dbo.salaryおよび dbo.employeeのセッション情報収集を無効にする必要がある場合、target_file.txtは次のようになります:
    dbo.salary
    dbo.eomployee
  2. SQL Server (MSSQLServer)サービスを実行するユーザーに、target_file.txtに対する読取り権限があることを確認します。

    通常、このユーザーはNT Service\MSSQLSERVERです。

  3. disable_session_info.sqlスクリプトを実行して、target_file.txtで指定された表ごとにセッション情報収集を無効にします:
    SQLCMD -S <server_name> -d <database_name> -U <super_admin_user> -v target_file="'<full path of target_file.txt>'" -i"<full path of disable_session_info.sql>"
    次に例を示します
    SQLCMD -S PHOENIX86253 -d somedb -U sa -v target_file="'C:\foo\bar\target_file.txt'" -i"C:\foo\bar\disable_session_info.sql"

E.8.3 SQL Serverトランザクションのセッション情報の削除

注意:

これは、すべてのメタデータ表およびトリガーを削除する必要がある場合にのみ実行します。
すべてのセッション情報メタデータ表およびトリガーを削除するには、delete_session_info_metadata.sqlスクリプトを実行します:
SQLCMD -S <server_name> -d <database_name> -U <super_admin_user>  -i"<full path of delete_session_info_metadata.sql>"
たとえば:
SQLCMD -S PHOENIX86253 -d somedb -U sa -i"C:\foo\bar\delete_session_info_metadata.sql"

E.8.4 SQL Serverターゲット・ユーザーに付与された権限の取消し

ターゲット・ユーザーに付与された権限を取り消すには、revoke_privileges_session_info.sqlスクリプトを実行します:
SQLCMD -S <server_name> -d <database_name> -U <super_admin_user> -i"<full path of revoke_privileges_session_info.sql>" -v username="[<user_name>]"
たとえば:
SQLCMD -S PHOENIX86253 -d somedb -U sa -i"C:\foo\bar\revoke_privileges_session_info.sql" -v username="[targetuser]"
Windowsユーザーの場合は、ドメインとユーザーの両方を指定する必要があります。
SQLCMD -S PHOENIX86253 -d somedb -U sa -i"C:\foo\bar\revoke_privileges_session_info.sql" -v username="[domain\user]"