unified auditの監査情報は、デフォルトではまずSGAに設けられた領域に書き込みを行ない、一定時間経過後にSGAからディスクへの書き込みを行ないます。

SQL> show parameter UNIFIED_AUDIT_SGA_QUEUE_SIZE

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
unified_audit_sga_queue_size         integer     1048576


SGAの領域サイズはUNIFIED_AUDIT_SGA_QUEUE_SIZEで設定されています。
デフォルトは1MBです。
なお、SGAからディスクへの書き込みが行なわれる前にインスタンスクラッシュが発生した場合、監査情報が一部失われる恐れがあります。
それを防ぐために、監査情報を直接ディスクへ書き込む設定も可能です。
ただし、パフォーマンスに影響を与えないか見極める必要があります。

BEGIN
  DBMS_AUDIT_MGMT.set_audit_trail_property(
    audit_trail_type           => DBMS_AUDIT_MGMT.audit_trail_unified,
    audit_trail_property       => DBMS_AUDIT_MGMT.audit_trail_write_mode,
    audit_trail_property_value => DBMS_AUDIT_MGMT.audit_trail_immediate_write
  );
END;
/

PL/SQLプロシージャが正常に完了しました。


PL/SQLプロシージャを利用して、ディスクへ直接書き込みモードへ変更することが出来ます。

BEGIN
  DBMS_AUDIT_MGMT.set_audit_trail_property(
    audit_trail_type           => DBMS_AUDIT_MGMT.audit_trail_unified,
    audit_trail_property       => DBMS_AUDIT_MGMT.audit_trail_write_mode,
    audit_trail_property_value => DBMS_AUDIT_MGMT.audit_trail_queued_write
  );
END;
/

PL/SQLプロシージャが正常に完了しました。


SGAに書き込むモードに戻す場合も、同じようにプロシージャを利用して設定します。

SQL> EXEC DBMS_AUDIT_MGMT.flush_unified_audit_trail;

なお、SGAに書き込むモードの場合でも、flush_unified_audit_trailプロシージャを利用することで、直ちにディスクに書き込ませる(flushする)ようにすることが出来ます。
上記例では現在接続しているコンテナのみをflushします。

[oracle@DB01 ~]$ sqlplus / as sysdba

SQL> EXEC DBMS_AUDIT_MGMT.flush_unified_audit_trail(container => DBMS_AUDIT_MGMT.container_all);

PL/SQLプロシージャが正常に完了しました。


管理者ユーザーで接続し、flush_unified_audit_trailプロシージャをcontainer_allオプションで実行すると、全てのコンテナの監査情報がディスクにフラッシュされます。