一直想在应用系统层提供一个接口——审计的开/关。即可以允许在应用系统级打开或者关闭数据库的审计功能,但是,尝试了几天,得到的结论似乎是: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的高手们,是如何操作的,使之能够实现动态修改呢,或者有没有别的方案实现审计,而不是每次都需要重新启动数据库……。