使用Oracle高级队列来监控数据库表列的更新时间。

问题描述 投票:0回答:1

环境。Oracle 12c

我是Oracle高级队列(AQ)的新手,看起来它应该是代替轮询的最佳方法。

基于这一点,我想利用AQ基于以下触发器来使用。

CREATE OR REPLACE TRIGGER MY_TRG  
AFTER UPDATE OF STATUS ON "MY_TABLE"  
REFERENCING NEW AS NEW OLD AS OLD  
FOR EACH ROW  
declare  
   v_status    INTEGER;  
begin      
    if :OLD.status = 'ERROR' and (:NEW.status = 'OK' or :NEW.status = 'ERROR') then  
      --
      -- do some Advanced Queue processing here ?
      --   
    end if;
end;  

那么,在STATUS列更新时,是否可以用AQ来代替轮询? 是否可以使用某种类型的CALLBACK功能?

基本上,我需要知道STATUS列何时更新,以便在更新时执行其他操作。

oracle plsql oracle12c advanced-queuing
1个回答
0
投票

顺便说一下,我已经从评论以及其他网站提供的链接信息中,根据我的解决方案使用Oracle高级队列。

另一个为这个目的提供给我的链接是。

https:/markhoxey.wordpress.com20160301asynchronous-processing-using-aq-callback。

为了更好地回答这个问题,我使用了Mark Hoxey在他的文章中提供的示例代码,特别是在STATUS更新过程中,通过我的表触发器调用的PLSQL CALLBACK例程。

你可以在这里看到所有可用的代码。

https:/onedrive.live.com?id=B48A94826582EA7D%2158434&cid=B48A94826582EA7D。

这是到目前为止,在异步处理而不是用计划作业轮询表时的最佳选择。

© www.soinside.com 2019 - 2024. All rights reserved.