Database 如何在没有性能和可伸缩性问题的情况下审核数据库活动?
我需要审计所有数据库活动,不管它是来自应用程序还是来自通过其他方式发出sql的人。因此,审计必须在数据库级别进行。所讨论的数据库是Oracle。我研究了如何通过触发器和Oracle提供的细粒度审计来实现这一点。在这两种情况下,我们都打开了对特定表和特定列的审核。然而,我们发现当我们使用这两种方法中的任何一种时,性能都非常糟糕Database 如何在没有性能和可伸缩性问题的情况下审核数据库活动?,database,performance,oracle,audit,Database,Performance,Oracle,Audit,我需要审计所有数据库活动,不管它是来自应用程序还是来自通过其他方式发出sql的人。因此,审计必须在数据库级别进行。所讨论的数据库是Oracle。我研究了如何通过触发器和Oracle提供的细粒度审计来实现这一点。在这两种情况下,我们都打开了对特定表和特定列的审核。然而,我们发现当我们使用这两种方法中的任何一种时,性能都非常糟糕 由于围绕数据隐私制定的法规,审计是绝对必要的,我想知道在不显著降低性能的情况下,最好的方法是什么。如果有人在这方面有Oracle特定的经验,这将是有帮助的,但如果不仅仅是关
由于围绕数据隐私制定的法规,审计是绝对必要的,我想知道在不显著降低性能的情况下,最好的方法是什么。如果有人在这方面有Oracle特定的经验,这将是有帮助的,但如果不仅仅是关于数据库活动审计的一般做法,也可以 我不确定这是否是一种成熟的生产方法 但我在监控数据库方面取得了相当大的成功 使用网络流量嗅探器的流量 将应用程序和数据库之间的原始数据发送到另一个应用程序 在那里对其进行加工、解码和分析 我使用PostgreSQL,解码流量并将其转换为 可以记录的数据库操作流相对较少 直截了当的我想它可以在任何数据库上运行 但格式是有文档记录的 主要的一点是,它不会给数据库本身带来额外的负载 而且,它是被动监测,它记录了所有的活动,但是 无法阻止任何操作,因此可能不是您想要的操作。无需“自行启动”。只需打开审计:
Opus如果您想在目标系统上记录更改记录的副本,您可以使用金门软件来实现这一点,并且不会造成太多源端资源流失。此外,实现此解决方案不必对源数据库进行任何更改 Golden Gate为引用您感兴趣的表列表的事务刮取重做日志。这些更改被写入“跟踪文件”,可以应用于同一数据库上的不同模式,也可以发送到目标系统并应用于目标系统(非常适合减少源系统的负载) 将跟踪文件发送到目标系统后,有一些配置调整,您可以设置一个选项来执行审核,如果需要,您可以调用2个金门函数来获取有关事务的信息: 1) 设置INSERTALLRECORDS复制参数,以便为对源表所做的每个更改操作在目标表中插入新记录。请注意,这可能会占用大量空间,但如果您需要全面的审核,这可能是意料之中的 2) 如果您的记录中尚未附加CHANGED_BY_USERID和CHANGED_DATE,则可以使用目标端的金门函数获取当前事务的此信息。查看GG参考指南中的以下功能: GGHEADER(“USERID”) GGHEADER(“时间戳”)
因此,它不是免费的(需要通过Oracle获得许可),需要一些努力来加速,但可能比实施和维护自定义解决方案要省力/省钱得多,而且您还可以将数据传送到远程系统,从而保证对源数据库的影响降到最低 如果您使用的是oracle,则有一种称为CDC(捕获数据更改)的功能,它是针对审计类需求的更高效的解决方案