关于实时监控oracle数据库表数据变化的设计与实现

近期接受项目需求,需要实时处理oracle数据库中表的数据变化,首先想到的是在程序中创建定时器,轮询表。鉴于程序冗余考虑,百度知:oracle数据库java存储过程。Oracle数据库有执行简单java代码的能力,想到一套新的解决思路。

         思路:创建oracle数据库触发器,当表的数据发生变化的时候,触发器调用oracle数据库java存储过程,该过程调用程序中的接口,告知程序处理逻辑业务。

实现

1. 在plsqldev 中编译java代码 调用接口(具体的语法百度即可) 访问地址是:http://192.168.12.57:8088/Jfinaltest/show

create or replace and compile java source named jxdClient as

import java.net.*;

public class Demo {
  
  public static void main(String[] args) {

    try {
      URL url = new URL("http://192.168.12.57:8088/Jfinaltest/show");
      URLConnection rulConnection = url.openConnection();
      rulConnection.connect();
      rulConnection.getInputStream();
    } catch (Exception e) {
      e.printStackTrace();
    }  
  }
}

2. 生成存储过程

create or replace procedure prc_hehe as language java name 'Demo.main(java.lang.String[])';

3. 编写触发器调用存储过程(pre_hehe)


create or replace trigger jxd7_trigger_wf_nodeinstance
after update or insert
on jxd7_wf_nodeinstance
for each row
begin
  if inserting then
    prc_hehe;
  elsif updating then
    prc_hehe;
  elsif deleting then
    prc_hehe;
  end if;
end;

小结:每次表中的数据发生变化的时候,都会执行触发器中的存储过程,存储过程会调用程序的接口,之后程序处理业务逻辑。减少了代码量,保证了数据处理的实时性,减少了程序的压力



评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值