概述
审计(Audit)用于监视用户所执行的数据库操作,审计记录可存在数据字典表(称为审计记录:存储在system表空间中的 SYS.AUD$表中,可通过视图dba_audit_trail查看)或操作系统审计记录中(默认位置为$ORACLE_BASE/admin/$ORACLE_SID/adump/).。默认情况下审计是没有开启的。审计记录包含有审计的操作、用户执行的操作、操作的日期和时间等信息。
不管你是否打开数据库的审计功能,以下这些操作系统会强制记录:用管理员权限连接Instance;启动数据库;关闭数据库。
由于开启和关闭审计需要重启数据库实例,所以一般需提前安排停机维护时间窗口,还要注意为与审计相关的表准备充足的表空间。下面整理一下Oracle数据库审计启停的一些规范操作,仅供参考。
1、数据库审计启停前的检查
1.1. 检查审计功能是否启动
SQL> show parameter audit;
1.2. 修改审计表,以及索引的表空间
sql>alter table aud$ move tablespace Tablespacename; sql>alter index I_aud1 rebuild online tablespace Tablespacename; sql>alter table audit$ move tablespace Tablespacename; sql>alter index i_audit rebuild online tablespace Tablespacename; sql>alter table audit_actions move tablespace Tablespacename; sql>alter index i_audit_actions rebuild online tablespace Tablespacename;
2、数据库审计启停
2.1. 开启审计
SQL> alter system set audit_sys_operations=TRUE scope=spfile; SQL> alter system set audit_trail=db,extended scope=spfile; SQL> shutdown immediate; SQL> startup; --检查审计功能是否已开启: SQL> show parameter audit;
2.2 关闭审计
SQL> alter system set audit_trail = none scope=spfile; SQL> shutdown immediate; SQL> startup; --检查审计功能是否已关闭: SQL> show parameter audit;
3、检查
登录数据库,检查审计日志表,是否出现审计记录:
SQL> select * from (select sessionid,userid,userhost,ntimestamp# from sys.aud$ order by ntimestamp# desc) where rownum=1;
最后提一下,大家在操作时一定要观察数据库后台日志是否存在报错信息和监控审计日志所在的表空间增长速度。后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~