如何设置对Oracle Datatable的依赖性

时间:2009-08-12 11:45:50

标签: asp.net oracle

在我们的项目中,我们想要使用Cache Dependency。经过一些搜索,我已经知道它只适用于Sql Server,我们应该为它编写自己的cachedepency类。有没有人以前尝试过?最简单的方法是什么?设置依赖于Oracle表?我们使用Oracle 11g和.net 2008,感谢您的帮助

2 个答案:

答案 0 :(得分:1)

Oracle允许您使用dbms_alert package实现通知方案。如果你谷歌dbms_alert,你会发现许多页面给你如何使用它的例子,但基本上它涉及3件事:

  1. 当您希望客户端收到更改通知时,您可以调用dbms_alert.raise(带有您选择的标签)(例如,在需要缓存依赖关系的表的插入/更新/删除触发器中)

  2. 客户端将保持一个已调用dbms_alert.register函数的连接(特定标签已注册)。

  3. 客户端可以随时调用dbms_alert.wait或.waitany;该函数将阻止(或者您可以提供超时),直到警报被引发。在您的情况下,您可以在需要显示正在监控的数据之前立即通过短暂超时调用waitany。

  4. 等待功能运行良好 - 您不需要经常轮询,除非您需要知道第二件事情已经发生变化。相反,您可以在即将使用缓存数据时检查它们以确保其是最新的。此外,在提交客户端的事务提交之前,不会通知客户端。

    dbms_alert的最大限制是一次只有一个事务可以引发特定标签的未提交警报。换句话说,如果事务A引发警报“foo”,事务B将阻止它引发“foo”直到A回滚或提交,因此在可能需要很长时间的事务中使用警报通常不是一个好主意(除非阻止其他用户是设计的一部分)。此外,如上所述,客户端需要保持将用于检查通知的连接。这可以是您用于执行任何其他数据库活动的相同连接,但如果您正在编写执行大量连接池/共享的应用程序,则需要具有保持连接的工具。你需要保持缓存一致的时间长度。

答案 1 :(得分:0)