【问题标题】:Updating tables based on Oracle JDBC Database Change Notification基于 Oracle JDBC 数据库更改通知更新表
【发布时间】:2015-02-28 22:26:43
【问题描述】:

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

我需要根据更新 Table1 后收到的行 ID 将 Table1 与 Table2 同步。我在几个网站上阅读过有关通知的信息,但找不到有关如何根据通知更新表格的任何信息。请帮忙!!

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

中间层的应用程序需要快速访问缓存副本 数据库对象的数量,同时保持缓存尽可能最新 与数据库的关系。缓存的数据变得过时或“陈旧” 当事务修改数据并提交时,从而将 应用程序有访问不正确结果的风险。如果申请 使用数据库更改通知,那么 Oracle 数据库可以发布一个 注册对象发生更改时通知详细信息 关于发生了什么变化。

响应通知,应用可以刷新缓存 通过从后端数据库获取数据。

【问题讨论】:

  • Table1Table2,大概是指数据库中的表吧?不是用户界面中的表。 Table1Table2 都在 Oracle 数据库中吗?它们在同一个 Oracle 数据库中吗?还是不同的 Oracle 数据库?您是否有理由不使用 Oracle 附带的内置复制解决方案之一来编写您自己的自定义代码?
  • 是的,它们是数据库中的表。目前它们在同一个数据库中,但实际情况稍后会更改为跨多个平台的不同类型的数据库
  • 已经有复制技术可以做到这一点(例如甲骨文的金门)——我会非常犹豫是否尝试自己从头开始构建这种技术。您是否试图只允许 Table2 位于非 Oracle 数据库上?还是允许Table1 也位于非Oracle 数据库中?
  • 只有一个表在数据库类型方面会有所不同
  • 抱歉,我不确定我是否理解您的意思。我想您可能会说源表Table1 将始终驻留在Oracle 数据库中,但目标表Table2 可能驻留在Oracle 数据库或非Oracle 数据库中。如果是这样的话,我仍然会使用其中一种内置的复制技术,而不是尝试自己编写。

标签: java database oracle jdbc notifications


【解决方案1】:

查看Application Developer's Guide you cited 我注意到关于“使用数据库更改通知开发应用程序”下的第六段状态:

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

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

您的里程可能会有所不同。

分享和享受。

【讨论】:

  • 如何创建缓存副本?
  • 一个表(在这种情况下似乎是 Table1)是源表,而 Table2 似乎是缓存,如果我正确理解您的问题的文本。在这种情况下,我建议在 Table1 上创建一个触发器,该触发器在插入、更新或删除时触发,并更新 Table2 以匹配 Table1 中的内容。祝你好运。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-28
相关资源
最近更新 更多