我正在寻找一种可以监视数据库(mysql和oracle)进行更改的工具。
当有人在任何(或选定的)表中插入或更新某些内容时,我想了解它。对于那些在数据库中做一些魔术的人来说,它可能非常有用。
我知道可以使用触发器(see this question)来完成,但我对一些可以做到这一点的工具更感兴趣,这是免费的。
答案 0 :(得分:2)
对于Oracle,您正在寻找AUDIT命令。这个将审计记录写入SYS.AUD $表,您可以监视它。
有关AUDIT声明的更多信息:http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_4007.htm#SQLRF01107
关于数据库审计:http://download.oracle.com/docs/cd/B19306_01/server.102/b14220/security.htm#sthref2916
此致 罗布。
答案 1 :(得分:1)
不完全确定这是否是你所追求的,但MySQL有JetProfiler,它可以让你检查数据库中究竟发生了什么,查询方式。我非常确定Oracle有等价物......
答案 2 :(得分:1)
也许您可以快速编写自己的工具代码。我将从一个简单的工具开始,该工具可以将每个表的基本数据导出到CSV文件中进行比较:行数(即选择计数(*)),主键和具有最后修改日期的字段(如果可用)。然后你可以不时在最新的CSV和前一个CSV之间运行差异。
但我不确定这是否可行 - 这取决于数据库中的数据量。
答案 3 :(得分:1)
如果想要验证第三方对数据库的访问权限,那么在某些受控环境中查看日志(在mysql / oracle中启用日志记录)应该可以帮助您测试第三方过程。
另外,制作用于比较的短片也应该有效。
如果您要审核数据的第三方更改,就数据有效性而言,您应该使其特定于您的业务规则,并且它属于应用程序级别(因为审计流程将在很大程度上取决于数据的结构;只需查看通用格式的差异就不会非常有效了。)
您可以查看TOAD(数据差异查看器)。
此外,您应该问问自己为什么让第三方以不受控制的方式访问您的数据库,但事后才被动检查?理想情况是外部接口在处理系统输入时定义并执行完整性规则和业务规则的所有验证。
答案 4 :(得分:1)