過剰監査ファイル
「過剰監査ファイル」は Oracle Database の統合監査(Unified Auditing)機能の一部です。英文のマニュアルでは「Spillover audit files」と書かれています。
統合監査の監査証跡は AUDSYS スキーマの AUD$UNIFIED テーブルに保存され、データベース管理者は監査証跡を UNIFIED_AUDIT_TRAIL ビューを経由して参照します。しかし Active Data Guard スタンバイ・インスタンスのように Read Only モードで起動したインスタンス等ではテーブルに書き込むことができません。このような場合の監査証跡はオペレーティング・システム上のファイルに作成されます。このファイルは過剰監査ファイルと呼びます。
過剰監査ファイルの出力先
マルチテナント環境の CDB や非マルチテナント環境の過剰監査ファイルは $ORACLE_BASE/audit ディレクトリに作成されます。
$ cd $ORACLE_BASE/audit
$ ls -l ora_audit*
-rw------- 1 oracle asmadmin 1536 Feb 6 15:38 ora_audit_0149.bin
-rw------- 1 oracle asmadmin 1536 Feb 6 13:50 ora_audit_0274.bin
$
PDB の過剰監査ファイルは、\$ORACLE_BASE/audit/{ORACLE_SID}/{GUID} ディレクトリに作成されます。{GUID} は PDB に割り当てられた ID で V$PDBS ビューの GUID 列で確認できます、
SQL> SELECT name, guid FROM v$pdbs ORDER BY 1;
NAME GUID
-------------------- --------------------------------
PDB$SEED 0037AAB2C22E9E08E0638301A8C00FF9
PDB1 00384AF2A3D4C878E0638401A8C0E37E
PDB2 00384D01446954D9E0638301A8C0BA0F
$ cd $ORACLE_BASE/audit/O19A
$ ls
00384AF2A3D4C878E0638401A8C0E37E
$ cd 00384AF2A3D4C878E0638401A8C0E37E
$ ls
ora_audit_0275.bin
過剰監査ファイルの名前
過剰監査ファイルのファイル名は「ora_audit_{番号}.bin」です。番号部分は内部IDとセッションIDから構成されますがマニュアルには明示されていないようです(DocID: 2846293.1)
過剰監査ファイルの内容
過剰監査ファイルを直接参照することは想定されていないため、バイナリ形式で格納されています。ただし暗号化等は行われておらず、SQL 文や監査ポリシー名等はそのまま格納されています。
$ cd $ORACLE_BASE/audit/O19A/00384AF2A3D4C878E0638401A8C0E37E
$ strings ora_audit_0275.bin
ANG Spillover Audit File
ORAAUDNG
oracle
rel88-1
pts/1
(TYPE=(DATABASE));(CLIENT ADDRESS=((ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.200)(PORT=39116))));(CLIENT ADDRESS=());
SCOTT
sqlplus@rel88-1 (TNS V1-V3)
`6L"
104405
SCOTT
DATA1
SELECT COUNT(*) FROM data1
POLICY1
SCOTT
$
過剰監査ファイルの参照
過剰監査ファイルの内容は通常と同じように unified_audit_trail ビューを参照します。
SQL> ALTER SESSION SET CONTAINER=PDB1;
セッションが変更されました。
SQL> SELECT object_name, sql_text FROM unified_audit_trail WHERE dbusername='SCOTT';
OBJECT_NAME SQL_TEXT
------------------------------ ------------------------------------------------------------
DATA1 SELECT COUNT(*) FROM data1
過剰監査ファイルの移動
出力された過剰監査ファイルは書き込み可能な状態になったら AUDSYS.AUD$UNIFIED テーブルにインポートすることができます。DBMS_AUDIT_MGMT パッケージの LOAD_UNIFIED_AUDIT_FILES プロシージャを実行します。
SQL> SELECT COUNT(*) FROM audsys.aud$unified;
COUNT(*)
----------
1
SQL> BEGIN
2 DBMS_AUDIT_MGMT.LOAD_UNIFIED_AUDIT_FILES (
3 CONTAINER => DBMS_AUDIT_MGMT.CONTAINER_CURRENT
4 );
5 END;
6 /
PL/SQLプロシージャが正常に完了しました。
SQL> SELECT COUNT(*) FROM audsys.aud$unified;
COUNT(*)
----------
2
マニュアル上には load_batch_size パラメーターの定義が書かれていますが、実際には container パラメーターしか存在しません(RU 19.14 適用環境)。
過剰監査ファイルが作成できない場合
インスタンス起動時点で過剰監査ファイルが作成できない場合でもインスタンスは正常に起動します。
$ cd $ORACLE_BASE/audit/
$ chmod ug-x o19a
$ srvctl start database -db o19a
$ sqlplus / as sysdba
SQL> SELECT STATUS FROM V$INSTANCE;
STATUS
------------
OPEN
しかしアラートファイルには以下のエラーが出力されます。
2024-02-06T16:46:29.270270+09:00
Errors in file /u01/app/oracle/diag/rdbms/o19a/o19a1/trace/o19a1_ora_105949.trc:
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 13: Permission denied
Additional information: 4
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 13: Permission denied
Additional information: 9
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 13: Permission denied
Additional information: 9
また監査証跡が出力できない状態では新規のクライアント接続はエラーになります。
$ sqlplus scott/tiger@re88-1:1521/pdb1
SQL*Plus: Release 19.0.0.0.0 - Production on 火 2月 6 16:51:16 2024
Version 19.14.0.0.0
Copyright (c) 1982, 2021, Oracle. All rights reserved.
ERROR:
ORA-48189: OS command to create directory failed
Linux-x86_64 Error: 13: Permission denied
Additional information: 2
ORA-46364: Audit directory
'/u01/app/oracle/audit/o19a1/00384AF2A3D4C878E0638401A8C0E37E/' could not be
created.
ORA-48189: OS command to create directory failed
Linux-x86_64 Error: 13: Permission denied
Additional information: 2
ORA-46364: Audit directory
'/u01/app/oracle/audit/o19a1/00384AF2A3D4C878E0638401A8C0E37E/' could not be
created.
ユーザー名を入力してください:
Author: Noriyoshi Shinoda / Date: February 6, 2024