当前位置: 首页 > 面试题库 >

Java中Oracle表更改的通知

郭琨
2023-03-14
问题内容

每次更新Oracle DB的特定表(任何类型的更新,包括记录的添加,删除和修改)时,我都需要在Java中运行一个方法。

对具有良好性能且不会对数据库造成太大压力的Java更改表进行“轮询”的最有效方法是什么?

不幸的是,我有很多限制:

  • 我无法创建其他表,触发器,存储过程等,因为我无法控制数据库管理/设计。
  • 我宁愿避免使用该职位中建议的Oracle Change Notification,因为它似乎涉及C / JNI。
  • 仅对记录进行计数还不够好,因为我可能会错过修改和同时添加/删除操作。
  • 实际更改与通知之间的延迟时间最多为30 / 60s。
  • 我要监视的表通常有100k +条记录(大约1m +),因此我不认为拉整个表是一种选择(从数据库负载/性能的角度来看)。

问题答案:

从oracle 11g开始,您可以将Oracle Change
Notification与纯JDBC驱动html" target="_blank">程序链接一起使用



 类似资料:
  • 问题内容: 我有一个Java应用程序连接到远程Oracle数据库上的视图。 有谁知道Java中监视此表更改的方法吗?即,如果有更新的插入等,我需要做出反应。 问题答案: 您可以在表上放置INSERT / UPDATE / DELETE触发器,以在对表进行“数据”更改时执行某些操作。(而不是更改表的结构) 我相信10g也支持视图触发器。 但是我不确定您如何通过轮询来通知其他Java进程。 抱歉。 您

  • 我正在使用RHEL8,它安装了默认的OpenJDK。哪个java命令指向/usr/bin/java。java-version提供openjdk版本“1.8.0_252” 已在/u01/app/java/location中安装java。修改了。如下图所示 现在JAVA_HOME指向/u01/app/JAVA/jdk1。8.0_241/但哪种java或java版本仍然指向OpenJDK。 bash_p

  • 问题内容: 我有一个班上的一个项目。当我们的两个表对它们进行了更改时,我们需要创建一个日志:insert / update /delete。我们需要使用Oracle触发器和PL-SQL。在日志文件中,我们需要记录UserID,DateTime,IPAddress和Event(插入/更新/删除)。我知道如何设置触发器,但是我遇到的主要问题是UserID(从以UserID在Users表中登录到PHP站

  • 我有Oracle分配了81989的SRID的空间数据。我想将其更改为27700——它们都是相同的坐标系,只是Oracle使用自己的SRID;所以不需要重新投影(例如不起作用,因为它实际上也改变了坐标,这是我不想要的))。 我已经很容易地更新了,但是包含数据本身的也有SRID,我不知道如何更改它。 例如,我当前的数据如下所示: 我需要把它改成: 对于表中的所有行。但是我不知道如何自动改变SDO_GE

  • 问题内容: 我的同事在工作中提出了一个我无法回答的问题(由于缺乏经验),该问题与跟踪表中相关字段的变化有关。 想象一下,我们有3个表,每个表20个字段。在此示例中,我们考虑这些表中的每一个都有2个字段,一个名为LastUpdatedOn,另一个名为LastUpdatedBy。 如果我们只想跟踪这3个表中的更改,而只跟踪几个特定字段,而没有为每个表创建包含更新前最新版本的历史表,那么我们如何跟踪这些

  • 问题内容: 目前,我有一列被声明为NUMBER。我想将列的精度更改为NUMBER(14,2)。 所以,我跑了命令 为此,我遇到了一个错误: 我猜想它在更改精度时希望该列为空,但我不知道为什么要在增加它的同时降低它,所以列中的数据不会丢失。有一个简短的解决方法吗?我不想将其复制到另一个表中,然后再删除它,或者重命名一列并在各列之间进行复制,因为存在传输和删除之间丢失数据的风险。 问题答案: 假设您最