如何解决ORACLE 9I高级队列不能及时同步

 

在某公司配置的高级队列执行数据同步时失败,以下是报错内容和数据库环境:

数据库版本:ORACLE 9I;

 

job_no:1059/1061/1062(在ORACLE 9I的环境下,配置完高级队列后,会自动在DBMS_JOB下新建job用于同步数据);

 

job作用:同步不同QTABLE之间的数据,例如从ERP同步到WMS;

 

job运行报错信息(来源-alert_BBK40.log)

ORA-12012: 自动执行作业 1059 出错

ORA-06550: 第 1 行, 第 10 列: 

PLS-00306: 调用 'UPDATE_SCHEDULE' 时参数个数或类型错误

ORA-06550: 第 1 行, 第 10 列: 

PL/SQL: Statement ignored

ORA-06550: 第 1 行, 第 10 列: 

PLS-00306: 调用 'UPDATE_SCHEDULE' 时参数个数或类型错误

ORA-06550: 第 1 行, 第 10 列: 

PL/SQL: Statement ignored

ORA-06550: 第 1 行, 第 10 列: 

PLS-00306: 调用 'UPDATE_SCHEDULE' 时参数个数或类型错误

ORA-06550: 第 1 行, 第 10 列: 

PL/SQL: Statement ignored

ORA-06512: 在"SYS.DBMS_AQADM_SYS", line 5636

ORA-06512: 在"SYS.DBMS_AQADM_SYS", line 6061

ORA-06512: 在"SYS.DBMS_AQADM", line 895

ORA-06512: 在line 1

 

job运行报错信息说明

UPDATE_SCHEDULE是高级队列相关的包dbms_prvtaqip下面的一个存储过程,代码不可见;

job虽然执行失败,但数据是可以同步过去的;

 

备注

该数据库是该公司的ERP数据库环境,数据库可能做了某些特殊的基础修改才导致这样的问题;

 

解决方法(该方法只是一临时方法,不能从根本上解决问题)

另创建一JOB,对高级队列相关job进行相关数据的更新,执行频率:每分钟一次。

CREATE OR REPLACE PROCEDURE queue_jobs_correct IS

BEGIN

UPDATE dba_jobs t

SET t.FAILURES = 0,t.interval = 'sysdate + 1/1440'

WHERE t.WHAT = 'next_date := sys.dbms_aqadm.aq$_propaq(job);'

AND t.BROKEN = 'N'

AND t.FAILURES!=0;

COMMIT;

END;

posted @ 2013-01-08 15:51  blue-sword  阅读(268)  评论(0编辑  收藏  举报