I hit one headache problem right now, we have application depending on oracle AQ queue(persistent queue) to receive some notification for db change, normally it is working fine, but occasionally on our application side who subscribed the queue and listening to queue notification, registered callback function didn't get invoked by OCI for some reason.e.g. the same db action, maybe once out of twenty times application callback didn't be invoked by notification message from DB side.
I captured snoop trace between oracle DB server and our application for troubleshooting purpose, noticed that, compared with successful cases, the failure case, the pushed notification message from oracle DB server looks different from all the rest notification messages in the front half bytes, all the rest notification messages looks same, I am trying to find some clue here, but I don't understand how to decode the notification message? what information is about in the first half bytes?
too bad I can't insert image here, anyway, the second half message looks queue name, subscription_name, both failure and sucess cases is same, first half is different.
between my application and db server is TCP connection for notification. the notification message sent in TCP PSH, ACK message, both failure and success cases with the same length:428 bytes.
another question is that I query table sys.reg$, I can see lots of records with the same subscription_name,queue_name and location_name, but different user_context? (my application have some bugs for register-subscription and unregister-subscription, caused this), does this matter, will contribute for my issue? what is "user_context" in this table mean? looks like the address?
I am using oracle 10.2.0.2.0
very appreciated to get some expertise help!