在我们日常的工作中,一些安全性的要求高的数据库需要增加审计操作,哪个用户什么时间做了什么操作。

1.打开数据库的审计

alter system set audit_sys_operations=TRUE scope=spfile;  //审计管理用户
alter system set audit_trail=db,extended scope=spfile;  //将sql语句写入审计表中

2.对数据库重启并查看

重启数据库
shutdown immediate;
startup;
show parameter audit;

3.增加审计策略
我们需要对数据库的caiwu用户的所有操作进行审计

// 审计用户caiwu所有成功的操作
audit all by caiwu by access whenever successful;

或者

//针对用户的审计(未执行成功的也审计)
audit select table by caiwu by access;     //查表审计
audit update table by caiwu by access;   //更新审计
audit delete table by caiwu by access;    //删除审计
audit insert table by caiwu by access;     //插入审计
//针对某表的更新、删除审计(错误也审计)
AUDIT UPDATE,DELETE,INSERT ON T_TEST by access;  
//保护审计
audit all on sys.aud$ by access;

4.取消审计

NOAUDIT UPDATE,DELETE,INSERT ON T_TEST by access;  

5.查询审计结果

select OS_USERNAME,username,USERHOST,TERMINAL,TIMESTAMP,OWNER,obj_name,ACTION_NAME,sessionid,os_process,sql_text from dba_audit_trail;

6.将审计表查询开放给某个用户
grant select on dba_audit_trail to caiwu;

7.清空审计记录
DELETE FROM SYS.AUD$;