Oracle Streams: ORA-0001 on dequeue? -
in production every , ora-0001 error when dequeuing message. use:
solaris 10 oracle 10g c++ application proc*c dbms_aq bundle queuing operations queues xml payload we handle big volume of messages (1k/min).any clue why dequeue result in ora-0001 (unique constraint) error?
update: adding code per request.
exec sql execute declare message_properties dbms_aq.message_properties_t; dequeue_options dbms_aq.dequeue_options_t; message_payload xmltype; tmpclob clob; dynamic_sql_string varchar2(512); begin dequeue_options.wait := :ireadtimeout; dequeue_options.dequeue_mode := dbms_aq.remove; dequeue_options.visibility := dbms_aq.on_commit; if :ibuffered = 1 dequeue_options.delivery_mode := dbms_aq.buffered; dequeue_options.visibility := dbms_aq.immediate; :inavigationmode := 0; end if; if :idequeueonly = 1 , :iqueuetype <> 1 dequeue_options.dequeue_mode := dbms_aq.remove_nodata; dequeue_options.wait := dbms_aq.no_wait; dequeue_options.msgid := hextoraw(:pszdequeuemsgid); else if :inavigationmode = 0 dequeue_options.navigation := dbms_aq.first_message; else dequeue_options.navigation := dbms_aq.next_message; end if; end if; dequeue_options.deq_condition := :pszdeqcondition; dbms_aq.dequeue(queue_name => :pszqueuename, message_properties => message_properties, dequeue_options => dequeue_options, payload => message_payload, msgid => :msgid ); if dequeue_options.dequeue_mode <> dbms_aq.remove_nodata execute immediate dynamic_sql_string using out tmpclob, in message_payload; :gpoxmlclob := tmpclob; else :gpoxmlclob := message_payload.getclobval(); end if; end;
oracle stream queue
No comments:
Post a Comment