转-利用Oracle审计功能来监测试环境的变化
http://blog.csdn.net/luowangjun/article/details/5627102
利用Oracle审计功能来监测试环境的变化
做过测试的人都应该会碰到这样的情况:测试发现的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)一一找到,如下所示:
转-利用Oracle审计功能来监测试环境的变化的更多相关文章
- [转]ORACLE 审计功能
审计是对选定的用户动作的监控和记录,通常用于: u 审查可疑的活动.例如:数据被非授权用户所删除,此时安全管理员可决定对该 数据库的所有连接进行审计,以及对数据库的所有表的成功地或不 ...
- oracle 审计功能
Oracle 11g推出了审计功能,但这个功能会针对很多操作都产生审计文件.aud,日积月累下来这些文件也很多,默认情况下,系统为了节省资源,减少I/0操作,其审计功能是关闭的 一.审计功能关闭 1. ...
- 利用ORACLE ADV 功能完成SQL TUNING 调优(顾问培训) “让DBA失业还是解脱?”
oracle自动判断SQL性能功能. 11G的ADV,建议.SNAPSHOT,数据集合, 存储在oracle sys $_开头的表(10几条). 创建SNAPSHOT时选择天数, 默认14天. sq ...
- Oracle 审计文件
Oracle审计功能: Oracle11g推出了审计功能,但这个功能会针对很多操作都产生审计文件.aud,日积月累下来这些文件也很多,默认情况下,系统为了节省资源,减少I/0操作,其审计功能是关闭的 ...
- Oracle Audit 审计功能的认识与使用
1.Audit的概念 Audit是监视和记录用户对数据库进行的操作,以供DBA进行问题分析.利用Audit功能,可以完成以下任务: 监视和收集特定数据库活动的数据.例如管理员能够审计哪些表被更新,在某 ...
- oracle修改审计功能
oracle修改审计功能 如果没有关闭审计功能,审计日志文件默认保存在位置为$ORACLE_BASE/admin/$ORACLE_SID/adump/ 关闭审计:alter system set au ...
- 利用SHELL的PROMPT_COMMAND添加日志审计功能,实时记录任何用户的操作到日志文件中
利用 PROMPT_COMMAND 实现命令审计功能:记录什么用户,在什么时间,做了什么操作,然后将查到的信息记录到一个文件里. 具体操作: 将以下内容追加到/etc/profile: ####### ...
- 【转】mysql利用init-connect增加访问审计功能
mysql的连接首先都是要通过init-connect初始化,然后连接到实例. 我们利用这一点,通过在init-connect的时候记录下用户的thread_id,用户名和用户地址实现db的访问审计功 ...
- 开启和关闭oracle数据库中的审计功能
第1步:查看审计功能是否开启?SQL> show parameter audit;NAME TYPE VALUE-- ...
随机推荐
- matlab各格式数据读取与保存函数
数据处理及matlab的初学者,可能最一开始接触的就是数据的读取与保存: %matlab数据保存与读入 function datepro clear all; %产生随机数据 mat = rand(, ...
- JQuery中的id选择器含有特殊字符时,不能选中dom元素
1.jquery类库在我们实际项目中用的很多,大家经常需要根据控件的id,获取对应的html元素.但是:当id含有特殊字符的时候,是不能选中的 2.jquery的id选择器只支持,单词.阿拉伯数字.下 ...
- 0502团队项目 SCRUM团队成立
Scrum团队成立 团队名称:对不对?队 团队目标:短期目标,完成O2O模式的第一个平台 团队口号:我们都不是神的孩子 团队照: 角色分配 产品负责人: 许佳仪.决定开发内容和优先级排序,最大化产品以 ...
- JavaWeb基础: ServletContext
基本概念 Web容器在启动时,会为每个Web应用程序都创建一个对应的ServletContext对象,它代表当前Web应用. ServletContext(javax.servlet.http.Ser ...
- js检测浏览器屏幕宽度
使用javascript脚本编写的一个能检测浏览器屏幕的宽度,当改变浏览器屏幕大小时,输出的数值也会随之改变.
- 16 款最流行的 JavaScript 框架
本文列举了16个当前最流行的JavaScript框架.在这个列表中,既包括jQuery和Mootools,也有Zepo移动JavaScript框架. 里面一定有你正在用的或想尝试用的JavaScrip ...
- 聚类clustering
聚类:把相似的东西分到一组,是无监督学习. 聚类算法的分类: (1)基于划分聚类算法(partition clustering):建立数据的不同分割,然后用相同标准评价聚类结果.(比如最小化平方误差和 ...
- PHP中字符串的连接和换行
PHP中字符串的连接使用点,不是加号.换行\n需要用双引号括起来,不能用单引号. eg. <?php print_r("hello"."\n"); pri ...
- start with connect by prior 递归查询用法
这个子句主要是用于B树结构类型的数据递归查询,给出B树结构类型中的任意一个结点,遍历其最终父结点或者子结点. 先看原始数据: create table a_test ( parentid ), sub ...
- cmd 打开gitshell
C:\Users\Username\AppData\Local\GitHub\GitHub.appref-ms --open-shell