1 定義
audit_sys_operations審計SYSDBA的活動。預設值是false。相關的審計資訊不會記錄在aud$中,因為有可能此時資料庫還未啟動,只能記錄在作業系統層面的檔案中。預設為false,不意味著沒有審計資訊,像conn / as sysdba這樣的操作仍然會被記錄。audit_file_dest參數指定的審計資訊的檔案夾。
將audit_sys_operations設定成true後,那麼做為sysdba或sysoper串連資料庫的使用者所發布的每條語句都會被寫入作業系統的審計中,從而能夠給出DBA所進行操作的完整記錄。
2 實驗
audit_sys_operations設定成true。要重啟資料庫。
2.1 Select操作
SQL> select * from scott.emp;
[oracle@cent4 adump]$ ll -t
總用量 572
-rw-r----- 1 oracle oinstall 1935 10月 26 21:39 ora_3600.aud
-rw-r----- 1 oracle oinstall 51892 10月 26 21:38 ora_3821.aud
……
[oracle@cent4 adump]$ cat ora_3600.aud
……
Wed Oct 26 21:39:04 2011
ACTION : 'select * from scott.emp'
DATABASE USER: '/'
PRIVILEGE : SYSDBA
CLIENT USER: oracle
CLIENT TERMINAL: pts/1
STATUS: 0
2.2 show parameter操作
SQL> show parameter audit
NAME TYPE VALUE
----------------------------- ----------- ---------------------------------
audit_file_dest string /u01/app/oracle/admin/ltest/adump
audit_sys_operations Boolean TRUE
audit_syslog_level string
audit_trail string DB, EXTENDED
……
Wed Oct 26 21:41:26 2011
ACTION : 'SELECT NAME NAME_COL_PLUS_SHOW_PARAM,DECODE(TYPE,1,'boolean',2,'string',3,'integer',4,'file',5,'number', 6,'big integer', 'unknown') TYPE,DISPLAY_VALUE VALUE_COL_PLUS_SHOW_PARAM FROM V$PARAMETER WHERE UPPER(NAME) LIKE UPPER('%audit%') ORDER
BY NAME_COL_PLUS_SHOW_PARAM,ROWNUM'
DATABASE USER: '/'
PRIVILEGE : SYSDBA
CLIENT USER: oracle
CLIENT TERMINAL: pts/1
STATUS: 0
可以從trace中看到,show parameter audit語句而是顯示其原始語句,如下:
select name name_col_plus_show_param, decode(type, 1, 'boolean', 2, 'string', 3, 'integer', 4, 'file', 5, 'number', 6, 'big integer', 'unknown') type, display_value value_col_plus_show_param from v$parameter where upper(name) like upper('%audit%') order by name_col_plus_show_param, rownum;