一、打开关闭审计功能
(1) 审计功能的参数控制
audit_trail 参数的值可以设置为以下几种
1. NONE:不开启
2. DB:开启审计功能
3. OS:审计记录写入一个操作系统文件。
4. TRUE:与参数DB一样
5. FALSE:不开启审计功能。
这个参数是写道spfile里面的,需要重启数据库
(2) 查看是否审计功能是否启动
SQL> show parameter audit
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest string /u01/app/oracle/admin/ORCL/adump
audit_sys_operations boolean FALSE
audit_syslog_level string
audit_trail string NONE
(3) 开启审计
SQL> conn /as sysdba
SQL> show parameter audit
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest string /u01/app/oracle/admin/ORCL/adump
audit_sys_operations boolean FALSE
audit_syslog_level string
audit_trail string NONE
SQL> alter system set audit_sys_operations=TRUE scope=spfile;--审计管理用户(以sysdba/sysoper角色登陆)
SQL> alter system set audit_trail=db,extended scope=spfile;
重启实例
SQL> show parameter audit
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest string /u01/app/oracle/admin/ORCL/adump
audit_sys_operations boolean TRUE
audit_syslog_level string
audit_trail string DB, EXTENDED
(完成)
(4) 关闭审计
SQL> conn /as sysdba
SQL> show parameter audit
SQL> alter system set audit_trail = none scope=spfile;
重启实例
二、审计
1、对象审计:对表进行审计(数据的添加、删除、修改;表结构的修改及重命名),不需要任何权限,普通用户可用
audit insert,update,delete,alter,rename on 表名 by session whenever successful;
2、语句审计
(1)
audit table by session whenever successful;
audit view by session whenever successful;
(2)
audit insert table by session whenever successful;
audit delete table by session whenever successful;
audit update table by session whenever successful;
audit alter table by session whenever successful;
audit comment table by session whenever successful;
3、参数说明:
(1)By session / By Access
by session对每个session中对同一个对象发生的操作只记录第一次
by access对每个session中发生的每次操作都记录,而不管是否重复。
(2)Whenever successful/ Whenever not successful
Whenever successful表示操作成功以后才记录下来。
Whenever not successful表示操作失败后才记录下来。
三、取消审计
可以使用以下语句取消所有级别(语句、权限和对象)的审计:
noaudit all; 取消所有语句审计
noaudit all privieges; 取消所有权限审计
noaudit all on default; 取消所有对象审计
四、查询有哪些对象被审计(只适用于audit...on...)
select * from user_obj_audit_opts;
五、查询具体审计信息
语句审计查询:
select * from user_audit_statement;
对象审计查询:
select * from user_audit_object;
六、把审计相关的表移到其他表空间
alter table aud$ move tablespace <new tablespace>;
alter index I_aud1 rebuild online tablespace <new tablespace>;
alter table audit$ move tablespace <new tablespace>;
alter index i_audit rebuild online tablespace <new tablespace>;
alter table audit_actions move tablespace <new tablespace>;
alter index i_audit_actions rebuild online tablespace <new tablespace>;
七、问题总结
权限问题:普通用户只能在自己的对象上做审计,即audit...on...
作用域问题:用管理员登录后,audit insert table by session whenever successful; 作用于实例上的所有用户,此操作产生大量审计数据。
八、 删除审计日志
当已形成很对日志时,可删除里面的记录,目前是直接删除,未对数据库造成影响。
查询目前的日志信息:select * FROM SYS.AUD$;
删除已有的审计信息:DELETE FROM SYS.AUD$;
或者快速删除表信息:truncate table SYS.AUD$;