When I generate scripts for AQ queues that propagate to remote AQ queues, the Toad-generated PL/SQL block omits the
QUEUE_TO_QUEUE parameter of the
dbms_aqadm.add_subscriber procedure. Comparing AQ queues doesn't notice differences in these parameters either. Still this way in 220.127.116.119. I've added it below for illustration.
aSubscriber := sys.aq$_agent('SUBR_WMXP021_AQDN_OUTBOUND',
( queue_name => 'OMXOUTBOUND.WMXP021_AQDN_OUTBOUND'
,subscriber => aSubscriber
,queue_to_queue => TRUE);
Also, Oracle is fussy about the generated
'"WMXPROP"."WMXP021_AQDN_OUTBOUND"@WMXP021.WORLD' value of the
destination parameter of the call to
DBMS_AQADM.SCHEDULE_PROPAGATION procedure too.
queue_name => 'WMXP021_AQDN_OUTBOUND'
,destination => '"WMXPROP"."WMXP021_AQDN_OUTBOUND"@WMXP021.WORLD'
,start_time => null
,duration => null
,next_time => null
,latency => 60);
I get errors until I remove the owner, the quotes, and the
.WORLD from the value.
Thanks. I'll just log this for now and will try to get to it soon.
The queue_to_queue bit seems straightforward. I'm guessing the destination that I'm showing has that exact format in the data dictionary. Seems risky to just randomly chop out .World and quotes. That one might require some research.
Oracle versions 12.2 and 19c. Not a big deal, now that I've got it through my thick head that I have to remember to add it or things won't propagate.
Actually, the owner seems fine, but not quotes or the
.WORLD. The AQ stuff is pretty ancient and probably doesn't use
DBMS_ASSERT to validate object names. The parsing of the remote object is probably hard-coded in the
DBMS_AQADM package. Still not a big deal to fix the generated code.