在Oracle数据库的安全特性当中,审计被作为特别重要的一个方面。数据库的审计功能主要是用来审计各种类型的DDL和DML语句,而审计管理作为一项新特性被引进到Oracle的11g R1版本当中,此时它的审计功能并不强大而且还有许多bug,然而到了11gR2时,已经修复了很多bug及它的审计功能进一步增强。
今天我和大家分享一下,在Oracle 11gR2的版本中,有关审计的一些特性。出于美国安全法,Oracle在11g 的版本对审计管理的策略有所改变,初始化参数AUDIT_TRAIL的默认值为'DB',也就是说把所有的审计数据都存放到AUD$表,而这个表又默认是在SYSTEM的表空间里。
当我们在生产环境中部署一套Oracle数据库以后,默认审计功能是开启的,业务刚上线那段时间,数据量不大时,SYSTEM表空间的容量很宽裕,并没有什么压力。当业务运行了一段时间,突然有一天,前端应用就会反映说,数据库特别慢。这时我们DBA对数据库进行各种检查,就会发现SYSTEM表空间的已用空间百分比为99.97%,这一点毫不夸张,我就亲身经历过。我们说这是事后救火,其实我们完全可以在上线前,把AUD$表迁移到其它的专门存放审计数据的表空间,在业务上线并运行一段时间之后,评估一下审计数据的数据量,然后设置审计数据的维护策略。
下面,我们采取三种方法对Oracle数据库的审计进行设置。严格的来说,是两种方法,第一种更为粗暴,直接关闭审计功能,就是将初始化参数AUDIT_TRAIL的值设为'NONE',然后重启数据库使之生效;第二种和第三种是针对开启数据库审计功能的维护管理。在生产环境中,不建议使用第一种,因为关闭审计以后,数据库出现安全隐患以后不利于排查分析。为了大家有所了解,我也一并演示操作。
首先,查看数据库的版本,我所演示的环境为Oracle 11.2.0.4.0。
第一种方法,关闭审计功能。
第二种方法,把SYSTEM表空间里的AUD$表迁移到其它的表空间,以减轻SYSTEM表空间的压力。
(1)查询AUD$表所在的表空间