Oracle表更改监视器

我有一个连接到远程Oracle数据库视图的java应用程序。

有没有人知道在Java中监视此表的更改方式? 即如果有更新插入等我需要做出反应。

您可以在表上放置INSERT / UPDATE / DELETE触发器,以便在对表进行“数据”更改时执行某些操作。 (而不是改变表的结构)

我相信10g还支持视图触发器。

但我不知道你怎么能通过民意调查这个其他的java进程。

抱歉。

你可以创建一些解决方案,其中java应用程序有一个’listen’服务器,数据库将它推回一个消息。 但这听起来很难维持。

Justin Cave在评论中建议您可以配置Oracle Streams以发送Java应用程序可以通过JMS订阅的逻辑更改记录(LCR)。 或者触发器可以将记录写入Java可以通过JMS订阅的高级队列。

您仍然需要警惕Oracle转换..由于Oracle事务的工作方式,触发器将触发更改,但它也可能会多次触发..

并且在任何情况下,java应用程序都无法在执行提交之前“看到”更改。

查看Oracle Change Notification ,这是一个非常有趣的Oraclefunction。

来自Oracle文档: “数据库更改通知是一项function,使客户端应用程序能够向数据库注册查询并接收通知,以响应与查询关联的对象的DML或DDL更改。当DML时,数据库将发布通知或DDL交易提交。“