大概讲下需求, 想DBA管理员在数据库客户端操作update和delete的时候产生日志记录,
于是想到了触发器,想用触发器来记录操作的数据update和delete
但程序项目又想不经过该触发器去直接update和delete 比如其他持久化或者jdbc链接绕过触发器来执行更新删除操作.(其实最后还是sql语句去执行....)
请问大体思路如何解决.或者说我想的开始就是个错误.
归纳下问题就是 在sql客户端执行的更新和删除要监听或者记录(比如数据库管理员乱改操作,或者偷摸操作)
而从程序走的就绕过该监听或者记录.
为的就是除了程序之外的操作都要记录(包括DBA去使用客户端工具去执行sql,而且这些内容其实不用dba去担心具体的内容数据..)
目的就是不让他们随意修改内容 并且记录
有点类似防篡改似的
先谢谢各位提出的建议了
------解决思路----------------------
防火防盗防DBA
实际上,程序操作也只不过是封装了一个接口,与直接操作数据库并没有本质区别
而如果要篡改,DBA直接再操作日志表就ok了,除非是,一旦操作数据库,立刻发送邮件和短信,或者是将日志存在别的地方
而且日志想记录什么呢,只能记录操作时间和操作终端这类的信息,偶尔检查下这些,保留redo和archive日志,使用logminer分析就可以了
------解决思路----------------------
防 DBA 那可是太难了,他们可以把数据库改了, 把你的日志表也改了,把归档日志清理掉,甚至把物理盘给你换了,你一点知觉也没有的,他们经验丰富,玩不过他们的。
------解决思路----------------------
防火防盗防DBA,呵呵

数据库对dba来说就是透明的啊,你就算触发器实现了,他也能把触发器删掉,操作完再给你建上
------解决思路----------------------
好比人家有你家的钥匙你要防他不拿你东西
------解决思路----------------------
支持, 需要的只是增加校验机制而已。 没有办法完全防范。 因为哪怕日志记录,dba如果知道存储的地方的话,一样可以把记录删除 。
------解决思路----------------------
web端做日志,那个有问题就查日志,然后就扯皮。