32 監査証跡の管理
データベースの監査証跡を適切に管理することで、効率的なパフォーマンスとディスク領域の最適な使用が保証されます。AUDIT_ADMIN
ロールが付与されているユーザーは、監査証跡を管理、アーカイブおよび削除できます。
- 統合監査証跡の管理
統合監査はデフォルトで有効になっており、監査証跡管理により、監査構成がニーズに合わせて効率的になります。 - 監査証跡のアーカイブ
監査データの整合性と信頼性を維持するには、データベース内でローカルに必要な監査データを最小限に抑えます。 - 監査証跡レコードの削除
DBMS_AUDIT_MGMT
PL/SQLパッケージを使用して、自動削除ジョブをスケジューリングして、監査レコードを手動で削除し、他の監査証跡操作を実行できます。 - 監査証跡管理のデータ・ディクショナリ・ビュー
Oracle Databaseには、監査証跡の管理設定に関する情報を表示するデータ・ディクショナリ・ビューが用意されています。
親トピック: 監査を使用したデータベース・アクティビティの監視
32.1 統合監査証跡の管理
統合監査はデフォルトで有効になっており、監査証跡管理により、監査構成がニーズに合わせて効率的になります。
- 統合監査レコードの作成方法と作成場所
監査は常に有効になっています。Oracle Databaseは、監査対象のSQL文の実行フェーズ中または実行フェーズ後に監査レコードを生成します。 - 統合監査のサイズ設定に関する推奨事項
統合監査証跡レコードには、従来の監査レコードよりも少なくとも50%多いディスク領域が必要です。 - AUDSYSスキーマへの監査証跡レコードの書込み方法
Oracle Databaseは、監査レコードをAUDSYS
スキーマの内部リレーショナル表に自動的に書き込みます。 - SYSLOGまたはWindowsイベントビューアへの統合監査証跡レコードの書込み
初期化パラメータを設定することによって、SYSLOGまたはWindowsイベントビューアに統合監査証跡レコードを書き込むことができます。 - オペレーティング・システムへの統合監査レコードの書込み方法
データベースがデータベース自体に監査証跡レコードを書き込むことができない場合、Oracle Databaseはこれらのレコードをオペレーティング・システムのスピルオーバー監査ファイル(.bin
形式)に書き込みます。 - 統合監査証跡へのオペレーティング・システムの監査レコードの移動
スピルオーバー監査ファイルに書き込まれた監査レコードは、統合監査証跡データベース表に移動できます。 - 問合せおよび削除操作のパフォーマンスの向上
AUDSYS.AUD$UNIFIED
表が存在するパーティションが大きすぎる場合は、UNIFIED_AUDIT_TRAIL
データ・ディクショナリ・ビューに対する問合せおよび削除が完了するまでに長い時間がかかる場合があります。 - Oracle Data Pumpを使用した統合監査証跡レコードのエクスポートおよびインポート
Oracle Database Pumpのエクスポートおよびインポート用ダンプ・ファイルに統合監査証跡を含めることができます。 - カーソルが監査に与える影響
カーソル内で監査対象の操作が実行されるたびに、Oracle Databaseでは監査証跡に監査レコードが1つ挿入されます。
関連トピック
親トピック: 監査証跡の管理
32.1.1 統合監査レコードの作成方法と作成場所
監査は常に有効になっています。Oracle Databaseは、監査対象のSQL文の実行フェーズ中または実行フェーズ後に監査レコードを生成します。
統合監査レコードは、ディスク内のAUDSYS
スキーマの内部リレーショナル表に即座に書き込まれます。以前のリリースでは、統合監査レコードは、SecureFile LOBに書き込まれました。この表のパーティション・バージョンは、デフォルトのパーティション間隔が1日に1回であるパーティション・キーとしてのEVENT_TIMESTAMP
タイムスタンプに基づいています。データベース・バージョンがパーティショニングをサポートしていない場合、内部表は標準のもので、パーティション化されていない表です。
ノート:
Oracle Database 12cリリース1 (12.1)の統合監査に移行済の場合は、SecureFile LOBからこの内部表に統合監査レコードを手動で転送できます。使用中のデータベースのバージョンがパーティション化された表をサポートしている場合、この内部表はパーティション化された表です。この場合は、DBMS_AUDIT_MGMT.ALTER_PARTITION_INTERVAL
プロシージャを使用して表のパーティション間隔を変更できます。
監査証跡レコードの生成と挿入は、ユーザー・トランザクションのコミットからは独立して実行されます。つまり、ユーザー・トランザクションがロールバックされても、監査証跡レコードはコミットされたままになります。
データベース・ユーザーがデータベースに接続した時点で有効になる統合監査ポリシーの文監査オプションと権限監査オプションは、そのセッションの持続期間中は有効です。統合監査ポリシーは、作成し有効にすると、それが有効になっているユーザーの実行中のセッションで、そのユーザーがデータベース・セッションを再起動する必要なく即座に適用されます。これは、統合監査ポリシーが無効になっている場合でも当てはまります。ただし、ALTER AUDIT POLICY
文の使用による既存の統合監査ポリシー定義に対する変更(文の監査オプション、権限の監査オプションおよび監査条件に関する変更)は、そのポリシーが有効になっているユーザーの後続のセッションで適用されます。
一方、オブジェクト監査オプションについて変更した内容は、カレント・セッションでただちに有効になります。
デフォルトでは、監査証跡レコードはSYSAUX
表領域のAUDSYS
スキーマに書き込まれます。DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION
プロシージャを使用して、暗号化されている表領域を含め、異なる表領域を指定することをお薦めします。
例32-1 DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION
を使用した別の表領域の指定
- 統合監査用の専用の自動セグメント領域管理(ASSM)表領域を作成します:
CREATE TABLESPACE auto_seg_audit_tablespace DATAFILE 'DiskGroup_name' SIZE 1M EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
- 統合監査用の表領域を指定します:
BEGIN DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION( audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, audit_trail_location_value => 'auto_seg_audit_tablespace'); END;
関連トピック
- AUDSYSスキーマへの監査証跡レコードの書込み方法
- 強制的に監査されるアクティビティ
- Oracle Databaseアップグレード・ガイド
- 『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』の
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION
に関する説明
親トピック: 統合監査証跡の管理
32.1.2 統合監査のサイズ設定に関する推奨事項
統合監査証跡レコードでは、従来の監査レコードよりも少なくとも50%多いディスク領域が必要です。
ベスト・プラクティスとして、統合監査証跡レコードを定期的にアーカイブおよびパージすることをお薦めします。
関連トピック
親トピック: 統合監査証跡の管理
32.1.3 AUDSYSスキーマへの監査証跡レコードの書込み方法
Oracle Databaseは、監査レコードをAUDSYS
スキーマの内部リレーショナル表に自動的に書き込みます。
監査レコードをAUDSYS
スキーマのリレーショナル表に書き込むと、インスタンスがクラッシュした場合やSHUTDOWN ABORT
操作時に監査レコードが失われるリスクが回避されます。デフォルトでは、AUDSYS
スキーマはディクショナリ保護されており、これは他のユーザーがシステム権限(ANY
権限を含む)を使用してデータを変更または改ざんできないことを意味します。
ノート:
Oracle Database 12cリリース1 (12.1)では、監査レコードをメモリー(キュー書込みモード)にキューイングし、AUDSYS
スキーマ監査表に定期的に書き込むオプションがありました。ただし、Oracle Database 12cリリース2 (12.2)以降では、即時書込みモードおよびキュー書込みモードは非推奨です。制御するパラメータ(DBMS_AUDIT_MGMT.AUDIT_TRAIL_IMMEDIATE_WRITE
およびDBMS_AUDIT_MGMT.AUDIT_TRAIL_QUEUED_WRITE
)は、まだ表示可能ですが、機能はありません。
Oracle Database 12cリリース1 (12.1)からアップグレードし、そのリリースの統合監査に移行した場合は、DBMS_AUDIT_MGMT.TRANSFER_UNIFIED_AUDIT_RECORDS
プロシージャを使用して、以前のリリースで生成された監査レコードをAUDSYS
監査内部表に転送することをお薦めします。アップグレード後の統合監査レコードの転送の詳細は、Oracle Databaseアップグレード・ガイドを参照してください。
関連トピック
親トピック: 統合監査証跡の管理
32.1.4 SYSLOGまたはWindowsイベントビューアへの統合監査証跡レコードの書込み
初期化パラメータを設定することによって、SYSLOGまたはWindowsイベントビューアに統合監査証跡レコードを書き込むことができます。
- SYSLOGまたはWindowsイベントビューアへの統合監査証跡レコードの書込みについて
この機能を使用して、一部の主要な統合監査フィールドをSYSLOGまたはWindowsイベントビューアにコピーできます。 - SYSLOGおよびWindowsイベントビューアでの統合監査証跡の取得の有効化
統合監査証跡レコードのサブセットをUNIX SYSLOGまたはWindowsイベントビューアに書き込むことができます。
親トピック: 統合監査証跡の管理
32.1.4.1 SYSLOGまたはWindowsイベントビューアへの統合監査証跡レコードの書込みについて
この機能を使用すると、一部の主要な統合監査フィールドをSYSLOGまたはWindowsイベントビューアにコピーできます。
UNIFIED_AUDIT_TRAIL
データ・ディクショナリ・ビューの統合監査レコードのキー・フィールドのみがSYSLOGにコピーされます。統合監査環境のSYSLOGレコードによって、操作の整合性が証明されます。
この機能は、UNIXシステムおよびMicrosoft Windowsシステムの両方で構成できます。Windowsシステムでは、これを有効または無効のいずれかにします。有効な場合は、レコードがWindowsイベントビューアに書き込まれます。
UNIXシステムでは、SYSLOGに対する統合監査証跡レコードの取得を微調整して、SYSLOGレコードが送信される機能を指定したり、レコードの重大度レベル(たとえば、デバッグ関連メッセージを取得する場合はDEBUG
)を指定したりできます。
表32-1は、SYSLOGおよびWindowsイベントビューアに書き込まれる統合監査レコード・フィールドに指定される名前を、UNIFIED_AUDIT_TRAIL
ビューの対応する列名にマップしたものです。
表32-1 SYSLOGおよびWindowsイベントビューアの監査レコードのフィールド名
フィールド名 | UNIFIED_AUDIT_TRAILの列名 | 列タイプ | 列の説明 |
---|---|---|---|
|
|
|
監査レコードのタイプ |
|
|
|
データベース識別子 |
|
|
|
セッション識別子 |
|
|
|
セッションでのクライアント識別子 |
|
|
|
システムで実行されている各文の識別子 |
|
|
|
セッション・ユーザー |
|
|
|
監査対象イベントの有効なユーザー |
|
|
|
監査対象イベントのアクション・コード |
|
|
|
監査対象イベントのリターン・コード |
|
|
|
オブジェクトのスキーマ名。 |
|
|
|
オブジェクト名 |
|
|
|
統合監査レコードが生成されるコンテナのGUID |
32.1.5 オペレーティング・システムへの統合監査レコードの書込み方法
データベースがデータベース自体に監査証跡レコードを書き込むことができない場合、Oracle Databaseはこれらのレコードをオペレーティング・システムのスピルオーバー監査ファイル(.bin
形式)に書き込みます。
これは、次のような状況で発生します:
- 監査表領域がオフラインである。
- 表領域が読取り専用である。
- 表領域が一杯である。
- データベースが読取り専用である。
統合監査の.bin
過剰ファイルのデフォルトの場所は次のとおりです。
- プラガブル・データベース(PDB)の場合:
$ORACLE_BASE/audit/$ORACLE_SID/PDB_GUID
- CDBルートの場合:
$ORACLE_BASE/audit/$ORACLE_SID/
統合監査レコードは、OSディスク領域がいっぱいになるまで、OSの過剰ファイルに書き込まれます。この時点で、OSに監査レコードの空き領域がない場合、ユーザー監査可能なトランザクションは「ORA-02002 監査証跡への書込み中にエラーが発生しました。」
エラーで失敗します。この問題を回避するために、監査証跡を定期的に削除することをお薦めします。
関連トピック
親トピック: 統合監査証跡の管理
32.1.6 統合監査証跡へのオペレーティング・システムの監査レコードの移動
スピルオーバー監査ファイルに書き込まれた監査レコードは、統合監査証跡データベース表に移動できます。
データベースが書込み可能でない場合(データベースのマウント中など)、データベースがクローズされている場合、または読取り専用の場合は、Oracle Databaseによって、監査レコードがこれらの外部ファイルに書き込まれます。これらの外部ファイルのデフォルトの場所は、$ORACLE_BASE/audit/$ORACLE_SID
ディレクトリです。
DBMS_AUDIT_MGMT.LOAD_UNIFIED_AUDIT_FILES
プロシージャを実行して、データベースにファイルをロードできます。外部ファイルに多数のオペレーティング・システム監査レコードをロードする場合は、パフォーマンスへの影響を考慮してください。
データベースが書込み可能な場合に、オペレーティング・システム・ファイルからAUDSYS
スキーマ監査表に監査レコードをロードするには、次のステップを実行します:
監査レコードはAUDSYS
スキーマ監査表に即座にロードされ、$ORACLE_BASE/audit/$ORACLE_SID
ディレクトリから削除されます。
スピルオーバー監査ファイルにリンクされたセッションIDがPMONプロセスによって所有されている場合は、データベースが再起動されるまでファイルをロードできません。
親トピック: 統合監査証跡の管理
32.1.7 問合せおよび削除操作のパフォーマンスの向上
AUDSYS.AUD$UNIFIED
表が存在するパーティションが大きすぎる場合は、UNIFIED_AUDIT_TRAIL
データ・ディクショナリ・ビューに対する問合せおよび削除が完了するまでに長い時間がかかる場合があります。
親トピック: 統合監査証跡の管理
32.1.8 Oracle Data Pumpを使用した統合監査証跡レコードのエクスポートおよびインポート
Oracle Database Pumpのエクスポートおよびインポート用ダンプ・ファイルに統合監査証跡を含めることができます。
統合監査証跡は、Oracle Data Pumpを使用した、データベース全体または部分的なデータベースのいずれかのエクスポートおよびインポート操作に自動的に含められます。スキーマ・レベルのエクスポートまたはインポート操作の一部として、Oracle Databaseでは、エクスポートまたはインポート操作中に監査ポリシーのメタデータをSYS
スキーマに含めません。かわりに、統合監査ポリシーでメタデータをエクスポートおよびインポートするには、完全エクスポート(expdp
)またはインポート(impdp
)を使用します。
たとえば、スキーマ・レベルのエクスポートまたはインポートを使用しない部分的なデータベース・エクスポート操作で統合監査証跡表のみをエクスポートする必要がある場合は、次のコマンドを入力します:
- SQL*Plusで、スピルオーバー監査ファイルに書き込まれたすべてのオペレーティング・システム監査レコードを統合監査証跡の表に移動します。これにより、すべてのレコードがエクスポートされます。
- オペレーティング・システムのプロンプトから、次のコマンドを実行します。
expdp system full=y directory=aud_dp_dir logfile=audexp_log.log dumpfile=audexp_dump.dmp version=18.02.00.02.00 INCLUDE=AUDIT_TRAILS Password: password
次に、エクスポート・ダンプ・ファイルを読み込んで、エクスポートされたすべてのコンテンツをインポートできます。この操作では、統合監査証跡表のみがインポートされます。
impdp system
full=y
directory=aud_dp_dir
dumpfile=audexp_dump.dmp
logfile=audimp_log.log
Password: password
この操作を実行するために特別な構成を行う必要はありません。ただし、エクスポート操作を実行する場合はEXP_FULL_DATABASE
ロールを持っている必要があり、インポート操作を実行する場合はIMP_FULL_DATABASE
ロールを持っている必要があります。
親トピック: 統合監査証跡の管理
32.1.9 カーソルが監査に与える影響
カーソル内で監査対象の操作が実行されるたびに、Oracle Databaseでは監査証跡に監査レコードが1つ挿入されます。
カーソルを再利用させるイベントは、次のとおりです。
-
カーソルを再利用のためにオープン状態にしておく、Oracle Formsなどのアプリケーション
-
新しいバインド変数を使用したカーソルの継続実行
-
1つのカーソルを再利用するためにPL/SQLエンジンにより文が最適化される場合に、PL/SQLループ内で実行される文
監査は、カーソルが共有されているかどうかの影響を受けません。それぞれのユーザーは、カーソルの最初の実行時に自分の監査証跡レコードを作成します。
親トピック: 統合監査証跡の管理
32.2 監査証跡のアーカイブ
監査データの整合性と信頼性を維持するには、データベース内でローカルに必要な監査データを最小限に抑えます。
監査データをソース・データベース(Oracle Audit Vault and Database Firewall (AVDF)やOracle Data Safeなど)の外部の専用リポジトリに移動して、長期的な監査データの保持と詳細な分析を行います。
- 従来のオペレーティング・システム監査証跡のアーカイブ
Oracle Databaseをアップグレードした後に、従来のオペレーティング・システム監査ファイルのアーカイブを作成できます。 - 統合監査証跡および従来のデータベースの監査証跡のアーカイブ
監査証跡は、大きくなりすぎないように定期的にアーカイブし、削除する必要があります。
親トピック: 監査証跡の管理
32.2.1 従来のオペレーティング・システム監査証跡のアーカイブ
Oracle Databaseをアップグレードした後に、従来のオペレーティング・システム監査ファイルのアーカイブを作成できます。
ノート:
Oracle Database 23aiでは、従来の監査はサポートされなくなりました。かわりに統合監査を使用することをお薦めします。
親トピック: 監査証跡のアーカイブ
32.2.2 統合監査証跡および従来のデータベースの監査証跡のアーカイブ
監査証跡は、大きくなりすぎないように定期的にアーカイブし、パージする必要があります。
アーカイブしてパージすると、データベース監査証跡のパージが容易になります。
統合および従来のデータベースの監査証跡のアーカイブを作成するには、Oracle Audit Vault and Database FirewallまたはOracle Data Safeを使用します。これらの製品は、どちらもOracle Databaseとは別にインストールします。
ノート:
Oracle Database 23aiでは、従来の監査はサポートされなくなりました。かわりに統合監査を使用することをお薦めします。アーカイブが完了したら、データベース監査証跡の内容を削除できます。
関連トピック
親トピック: 監査証跡のアーカイブ
32.3 監査証跡レコードの削除
DBMS_AUDIT_MGMT
PL/SQLパッケージを使用して、自動削除ジョブをスケジューリングして、監査レコードを手動で削除し、他の監査証跡操作を実行できます。
- 監査証跡レコードの削除について
様々な方法を使用して、監査証跡レコードを削除できます。 - 監査証跡の削除方法の選択
スケジュールに基づいて定期的に、または日時を指定して削除を実行できます。 - 監査証跡の自動削除ジョブのスケジューリング
自動削除ジョブをスケジューリングするには、オンラインREDOログとアーカイブREDOログのサイズのチューニングなどについて事前に計画する必要があります。 - 監査証跡の手動削除
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL
プロシージャを使用して、監査証跡を手動で削除できます。 - 他の監査証跡削除操作
監査証跡削除には、監査証跡削除ジョブの有効化と無効化や、監査証跡削除ジョブのデフォルト間隔の設定なども含まれます。 - 例: 統合監査証跡の削除操作の直接コール
カスタマイズされたアーカイブ・プロシージャを作成して、統合監査証跡の削除操作を直接コールできます。 - Oracle Database 12.1以前からアップグレードされたデータベースでのCLIレコードのパージ
Oracle Database 12cリリース12.1では、統合監査レコードは、共通ロギング・インフラストラクチャ(CLI)のSGAバックエンド表に存在するために使用されていました。
関連トピック
親トピック: 監査証跡の管理
32.3.1 監査証跡レコードの削除について
様々な方法を使用して、監査証跡レコードをパージできます。
監査証跡レコードは、定期的にアーカイブしてから削除するようにしてください。監査証跡レコードのサブセットを削除したり、指定した時間間隔で実行する削除ジョブを作成したりできます。Oracle Databaseでは、アーカイブ・タイムスタンプより前に作成された監査証跡レコードが削除されるか、すべての監査証跡レコードが削除されます。読取り/書込みデータベースおよび読取り専用データベースの両方で監査証跡レコードを削除できます。
削除プロセスでは、統合監査証跡だけでなく、前のリリースのOracle Databaseの監査証跡も考慮されます。たとえば、オペレーティング・システムまたはXMLの監査レコードが含まれるアップグレード済のデータベースを移行した場合は、この項のプロシージャを使用して、それらをアーカイブして削除できます。
監査証跡の削除タスクを実行するには、DBMS_AUDIT_MGMT
PL/SQLパッケージを使用します。DBMS_AUDIT_MGMT
パッケージを使用するには、AUDIT_ADMIN
ロールが必要です。Oracle Databaseでは、DBMS_AUDIT_MGMT
PL/SQLパッケージ・プロシージャのすべての実行を強制的に監査します。
監査データを収集するためにOracle Audit Vault and Database Firewall (AVDF)やOracle Data SafeなどのOracle Databaseアクティビティ監視ソリューションがある場合は、これらのソリューションのドキュメントを参照して、削除プロセスの具体的な推奨事項を確認してください。
ノート:
Oracle Databaseでは、監査証跡からのレコードの削除はすべて例外なく監査されます。
親トピック: 監査証跡レコードの削除
32.3.2 監査証跡の削除方法の選択
スケジュールに基づいて、または日時を指定して削除を実行できます。
- スケジュールに基づいた監査証跡の定期的な削除
すべての監査レコード、または指定したタイムスタンプより前に作成された監査レコードをスケジュールに基づいて定期的に削除できます。 - オンデマンドでの監査証跡の削除
削除をスケジュールするかわりに、必要に応じて監査レコードを手動で削除できます。
親トピック: 監査証跡レコードの削除
32.3.2.1 スケジュールに基づいた監査証跡の定期的なパージ
すべての監査レコード、または指定したタイムスタンプより前に作成された監査レコードをスケジュールに基づいて定期的にパージできます。
- 監査表の削除プロセス中に追加生成されるレコードに対応するために、オンラインREDOログとアーカイブREDOログのサイズがチューニングされていることを確認してください。
- タイムスタンプおよびアーカイブ方針を計画します。
- オプションで、監査レコードのアーカイブ・タイムスタンプを設定します。
- 削除ジョブを作成してスケジューリングします。
関連トピック
親トピック: 監査証跡の削除方法の選択
32.3.2.2 オンデマンドでの監査証跡の削除
削除をスケジュールするかわりに、必要に応じて監査レコードを手動で削除できます。
- 監査表の削除プロセス中に生成された追加レコードに対応するために、オンラインREDOログとアーカイブREDOログのサイズがチューニングされていることを確認してください。
- タイムスタンプおよびアーカイブ方針を計画します。
- オプションで、監査レコードのアーカイブ・タイムスタンプを設定します。
- 削除操作を実行します。
関連トピック
親トピック: 監査証跡の削除方法の選択
32.3.3 監査証跡の自動削除ジョブのスケジューリング
自動削除ジョブをスケジューリングするには、オンラインREDOログとアーカイブREDOログのサイズのチューニングなどについて事前に計画する必要があります。
- 自動削除ジョブのスケジューリングについて
監査証跡全体を削除したり、特定の期間より前に作成された監査証跡内の古い監査レコードを削除したりできます。 - ステップ1: オンラインREDOログとアーカイブREDOログのサイズが適切にチューニングされていることの確認
削除プロセスでは、REDOログが追加生成される場合があります。 - ステップ2: 監査レコードのアーカイブ・タイムスタンプの設定(必要に応じて)
すべての監査証跡を削除する場合は、このステップを省略できます。 - ステップ3: 削除ジョブの作成とスケジューリング
DBMS_AUDIT_MGMT
PL/SQLパッケージを使用して、削除ジョブを作成およびスケジューリングできます。
親トピック: 監査証跡レコードの削除
32.3.3.1 自動削除ジョブのスケジューリングについて
監査証跡全体を削除したり、特定の期間より前に作成された監査証跡内の古い監査レコードを削除したりできます。
監査証跡(特に、大きなもの)を削除する場合は、完了するまでに時間がかかることがあります。データベースがビジーでないときに削除ジョブをスケジュールすることをお薦めします。監査証跡が大幅に大きい場合は、削除プロセスの完了に時間がかかる場合があります。
競合しないかぎり、異なる監査証跡タイプに対する複数の削除ジョブを作成できます。たとえば、標準監査証跡表の削除ジョブを作成し、その後でファイングレイン監査証跡表の削除ジョブを作成できます。ただし、DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD
またはDBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL
プロパティを使用して、両方のタイプまたはすべてのタイプをまとめて処理する削除ジョブを作成することはできません。
ノート:
また、DBMS_SCHEDULER
PL/SQLパッケージで作成されるジョブは読取り専用データベースで実行されないことに注意してください。DBMS_AUDIT_MGMT
で作成される自動削除ジョブではDBMS_SCHEDULER
パッケージを使用してタスクをスケジューリングします。したがって、これらのジョブは読取り専用モードで開いているデータベースまたはPDBで実行できません。
親トピック: 監査証跡の自動削除ジョブのスケジューリング
32.3.3.2 ステップ1: オンラインREDOログとアーカイブREDOログのサイズが適切にチューニングされていることの確認
削除プロセスでは、REDOログが追加生成される場合があります。
関連トピック
親トピック: 監査証跡の自動削除ジョブのスケジューリング
32.3.3.3 ステップ2: 監査レコードのアーカイブ・タイムスタンプの設定(必要に応じて)
すべての監査証跡を削除する場合は、このステップを省略できます。
監査レコードをアーカイブするには、これらのレコードのタイムスタンプを記録する必要があります。最後に監査レコードがアーカイブされた日時のタイムスタンプを設定できます。アーカイブ・タイムスタンプを設定すると、削除インフラストラクチャのクリーン・アップ・ポイントが指定されます。読取り専用データベースにタイムスタンプを設定する場合、DBMS_AUDIT.MGMT.GET_LAST_ARCHIVE_TIMESTAMP
ファンクションを使用して、それが実行されたインスタンス用に構成された最後のアーカイブ・タイムスタンプを確認します。読取り/書込みデータベースの場合、DBA_AUDIT_MGMT_LAST_ARCH_TS
データ・ディクショナリ・ビューを問い合せます。
統合監査証跡の最終アーカイブ・タイムスタンプを調べるには、DBA_AUDIT_MGMT_LAST_ARCH_TS
データ・ディクショナリ・ビューを問い合せます。タイムスタンプを設定した後でDBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL
PL/SQLプロシージャを実行すると、そのタイムスタンプより前の時間を示すすべての監査レコードが監査証跡から削除されます。必要に応じて、アーカイブ・タイムスタンプ設定をクリアできます。
Oracle Database Real Application Clustersを使用している場合は、ネットワーク・タイム・プロトコル(NTP)を使用して、Oracle Databaseインスタンスをインストールしている各コンピュータ上の時間を同期化してください。たとえば、1つのOracle RACインスタンス・ノードの時間を午前11:00:00に設定し、次のOracle RACインスタンス・ノードの時間を11:00:05に設定するとします。その結果、2つのノードの時間に矛盾が生じます。ネットワーク・タイム・プロトコル(NTP)を使用して、これらのOracle RACインスタンス・ノードの時間を同期化できます。
関連トピック
親トピック: 監査証跡の自動削除ジョブのスケジューリング
32.3.3.4 ステップ3: 削除ジョブの作成とスケジューリング
DBMS_AUDIT_MGMT
PL/SQLパッケージを使用して、削除ジョブを作成およびスケジューリングできます。
親トピック: 監査証跡の自動削除ジョブのスケジューリング
32.3.4 監査証跡の手動削除
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL
プロシージャを使用して、監査証跡を手動でパージできます。
- 監査証跡の手動削除について
監査証跡は、削除ジョブをスケジューリングしなくても、手動で即座に削除できます。 - DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAILを使用した監査証跡の手動削除
準備ステップの完了後、DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL
プロシージャを使用して、監査証跡を手動で削除できます。
親トピック: 監査証跡レコードの削除
32.3.4.1 監査証跡の手動削除について
監査証跡は、削除ジョブをスケジューリングしなくても、手動で即座に削除できます。
削除ジョブと同様に、アーカイブ・タイムスタンプの日付より前に作成された監査証跡レコード、または監査証跡内のすべてのレコードを削除できます。このプロシージャを実行した場合、現行の監査ディレクトリのみがクリーン・アップされます。
前のリリースの監査証跡がまだ存在しているアップグレード済のデータベースの場合は、DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL
PL/SQLプロシージャに関する次の点に注意してください。
-
DBMS_AUDIT_MGMT
パッケージではWindowsイベントビューアのクリーン・アップはサポートされていないため、Microsoft WindowsでAUDIT_TRAIL_TYPE
プロパティをDBMS_AUDIT_MGMT.AUDIT_TRAIL_OS
に設定しても効果はありません。Windows上のオペレーティング・システム監査レコードはWindowsイベントビューアに書き込まれるためです。DBMS_AUDIT_MGMT
パッケージでは、このタイプのクリーン・アップ操作はサポートされていません。 -
UNIXプラットフォームで、
AUDIT_SYSLOG_LEVEL
(非推奨)初期化パラメータを設定している場合は、Oracle Databaseによってオペレーティング・システムのログ・ファイルがsyslogファイルに書き込まれます。(syslogファイルを使用するよう構成すると、メッセージがsyslogデーモン・プロセスに送信されることに注意してください。syslogデーモン・プロセスは、syslogファイルへのコミットされた書込みを示す確認応答をOracle Databaseに返しません。)AUDIT_TRAIL_TYPE
プロパティをDBMS_AUDIT_MGMT.AUDIT_TRAIL_OS
に設定すると、監査ディレクトリ内の.aud
ファイルのみが削除されます(このディレクトリは、AUDIT_FILE_DEST
(非推奨)初期化パラメータで指定します)。
親トピック: 監査証跡の手動削除
32.3.5 他の監査証跡削除操作
監査証跡削除には、監査証跡削除ジョブの有効化と無効化や、監査証跡削除ジョブのデフォルト間隔の設定なども含まれます。
- 監査証跡の削除ジョブを使用可能または使用禁止にする方法
DBMS_AUDIT_MGMT.SET_PURGE_JOB_STATUS
プロシージャで、監査証跡削除ジョブを有効または無効にします。 - 指定した削除ジョブに対するデフォルトの監査証跡削除ジョブの間隔の設定
次の削除ジョブ操作が実行されるまでのデフォルトの削除操作間隔を時間単位で設定できます。 - 監査証跡の削除ジョブの削除
既存の監査証跡削除ジョブを削除できます。 - アーカイブ・タイムスタンプ設定の消去
DBMS_AUDIT_MGMT.CLEAR_LAST_ARCHIVE_TIMESTAMP
プロシージャで、アーカイブ・タイムスタンプの設定をクリアできます。
親トピック: 監査証跡レコードの削除
32.3.5.1 監査証跡の削除ジョブを使用可能または使用禁止にする方法
DBMS_AUDIT_MGMT.SET_PURGE_JOB_STATUS
プロシージャで、監査証跡削除ジョブを有効または無効にします。
DBMS_AUDIT_MGMT.SET_PURGE_JOB_STATUS
プロシージャの実行場所は、削除ジョブの場所(DBMS_MGMT.CREATE_PURGE_JOB
プロシージャのCONTAINER
パラメータによって決定)によって異なります。CONTAINER
をCONTAINER_ALL
に設定した場合(削除ジョブをルートに作成する場合)は、DBMS_AUDIT_MGMT.SET_PURGE_JOB_STATUS
プロシージャをルートから実行する必要があります。CONTAINER
をCONTAINER_CURRENT
に設定した場合は、DBMS_AUDIT_MGMT.SET_PURGE_JOB_STATUS
プロシージャが作成されたPDBから、このプロシージャを実行する必要があります。
親トピック: 他の監査証跡削除操作
32.3.5.2 指定した削除ジョブに対するデフォルトの監査証跡削除ジョブの間隔の設定
次の削除ジョブ操作が実行されるまでのデフォルトの削除操作間隔を時間単位で設定できます。
DBMS_AUDIT_MGMT.CREATE_PURGE_JOB
プロシージャで使用される間隔設定が、この設定よりも優先されます。
親トピック: 他の監査証跡削除操作
32.3.5.3 監査証跡の削除ジョブの削除
既存の監査証跡パージ・ジョブを削除できます。
DBA_AUDIT_MGMT_CLEANUP_JOBS
データ・ディクショナリ・ビューのJOB_NAME
およびJOB_STATUS
列を問い合せます。
親トピック: 他の監査証跡削除操作
32.3.5.4 アーカイブ・タイムスタンプ設定のクリア
DBMS_AUDIT_MGMT.CLEAR_LAST_ARCHIVE_TIMESTAMP
プロシージャで、アーカイブ・タイムスタンプの設定をクリアできます。
OBJECT_NAME
がDBMS_AUDIT_MGMT
、OBJECT_SCHEMA
がSYS
で、SQL_TEXT
がLIKE %DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL%
に設定されていることを条件として使用し、UNIFIED_AUDIT_TRAIL
データ・ディクショナリ・ビューを問い合せます。
親トピック: 他の監査証跡削除操作
32.3.6 例: 統合監査証跡の削除操作の直接コール
カスタマイズされたアーカイブ・プロシージャを作成して、統合監査証跡の削除操作を直接コールできます。
例32-2の疑似コードはデータベース監査証跡削除操作を作成し、この操作は、ユーザーが統合監査証跡に対してDBMS_ADUIT.CLEAN_AUDIT_TRAIL
プロシージャを起動することでコールします。
この削除操作では、ループを使用することで、前回アーカイブされたタイムスタンプより前に作成されたレコードを削除します。ループは監査レコードをアーカイブし、どの監査レコードがアーカイブされたかを計算してSetCleanUpAuditTrail
コールを使用して最終アーカイブ・タイムスタンプを設定し、それからCLEAN_AUDIT_TRAIL
プロシージャをコールします。この例では、重要なステップはboldで示しています。
例32-2 データベース監査証跡の削除操作の直接コール
-- 1. Set the last archive timestamp: PROCEDURE SetCleanUpAuditTrail() BEGIN CALL FindLastArchivedTimestamp(AUD$); DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP( AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, LAST_ARCHIVE_TIME => '23-AUG-2013 12:00:00', CONTAINER => DBMS_AUDIT_MGMT.CONTAINER_CURRENT); END; / -- 2. Run a customized archive procedure to purge the audit trail records: BEGIN CALL MakeAuditSettings(); LOOP (/* How long to loop*/) -- Invoke function for audit record archival CALL DoUnifiedAuditRecordArchival(); CALL SetCleanUpAuditTrail(); IF(/* Clean up is needed immediately */) DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL( AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, USE_LAST_ARCH_TIMESTAMP => TRUE, CONTAINER => DBMS_AUDIT_MGMT.CONTAINER_CURRENT ); END IF END LOOP /*LOOP*/ END; /* PROCEDURE */ /
親トピック: 監査証跡レコードの削除
32.3.7 Oracle Database 12.1以前からアップグレードされたデータベースでのCLIレコードのパージ
Oracle Database 12cリリース12.1では、統合監査レコードは、共通ロギング・インフラストラクチャ(CLI)のSGAバックエンド表に存在するために使用されていました。
コンテナのGUIDごとに1つのCLIバックエンド表があり、CLI表に存在する監査レコードをパージするには正しいGUIDを渡す必要があります。プラガブル・データベースがクローニングされると、統合監査表が新しいプラガブル・データベースに新しいGUIDで新規作成されます。
CLEAN_AUDIT_TRAIL
プロシージャの実行中にcontainer_guid
パラメータが渡されない場合、コンテナの現在のGUIDがパージに使用され、コンテナの現在のGUIDが古いGUIDと異なる場合、監査レコードはCLI表から削除されません。
- 次のコマンドを実行して、CLI表のGUIDを取得します:
このコマンドで行が返されない場合は、データベースにCLI表がないため、次のステップをスキップできます。SQL> SELECT DISTINCT guid FROM sys.cli_tab$;
- これらの各GUIDを他のパラメータとともに1つずつ渡してCLEAN_AUDIT_TRAILプロシージャを実行し、これらのCLIバックエンド表から統合監査レコードを確実にパージします。
親トピック: 監査証跡レコードの削除
32.4 監査証跡管理のデータ・ディクショナリ・ビュー
Oracle Databaseには、監査証跡の管理設定に関する情報を表示するデータ・ディクショナリ・ビューが用意されています。
表32-2に、これらのビューを示します。
表32-2 監査証跡の管理設定に関する情報を表示するビュー
ビュー | 説明 |
---|---|
|
従来(統合以外)の監査証跡の削除イベントの履歴が表示されます。定期的に、 DELETE FROM DBA_AUDIT_MGMT_CLEAN_EVENTS; このビューは、読取り/書込みデータベースにのみ適用されます。読取り専用データベースの場合、削除イベントの履歴はアラート・ログにあります。 統合監査の場合、削除されたイベントの履歴を検索するには、 |
|
現在構成されている監査証跡の削除ジョブが表示されます。 |
|
現在構成されている監査証跡プロパティが表示されます。これらのプロパティは、 |
|
監査証跡の削除用に設定された最後のアーカイブ・タイムスタンプが表示されます。 |
関連トピック
親トピック: 監査証跡の管理