Tag Archives: oracle
使用触发器来审计表的DML、DDL操作
最近帮客户排查某问题时,因为怀疑应用对某张配置表有变更,所以需要对这张表的所有操作进行审计。 原本Oracle对某张表的审计是非常方便的,一条命令就可以实现,也不需要费心自定义审计表。 — 启用对表DEPT的插入、更新和删除操作的审计 AUDIT INSERT, UPDATE, DELETE ON DEPT BY ACCESS; — 查看对DEPT表的所有审计记录 SELECT * FROM DBA_AUDIT_TRAIL WHERE OBJ_NAME = ‘DEPT’; — 停用对表DEPT的审计 NOAUDIT INSERT, UPDATE, DELETE ON DEPT; 但不幸的是,因为客户当前环境已经把默认开启的audit_trail给关闭了。(默认开启,默认值是DB,关闭就是NONE) 笔者已经在实验环境验证过: – 1.audit_trail必须开的情况下,对表进行审计才会有记录; – 2.audit_trail是静态参数,如果修改,需要重启数据库才可以生效。 尤其注意要检查这个参数的设置情况,因为这里比较坑的一点是,上述审计命令,即便你关了这个参数,开启表审计的命令执行也并不会报错,只是实际上无法记录。 相信大家都知道,生产环境的重启申请流程非常麻烦,因此只能用手工的方式,比如自定义触发器的方式来监控这张表的DML操作。 还好因为这个配置表正常情况下,并不会被频繁修改,所以使用触发器也不会带来什么性能问题。 下面就进入到hands-on环节,我们模拟下这个客户的需求,假设dept这张表: … Continue reading
Oracle之SQL优化专题03-如何看懂SQL的执行计划
主要介绍下如何看懂SQL的执行计划。毕竟如果SQL的执行计划都看不懂,那优化就无从谈起了。 Continue reading
Oracle面对“数据倾斜列使用绑定变量”场景的解决方案
我们知道,Oracle在传统的OLTP(在线事务处理)类系统中,强烈推荐使用绑定变量,这样可以有效的减少硬解析从而增加系统的并发处理能力。 Continue reading
关于Oracle的44951事件
最近有同事遇到某客户数据库产生大量阻塞,等待事件为:enq HW – contention,最开始采用不断杀会话的方式,效果不好,问题一直高频反复。进一步确认SQL是大量的insert,且插入的表中含有LOB字段.. Continue reading
Oracle之SQL优化专题02-稳固SQL执行计划的方法
首先构建一个简单的测试用例来实际演示。 Continue reading
Oracle RAC环境下定位并杀掉最终阻塞的会话-续
之前在《Oracle RAC环境下定位并杀掉最终阻塞的会话》中,最终使用一个SQL查询出RAC实例之间的所有阻塞关系。但是实际在某些极端的生产环境。 Continue reading
Oracle RAC环境下定位并杀掉最终阻塞的会话
实验环境: Oracle RAC 11.2.0.4 (2节点) 1.模拟故障:会话被级联阻塞 2.常规方法:梳理找出最终阻塞会话 3.改进方法:立即找出最终阻塞会话 。 Continue reading
手工删除crfclust.bdb文件
环境:RHEL 6.5 + Oracle 11.2.0.4 RAC
现象:巡检发现自己的测试环境节点2的空间使用率过高,进一步查询,发现大文件是GI目录下crfclust.bdb文件。 Continue reading
Linux6安装Oracle10gRAC依赖包
最近在RHEL6(已安装11gGI和11gRAC)基础上安装oracle10gRAC测试,由于10g未在RHEL6上认证,所以很多包依赖需要自己去解决.. Continue reading
Oracle 11g RAC 自动应用PSU补丁简明版
本文主要演示使用opatch auto自动应用补丁的过程 Continue reading