一直想在應用系統層提供一個介面——審計的開/關。即可以允許在應用系統級開啟或者關閉資料庫的審計功能,但是,嘗試了幾天,得到的結論似乎是:audit_trail參數,是非動態修改參數,也就是說,通過alter system修改時,只能加上scope=spfile,那麼也就是說,如果要開啟/關閉審計功能,一定要重啟資料庫。。。。
如果是這樣的話,自然就不能靈活開/關審計功能,也就沒辦法提供給應用系統層一個真正有價值的開/關介面。因為每次都需要重新啟動資料庫,這對應用系統的運行是有很大影響的。
下面是我在oracle 10g中實驗的結果(因為9i中總是在關閉後再啟動的時候出現錯誤,具體原因未明了……),我想,10g尚且如此,那9i肯定也沒戲了……
--先顯示一下當前的audit_trail參數值
SQL> show parameter audit_trail NAME TYPE VALUE audit_trail string DB |
--修改audit_trail參數值
SQL> alter system set audit_trail='FALSE'; alter system set audit_trail='FALSE' |
ERROR at line 1: ORA-02095: specified initialization parameter cannot be modifie |
SQL> alter system set audit_trail='FALSE' scope = both; alter system set audit_trail='FALSE' scope = both |
ERROR at line 1: ORA-02095: specified initialization parameter cannot be modifie |
--只能修改到spfile
SQL> alter system set audit_trail='FALSE' scope=spfile; |
System altered.
--顯示audit_trail參數值,說明當前執行個體未更改
SQL> show parameter audit_trail NAME TYPE VALUE audit_trail string DB SQL> shutdown normal ORA-01031: insufficient privileges SQL> conn / as sysdba; Connected. SQL> shutdown normal; Database closed. Database dismounted. ORACLE instance shut down. SQL> startup ORACLE instance started. Total System Global Area 171966464 bytes Fixed Size 787988 bytes Variable Size 144964076 bytes Database Buffers 25165824 bytes Redo Buffers 1048576 bytes Database mounted. Database opened. |
--重新啟動後,audit_trail參數值已經更改……
SQL> show parameter audit_trail; NAME TYPE VALUE audit_trail string FALSE |
這裡僅僅對一個審計參數的初始化和修改進行了說明,路過的如果有oracle的高手們,是如何操作的,使之能夠實現動態修改呢,或者有沒有別的方案實現審計,而不是每次都需要重新啟動資料庫……。