您的位置:首页 > 数据库 > Oracle

利用oracle审计功能来监测试环境的变化

2012-11-08 14:02 337 查看
做过测试的人都应该会碰到这样的情况:测试发现的bug在开发机器上没有出现,显然这是环境差异的原因。相当多情况下,因为测试使用的数据库结构和开发使用的数据库结构不一致造成的。尤其是一些公司在提交测试版本的时候,注重应用程序的版本提交,往往忽略提交和程序匹配的数据库结构,在这种情况下,如果程序和数据库结构不匹配的话,系统稳定就怪了,就像windows没有对应的注册表一样,能稳定吗?
回到正题,如果采用oracle作为底层数据库的系统,如何避免这种情况呢?其实,Oracle的审计功能除了用于安全性检查之外,放到测试领域则有一个好处,就是监控测试数据库的变化情况。Oracle审计内容很丰富:包括语句审计、对象审计、细粒度审计(FGA),监控数据库环境的变化,只要用到语句审计和对象审计即可。

首先:需要检查数据库服务器是否开启了审计,采用show parameter aud命令。

 

Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> show parameter aud

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

audit_file_dest                      string      F:/APP/ADMINISTRATOR/ADMIN/ORC L/ADUMP

audit_sys_operations                 boolean     FALSE

audit_trail                          string       FALSE

如果audit_trail = FALSE或者none,则表明没有开启审计功能,需要开启审计功能,为了建立数据库环境修改的详细记录,需要将audit_trail=db_extended,这样可以在审计视图(dba_audit_trail)看到详细库结构修改(执行了什么样的SQL语句):

SQL> Alter system set audit_trail=db_extended scope=spfile


SQL> shutdown immediate //因为audit_trail是静态参数,所以需要重启oracle实例

SQL> startup open

 

然后设定要审计的用户和表,如果要审计某个用户修改数据库情况,输入如下语句:

SQL> audit all by test whenever successful  ;//意思是只要test用户改动数据库成功的地方,都可以审计到。

上面的all参数是代表审计大部分对象(表、视图、序列)增加、删除,无法对表结构的修改,所以还需要显示的指定表结构的修改。

SQL> audit alter table by test 
by access whenever successful;

 

 

设定完毕,执行测试,如下:

SQL> create table test_table (id number ,name varchar2(20)) ;
表已创建。
SQL> alter table 
test_table add(shool varchar2(20)) ;
表已更改。
SQL> alter table 
test_table add(school varchar2(20)) ;
表已更改。
SQL> drop table test_table 
;
表已删除。
然后查询oracle审计视图(dba_audit_trail),可以看到数据库结构的详细变化情况,包括表的增加、修改、删除、什么时候结构修改、由那台机器修改都很清楚,如下所示:



 

 

 

如果测试系统中,如果有一些很重要的表(如:数据字典表、权限表、基础配置表等)的修改,会严重影响运行,这些测试环境的变化需要详细跟踪,则需要对重要的表对应启动记录级的审计,

SQL> audit insert,update ,delete on test.test_table 
by access whenever successful ;
 
对重要表进行记录级的修改,如下所示:

 

 

 


 

对记录修改完毕后,这些修改变化可以在审计视图(dba_audit_trail)一一找到,如下所示:

 

 



 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: