Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于Oracle JDBC数据库更改通知更新表_Java_Database_Oracle_Jdbc_Notifications - Fatal编程技术网

Java 基于Oracle JDBC数据库更改通知更新表

Java 基于Oracle JDBC数据库更改通知更新表,java,database,oracle,jdbc,notifications,Java,Database,Oracle,Jdbc,Notifications,如何获取更新行的更改通知,如行数据/行描述。我能够获取更新的行Id 我需要根据更新表1后作为通知获得的行Id将表1与表2同步。我读过一些关于通知的网站,但找不到任何关于如何根据通知更新表的信息。请帮忙 下面是我在Oracle上找到的一些帮助信息: 中间层中的应用程序需要快速访问缓存副本 数据库对象,同时使缓存在中尽可能保持最新 与数据库的关系。缓存的数据过期或“过时” 当事务修改数据并提交时,将 应用程序存在访问错误结果的风险。如果应用程序 使用数据库更改通知,然后Oracle数据库可以发布 已

如何获取更新行的更改通知,如行数据/行描述。我能够获取更新的行Id

我需要根据更新表1后作为通知获得的行Id将表1与表2同步。我读过一些关于通知的网站,但找不到任何关于如何根据通知更新表的信息。请帮忙

下面是我在Oracle上找到的一些帮助信息

中间层中的应用程序需要快速访问缓存副本 数据库对象,同时使缓存在中尽可能保持最新 与数据库的关系。缓存的数据过期或“过时” 当事务修改数据并提交时,将 应用程序存在访问错误结果的风险。如果应用程序 使用数据库更改通知,然后Oracle数据库可以发布 已注册对象发生更改时的通知,包括详细信息 改变了什么

作为对通知的响应,应用程序可以刷新缓存 通过从后端数据库获取数据

我注意到,在“使用数据库更改通知开发应用程序”的第六段中指出:

通知仅包含有关更改的行或对象的元数据,而不包含更改的数据本身

因此,似乎没有办法让Oracle告诉您,
FIELD_X
DESCRIPTION
或任何更改。一旦接收到更改通知,该通知告诉您表和ROWID,您需要取出已更改的数据(如果合适的话),并更新缓存的副本

您的里程可能会有所不同


分享和享受。

表1
表2
,大概是指数据库中的表,对吧?不是用户界面中的表。
Table1
Table2
都在Oracle数据库中吗?它们是否在同一个Oracle数据库中?还是不同的Oracle数据库?您是否有理由不使用Oracle附带的内置复制解决方案来编写自己的自定义代码?是的,它们是数据库中的表。目前,它们在同一个数据库中,但实际情况将在以后的多个平台上改变为不同类型的数据库。有一些复制技术已经做到了这一点(例如Oracle的金门)——我很犹豫是否尝试自己从头开始构建这类技术。您是否试图只允许
表2
位于非Oracle数据库上?或者允许
表1
同时位于非Oracle数据库上?只有一个表的数据库类型不同对不起,我不确定我是否理解您的意思。我想您可能会说源表
Table1
将始终驻留在Oracle数据库中,但目标表
Table2
可能驻留在Oracle数据库或非Oracle数据库中。如果是这样的话,我仍然会使用一种内置的复制技术,而不是尝试编写您自己的复制技术。如何创建缓存副本?如果我正确理解您问题的文本,一个表(在本例中,它似乎是Table1)是源表,而Table2似乎是缓存。在这种情况下,我建议在Table1上创建一个触发器,它在插入、更新或删除时触发,并更新Table2以匹配Table1中现在的内容。祝你好运。