Skip to Main Content

Database Software

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

AQ queue to queue propagation stopped working - Oracle 12c

user12212618Mar 5 2016 — edited Mar 9 2016

I have a queue that is setup with dblink propagation that stopped propagating its messages. We are running this on several of our systems and this has been running successfully in this particular environment for almost year.  One thing to note is approx a month ago this occurred and I dropped and rebuilt the queue given its not production. To troubleshoot - I created a 2nd queue and that too stopped working after approximately 30 minutes (I enQ right after it was created, about 5 minutes later and then again after another 20 minutes) the last request did not DeQ as the first two did.    This is a low volume queue so processes only a handful of requests throughout the day on a normal basis.    I have verified the following items:

dblink for the destination queue is valid;

in DBA_QUEUE_SCHEDULES.schedule_disabled = N and there are no errors being reported. 

we are running Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production   on exadata.

When it stops working I have used  dbms_aqadm.unschedule_propagation followed by dbms_aqadm.schedule_propagation and it works for a few minutes.

Has anyone else seen this happen and / or have suggestion for further trouble-shooting?  thanks in advance.

Comments

Timo Hahn

You get a 'Read time out' error.
What is the service doing?
Have you tried to call the service synchronously?

Timo

kumar santosh

I tried both way its giving same error. I am trying to execute multiple vos(view criteria based ) and at last commiting one Eo based vo(nearly 1100 records) attribute by invoking this service.

Timo Hahn
Answer

Have you tried an easy WS something like a WS that just returns a string?
Timo

Marked as Answer by kumar santosh · Apr 9 2021
kumar santosh

Hi Timo,.

No I have not used any WS , Simply i have called configuration.createRootApplicationModule to get the amipl and then fetched some read only VOs and then done some commit . And exposed this method in service interface and tried invoking this after deploying this ear.

Earlier i was getting timeout exception after 30 seconds so I increased the JTA timeout from weblogic console to 5mins but now this readonlysocket timeout exception is coming. I am not sure if we need to set any parameters for this.

Timo Hahn

Why do you call configuration.createApplicationModule?
When you create a method in the application module and expüost ist as web service you don't need to handle the application module pooling yourself.
Try creating a simple methos in the AM that return a simple string like 'hello' and expose is as soap web service. Then try to call this method as a test. Once you get this working, you add more logic to the method (or create a new one that has more logic).

Timo

kumar santosh

Dear Timo,
I had already tested with for few employess(5) and it was successful and when I am considering for 1200 employees reading data its giving error.

I had created configuration.createApplicationModule because am and view objects was not accessible when I was trying testing with main method in AMPL that is the reason I used configuration.createApplicationModule? in appmodule to access the amimpl and vos.

kumar santosh

I have removed configuration.createApplicationModule and tried in normal way u said and tried again invoking still getting same issues. Its getting SocketTimeoutException exactly after 2 mins.

Timo Hahn

So, you know thth the WS works in principle. Good. The problem seems to be the time needed to get all rows you want to process.
Question: why would you need to transfer 1200 rows at once?
Think about some kind of pagination.
Or try to find out why the query or retriving hte data takes so much time. Sample: if you are only interested in reading data, use a VO in forward only mode. This speeds up reading a lot as no data has to be stored in hte internal cache system.

Timo

kumar santosh

Dear Timo,

Below are the answers for your query :

Question: why would you need to transfer 1200 rows at once?
-I have to update the records for this employees based on some logics calcualtion .

I tried to use setforward in Vo but no luck.

Timo Hahn

Question: why would you need to transfer 1200 rows at once?
-I have to update the records for this employees based on some logics calcualtion .But
But to update these records, you should not need to transfer them via a WS. Pass anything you need to update them to a method that does all the work in the model layer. This method you expose as WS and call it, passing hte right parameters.
Timo

1 - 10
Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on Apr 6 2016
Added on Mar 5 2016
1 comment
1,872 views