2

我们有一个很多人都必须访问的数据库。我正在寻找一种方法,使我们能够在此数据库上发生“更改”时获得通知,以便其他方可以知道它。请指教。

4

5 回答 5

5

您可以创建触发器来捕获许多数据库事件...

http://www.psoug.org/reference/ddl_trigger.html

...包括架构上的 ALTER 之前/之后。

于 2008-11-04T07:33:23.320 回答
4

许多人不应该对生产数据库拥有 ALTER 权限 - 很少有人应该对生产数据库拥有 ALTER 权限。实际上,您可能也不应该让很多人有权在测试数据库中进行更改。

您可以考虑审计是否是正确的解决方案 - 在某些 DBMS 中,这将是检测更改的一种方式,但警报会更难(除了“grepping the audit log”主题的一些变化)。Oracle中可能还有其他方式。

于 2008-11-04T07:19:22.847 回答
2

关于你上面的评论:

它是开发数据库,​​所以我们需要很多人来访问它。– whizmaven(8 小时前)

@Jonathan Leffler 是正确的:很多人可能可以访问它,但是拥有 DDL 权限(CREATE、DROP、ALTER 等)的人应该非常有限。

更好的解决方案是在本地完成任何此类更改(在本地托管的数据库上,或作为共享测试数据库上的不同用户帐户)。只有在验证更改后,才应将它们推广到完全共享的环境中。并且应该以更正式的方式处理推出/变更控制过程。

至少,在推出时,应使用电子邮件通知更改和这些更改的后果(需要新的测试、更新等)。

于 2008-11-04T22:25:30.867 回答
1

似乎110g考虑在内:

http://sysdba.wordpress.com/2007/10/16/ddd-logging-in-the-alert-log-in-11g/

于 2008-11-05T05:48:15.603 回答
0

改变什么?

ALTER SESSION 可能是一个非常常见的命令(尤其是 ALTER SESSION SET NLS_DATE_FORMAT 或 CURRENT_SCHEMA)。

更常见的是,您可能想要跟踪 ALTER schema_object,可能是 ALTER SYSTEM 和 ALTER DATABASE

于 2008-11-04T22:16:18.810 回答