Oracle审计功能的简单介绍
一、什么是审计
审计(Audit)用于监视用户所执行的数据库操作,审计记录可存在数据字典表(称为审计记录:存储在system表空间中的SYS.AUD$表中,可通过视图dba_audit_trail查看)或操作系统文件中(由参数audit_file_dest确定文件存储位置)。转报系统默认情况下审计是没有开启的。
如果打开数据库审计功能,在语句执行阶段产生审计记录。审计记录包含有审计的操作、用户执行的操作、操作的日期和时间等信息。
不管你是否打开数据库的审计功能,以下这些操作系统会强制记录:用管理员权限连接Instance;启动数据库;关闭数据库。
二、oracle数据库审计相关的表安装
如果做上述查询的时候发现表不存在,说明审计相关的表还没有安装,需要执行以下安装:
审计表安装在SYSTEM表空间。所以要确保SYSTEM表空间有足够的空间存放审计信息。安装后要重启数据库。
三、和审计相关的两个主要参数
audit_sys_operations:
默认为false,当设置为true时,所有sys用户(包括以sysdba, sysoper身份登录的用户)的操作都会被记录,audit trail不会写在aud$表中,这个很好理解,如果数据库还未启动aud$不可用,那么像conn /as sysdba这样的连接信息,只能记录在其它地方。
audit_trail:
None:是默认值,不做审计;
DB:将audit trail 记录在数据库的审计相关表中,如aud$,审计的结果只有连接信息;
DB,Extended:审计结果里面除了连接信息还包含了当时执行的具体语句;
OS:将audit trail 记录在操作系统文件中。
四、查看审计功能是否启动
备注:Oracle11g默认情况下,在sys.dba_stmt_audit_opts表中规定了哪些操作会被计入审计。查询此表,可以看到会被记录的操作。实际日志记录在参数文件规定的操作系统文件中。
五、开始审计
dba_audit_trail表中会记录以上操作的审计日志,因为sys.AUD$默认存储的表空间为SYSTEM,为了防止此审计配置导致的SYSTEM占用过大,建议将此表移动到其他大的表空间,并定期删除。
六、撤销审计
SQL> noaudit all on test;