DBA:在生产环境中创建监控表DML的触发器
日期:2008年7月13日 作者: 查看:[大字体 中字体 小字体]-
在生产环境中,总是可能出现这样的情况:某张或者某些表的数据被莫名其妙的修改了,但是很难定位出是哪个用户、哪个过程修改的。这是一个很让DBA头痛的事情(往往DBA对于整个代码逻辑并不是非常了解)。要定位出“问题”语句,有几种方法可以选择:log miner;细节粒度审计;触发器。Log miner要求要有归档日志(这个并非所有系统都可以做),而且需要有相当的磁盘空间,好处就是可以离线做;细节粒度升级能够根据条件记录下表的DML操作(9i及之前只能记录SELECT语句),比较复杂的FGA需要较高权限的用户来实现;触发器比较灵活,能够按照比较复杂的条件来记录需要的信息。下面介绍触发器如何实现。
要建立这样的触发器,需要利用到几张系统视图:v$session, v$sql, v$cursor,(10g, 9.2.0.1中可以,9.2.0.5, 9.2.0.之前存在bug)
SQL> connect "/ as sysdba"grant select on SYS.V_$SQL to demo;
grant select on SYS.V_$SQL_BIND_DATA to demo;
grant select on SYS.V_$SQL_CURSOR to demo;
grant select on SYS.V_$SESSION to demo;
grant create trigger to demo;
CREATE TABLE trig_sql(lt DATE, sid NUMBER, SERIAL# NUMBER,USERNAME VARCHAR2(30), OSUSER VARCHAR2(64),
MACHINE VARCHAR2(32), TERMINAL VARCHAR2(16),
PROGRAM VARCHAR2(64), sqlText VARCHAR2(2000),
status VARCHAR2(30));
方法1:
create or replace trigger ttt_trig
after insert or update on pga_ttt
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
begin
INSERT INTO trig_sqlselect sysdate,s.SID, s.SERIAL#, s.USERNAME, s.OSUSER,
s.MACHINE, s.TERMINAL, s.PROGRAM, q.sql_text line,
'NONE'
from v$sql q, v$session s
where s.audsid=(select userenv('SESSIONID') from dual)
and s.prev_sql_addr=q.address
AND s.PREV_HASH_VALUE = q.hash_value;
COMMIT;
end;
方法2:
create or replace trigger ttt_trigafter insert or update on pga_ttt
DECLARE
PRAGMA AUTONOMOUS_TRANSACTION;
begin
for cr in (select s.SID, s.SERIAL#, s.USERNAME, s.OSUSER,
s.MACHINE, s.TERMINAL, s.PROGRAM,
q.sql_text line, c.status stat
from v$sql q, v$sql_cursor c, v$session s
where s.audsid=(select userenv('SESSIONID') from dual)
and s.prev_sql_addr=q.address
AND c.STATUS = 'CURFETCH')
loop
INSERT INTO trig_sql VALUES(SYSDATE, cr.sid, cr.SERIAL#,
cr.USERNAME, cr.OSUSER, cr.MACHINE,
cr.TERMINAL, cr.PROGRAM, cr.line,
cr.stat);
end loop;
- [1] [2] 下一页
-
- DBA:在生产环境中创建监控表DML的触发器 相关文章:
- ·[图文]五笔字根表图
- ·《拳皇2002》隐藏超杀出招表 - 技巧心得
- ·拳皇2002隐杀出招表 - 其他电子游戏秘籍
- ·Vi命令一览表
- ·[图文]五笔字根表
- ·幻世录2魔神战争 完全物品列表 - 游戏攻略
- ·轩辕剑3 炼妖壶、武器、装备及怪物炼化表
- ·[宠物]宝宝天生技能列表
- ·网页颜色搭配表
- ·AutoCAD 命令一览表
- DBA:在生产环境中创建监控表DML的触发器 相关软件
- ·多特QQ表情包
- ·QQ搞笑表情gif动态图片集 V1.0 最新版
- ·洋葱头 官方QQ表情+豪华增量QQ表情
- ·《实况足球9欧洲版》全系列注册表导入器
- ·QQ搞笑表情全集 V2.0
- ·ii标准视力表 V2.1
- ·工程表格算量 V3.7
- ·QQ2007全新系统默认QQ表情
- ·仙剑QQ表情
- ·动感化学元素周期表 V2.3
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:自然的魅力 极品自然风光壁纸欣赏
精品推荐
热点TOP10
- ·SQL Server不存在或访问被拒绝 问题的解决
- ·学习SQL语句之SQL语句大全
- ·精妙SQL语句收集
- ·SQL里的cast和convert
- ·CS服务器架设方法
- ·SQLPLUS命令的使用大全
- ·SQL Server 练习题
- ·数据库连接字符串大全
- ·最新免费HTTP代理服务器
- ·巴塞尔新资本协议概述
- ·学习SQL SERVER的存储过程-之一认识存储过程语法
- ·提高查询速度:SQL Server数据库优化方案
- ·SQL游标原理和使用方法
- ·SQL Server不存在或访问被拒绝 问题的解决
- ·什么是SQL注入法攻击
- ·MS-SQL开发常用汇总和t-sql技巧集锦
- ·认识VF--Visual FoxPro 漫谈
- ·触发器概述
- ·SQLSERVER中,数据库同步的实现
- ·SQL中CASE的用法
特别推荐
- ·警惕恶意软件 网站SQL注入防御实战
- ·从三个方面进行讲解如何适当优化
- ·Vista下安装SQL Sever 2005报错的解决办法
- ·学习SQL语句之SQL语句大全
- ·打造SQL Server2000的安全策略
- ·SQL语句优化技术分析
- ·MySQL导入导出方法与工具
- ·CS服务器架设方法
- ·改进的socket控件
- ·什么是SQL注入法攻击
- ·用SQL语句删除重复记录的四种方法
- ·数据库查询优化
- ·MySQL常见错误问答!
- ·MySQL从后门进企业市场
- ·精妙SQL语句收集
- ·如何在WinNT/2K/XP下启动纯DOS
- ·自己动手做一个SQL解释器
- ·SQL SERVER实用技巧
- ·动态创建MSSQL数据库表存储过程
- ·数据库的分页问题
