專案需求:在應用層提供「審計開關」介面,動態啟用/停用資料庫審計功能,避免重啟資料庫影響服務。
SQL> SHOW PARAMETER audit_trail
NAME TYPE VALUE
audit_trail string DB
-- 嘗試動態修改 (SCOPE=MEMORY/BOTH)
SQL> ALTER SYSTEM SET audit_trail='FALSE';
ORA-02095: specified initialization parameter cannot be modified
SQL> ALTER SYSTEM SET audit_trail='FALSE' SCOPE=BOTH;
ORA-02095: specified initialization parameter cannot be modified
-- 僅能寫入 SPFILE,需重啟生效
SQL> ALTER SYSTEM SET audit_trail='FALSE' SCOPE=SPFILE;
System altered.
SQL> SHOW PARAMETER audit_trail -- 當前實例仍為 DB
NAME TYPE VALUE
audit_trail string DB
SQL> SHUTDOWN IMMEDIATE
SQL> STARTUP
SQL> SHOW PARAMETER audit_trail
NAME TYPE VALUE
audit_trail string FALSE -- 重啟後生效
audit_trail 屬於**靜態參數 (Static Parameter)**,無法動態修改,任何變更必須修改 SPFILE/PFILE 並重啟實例。因此無法在應用層實現即時開關。
| 方案 | 優點 | 缺點/限制 |
|---|---|---|
細粒度審計 (Fine-Grained Auditing, FGA)DBMS_FGA.ADD_POLICY | 可針對特定表/欄位/條件啟用審計,動態增刪 Policy 無需重啟;支援事件處理程序 (Handler) 即時通知。 | 10g+ 完整支援;9i 僅支援查詢審計 (DBMS_FGA 9.2 起)。 |
標準審計 + NOAUDITAUDIT ... BY ACCESS; NOAUDIT ... | 語法簡單,物件級審計 (AUDIT SELECT ON table) 可動態啟停。 | 陳述式/權限級審計仍受 audit_trail 控制;大量審計產生的 SYS.AUD$ 維護負擔重。 |
| 應用層自行記錄 | 完全可控,不佔用資料庫資源,無需重啟。 | 開發成本高;無法捕捉繞過應用的直接資料庫操作 (如 SQL*Plus、Toad)。 |
| Unified Auditing (12c+) | 整合所有審計類型,效能優異,靈活啟停,支援唯讀表空間儲存審計軌跡。 | 需 12c 以上版本;遷移成本高。 |