我在Oracle 11.2数据库中有一个表。如果table1中的特定单元格被更新为1,如果table2中的现有行数> 0,则数据库将在远程服务器上运行可执行文件。我对数据库中可能的内容没有太多的经验
或者,如果作业/调度程序不是用来提供此功能的,那么还有其他方法可以实现相同的功能吗?也就是说,对数据库表中的更改触发外部作业。
更新1:
我想知道是否有可能通过使用参数DBMS_SCHEDULER.CREATE_JOB与event_condition一起使用Oracle来实现上面的步骤1-5
01/server.112/e 25494/CHDIAJEB use005.htm#CHDIAJEB
下面是上面链接中的一个示例:
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'process_lowinv_j1',
program_name => 'process_lowinv_p1',
event_condition => 'tab.user_data.event_type = ''LOW_INVENTORY''',
queue_spec => 'inv_events_q, inv_agent1',
enabled => TRUE,
comments => 'Start an inventory replenishment job');
END;上面的代码创建了一个作业,当应用程序向计划程序发出信号,表示某一项的库存水平已降到低阈值水平时,该作业就会开始。
是否可以对上述代码进行修改以执行预期的步骤?例如,可以通过在这里使用event_condition来消除上面的步骤2-4吗?如果是这样的话,它会是什么样子,例如,如何设置queue_spec
发布于 2012-03-23 02:52:57
假设您在远程服务器上安装了Oracle Scheduler代理,DBMS_SCHEDULER可以在远程计算机上运行可执行文件。我会让DML触发器将消息排队到Oracle (AQ)中,并使用该队列创建一个基于事件的作业 (DML触发器不允许提交或回滚事务,但运行DBMS_SCHEDULER作业会隐式地发出commit,因此DML触发器不能直接运行作业)。基于事件的作业和运行远程可执行文件的作业将是作业链的一部分。
https://stackoverflow.com/questions/9833407
复制相似问题