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行目のエントリが必要になります。
ノート:
このExtractプロセスでは、構成済オブジェクトに対して実行されたデータ操作言語(DML)操作のみが取得されます。Oracle AVDF 20.10以降、「データ変更前後の値」レポートにはキー列に関する追加情報が含まれています。デフォルトでは、GoldenGateは表の主キー列をキー列として使用します。表に主キーが定義されていない場合や、別の列をキー列として使用する場合は、GoldenGateのパラメータ・ファイルでキー列を指定するオプションを使用できます。
ノート:
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プロセスを構成します。
バージョン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ドキュメント内の次のトピックを参照してください:
- Microsoft SQL Server用のExtractユーザーについては、SQL Server用のExtractユーザーとReplicatユーザーのExtractユーザーの項のみを参照してください。
- サプリメンタル・ロギングを有効にするユーザーについては、サプリメンタル・ロギングなどの機能を有効にするユーザーを参照してください。
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プロセスを作成するには、次の手順を実行します:
-
GGSCIで次のコマンドを入力します:
edit params mgr
メモ帳または類似エディタで、パラメータ・ファイルが開かれます。
-
パラメータ・ファイルに、Managerプロセスのポート番号を入力します。既知のポート番号以外の、任意のポート番号を使用できます。次の形式を使用します:
port <port_number>
例:
port 3456
-
次のコマンドを入力します。
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プロセスを構成します。
E.5.2.1 ユーザーおよび権限の作成
Oracle GoldenGate Extractプロセス用に使用するユーザーと、サプリメンタル・ロギングの有効化に使用するユーザーには、別々の権限セットが必要です。
手順については、Oracle GoldenGateドキュメント内の次のトピックを参照してください:
- Microsoft SQL Server用のExtractユーザーについては、SQL Server用のExtractユーザーとReplicatユーザーのExtractユーザーの項のみを参照してください。
- サプリメンタル・ロギングを有効にするユーザーについては、サプリメンタル・ロギングなどの機能を有効にするユーザーを参照してください。
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情報を構成します。
- Oracle GoldenGateサービス・マネージャのコンソールで「管理サービス」ページを開きます。
- 「管理サービス」のナビゲーション・メニューで、「構成」をクリックします。
- 「データベース」タブを選択します。
- 「資格証明」の横にあるプラス・ボタンをクリックして、データベース資格証明を追加します。
- 「資格証明ドメイン」フィールドに、ドメイン名を入力します。
- 「資格証明別名」フィールドに別名を入力します。
- 「DSN」フィールドに、データ・ソース名(DSN)を入力します(「Oracle GoldenGateのためのシステムの準備」で作成したもの)。
- ユーザーIDおよびパスワードを入力します。
- 「発行」をクリックします。
-
新しい資格証明の「データベースに接続」アイコンをクリックして、新しく作成した資格証明でターゲット・データベースに接続できることを確認します。
データベース接続のテスト後に、資格証明の表の下に「TRANDATA情報」セクションが表示されます。
- 「TRANDATA情報」の横にあるプラス・ボタンをクリックします。
- 「表」を選択して、「表名」フィールドに表名を追加します。
- 列を必要に応じて編集します。
- 「CSNモードの準備」ドロップダウン・リストで、「nowait」を選択します。
- 「発行」をクリックします。
E.5.2.4 CDCキャプチャのためのシステムの準備
CDCキャプチャ・プロセスを作成するには、サプリメンタル・ロギングを有効にし、Oracle GoldenGate CDCクリーンアップ・ジョブを作成します。
次の手順を参照してください:
E.5.2.5 GoldenGate CDC Extractの作成
次のステップを使用して、Microsoft SQL ServerのCDC取得を作成して実行します。
- Oracle GoldenGateサービス・マネージャのコンソールで「管理サービス」ページを開きます。
- 「Extract」の横にあるプラス・ボタンをクリックします。
- 抽出タイプに「データ・キャプチャExtractの変更」を選択して、「次」をクリックします。
- 「プロセス名」フィールドにプロセス名を入力します。
- 「目的」フィールドで、「一方向」を選択します。
- 「資格証明別名」ドロップダウン・リストで、「Oracle GoldenGateのためのデータベースの構成」で作成した資格証明別名を選択します。
- 「開始」ドロップダウンリストで、「今すぐ」を選択します。
- 2文字の「トレイル名」を入力します。
-
証跡サブディレクトリのカスタマイズが必要な場合は、そのディレクトリのフルパスを「トレイルのサブディレクトリ」フィールドに入力します。
このディレクトリは任意に指定できますが、ファイル・システムに存在している必要があります。
-
「トレイル・サイズ」フィールドに、証跡のサイズをMB単位で入力します。
GoldenGateのレコード生成率が低い(1秒当たり50レコード未満)場合は、証跡サイズを100MBなどの小さい値に設定することをお薦めします。
ノート:
その他のフィールドはすべてオプションのため、未変更のままでもかまいません。 - 「次」をクリックします。
-
「パラメータ・ファイル」セクションで、次のパラメータを入力します:
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のパラメータ」を参照してください。
-
「作成および実行」をクリックしてCDC Extractプロセスを開始します。
新しく作成したCDC Extractが、「管理サービス」ページの「Extract」セクションに表示されます。
-
CDC Extractのステータスを表示するには:
- 抽出の「アクション」ボタンをクリックします。
- 「詳細」を選択します。
-
「レポート」タブをクリックして、診断メッセージを表示します。
抽出プロセスが失敗した場合、このレポートに関連するエラーが表示されます。
E.5.2.6 サンプルのOracle GoldenGate CDC Extractパラメータ・ファイル
これらのOracle GoldenGate CDC Extractパラメータ・ファイルをサンプルとして使用します。
表のDMLを監査して、キー列として使用する列を設定します
次のパラメータ・ファイルは、CDC Extractが次の操作を実行するように構成します:
dbo
スキーマ内のemp
表に対するDML操作の取得empno
とename
のキー列としての設定
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の監査
- 示されているパラメータ・ファイルは、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.employee
のdbo
は、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トランザクションのセッション情報を取得できます。
- GolenGateチェンジ・データ・キャプチャのExtractを構成します:
- クラシック・アーキテクチャ:GoldenGate CDC Extractの作成
- マイクロサービス・アーキテクチャ: GoldenGate CDC Extractの作成
- Extractを停止します。
- 既存のXMLファイルをすべて別の場所に移動します。
- 次のパッチ・ファイルを
<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
target_file.txt
ファイルを作成し、GoldenGate CDC Extractがトランザクション・ログ・データを収集する各表について、このファイルに表名(1行に1つの表名)を追加します。たとえば、GoldenGate CDC Extractパラメータ・ファイルにdbo.salary
およびdbo.employee
が記載されている場合、target_file.txt
は次のようになります:dbo.salary dbo.eomployee
- SQL Server (MSSQLServer)サービスを実行するユーザーに、
target_file.txt
に対する読取り権限があることを確認します。通常、このユーザーは
NT Service\MSSQLSERVER
です。 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"
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"
- 更新および削除のみのためにセッション情報を収集する必要がある場合は、
target_file.txt
で指定された表に対してDML操作を実行し、対応するレコードがAVDFメタデータ表dbo.avdf_dml_session_data
およびdbo.avdf_lsn_time_mapping
に存在することを確認します。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>]"
たとえば:
Windowsユーザーの場合は、ドメインとユーザーの両方を指定しますSQLCMD -S PHOENIX86253 -d somedb -U sa -i"C:\foo\bar\grant_privileges_session_info.sql" -v username="[targetuser]"
SQLCMD -S PHOENIX86253 -d somedb -U sa -i"C:\foo\bar\grant_privileges_session_info.sql" -v username="[domain\user]"
- GoldenGate管理コンソールでGoldenGate Extractを開始します。これにより、XMLファイルの生成が開始されます。
- AVDFコンソールでターゲットを変更し、監査収集属性
av.collector.get_tran_log_session_info
をY
に設定します。監査証跡では、監査収集属性
av.collector.get_tran_log_session_info
がY
に設定されている場合にのみ、AVDFメタデータ表からセッション情報がフェッチされます。 - AVDFコンソールで監査証跡を停止して開始します。詳細は、Oracle Audit Vault Serverでの監査証跡の停止、開始および自動起動を参照してください。
- オプションで、クライアント識別子(アプリケーション・ユーザー)情報を取得するために、顧客アプリケーションは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トランザクションのセッション情報収集の無効化
target_file.txt
ファイルを作成し、セッション情報収集を無効にする必要がある各表について、このファイルに表名(1行に1つの表名)を追加します。たとえば、dbo.salary
およびdbo.employee
のセッション情報収集を無効にする必要がある場合、target_file.txt
は次のようになります:dbo.salary dbo.eomployee
- SQL Server (MSSQLServer)サービスを実行するユーザーに、
target_file.txt
に対する読取り権限があることを確認します。通常、このユーザーは
NT Service\MSSQLSERVER
です。 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]"
SQLCMD -S PHOENIX86253 -d somedb -U sa -i"C:\foo\bar\revoke_privileges_session_info.sql" -v username="[domain\user]"