Oracle 12c基于事件的调度器作业执行延迟原因咨询
基于事件的Oracle调度器作业存在固定延迟问题咨询
环境与参数
- 系统:Linux 64位
- Oracle版本:12.2
- 关键配置参数:
job_queue_processes = 4000 aq_tm_processes = 1
问题描述
基于事件的调度器作业在事件处理环节存在15-20秒的固定延迟。测试场景非常简单:向队列放入一条消息后,作业要等待上述时长才开始执行,原本预期这种简单场景下延迟应该是毫秒级。
测试用例
create or replace type t_test_type as object(id number, msg varchar2(50)); / create or replace procedure test_q_proc ( p_job_name in varchar2, p_event_message in t_test_type ) as begin dbms_output.put_line('msg= '||p_event_message.msg); end; / begin dbms_aqadm.create_queue_table('test_q_table','t_test_type',multiple_consumers => true); dbms_aqadm.create_queue('test_q','test_q_table'); dbms_aqadm.start_queue('test_q'); dbms_scheduler.create_program('test_q_prog','stored_procedure','test_q_proc',2, false); dbms_scheduler.define_metadata_argument('test_q_prog','job_name',1,'p_job_name'); dbms_scheduler.define_metadata_argument('test_q_prog','event_message',2,'p_event_message'); dbms_scheduler.enable('test_q_prog'); dbms_scheduler.create_job('test_q_job','test_q_prog', event_condition=> 'tab.user_data is not null', queue_spec=>'test_q',enabled=> true); end; / declare opts dbms_aq.enqueue_options_t; props dbms_aq.message_properties_t; pl t_test_type := t_test_type(1, 'test'); msg_id raw(16); begin dbms_aq.enqueue('test_q',opts, props, pl, msg_id); commit; end; /
内容的提问来源于stack exchange,提问作者Andrew Klimov
相关产品推荐
相关产品推荐

