Thursday, September 24, 2020

Oracle apps adpatch fails

Many times , when applying patch using adpatch in oracle apps, the patch session session gets terminated because of network problems. The best way to continue the patch is to open a new putty session,start the adpatch again and select "YES" for continue from previous run.The adpatch utility automatically detects where it left processing last time using the .rf9 files in $APPL_TOP/admin/$SID/restart and continue from there. You don't have to re-apply the whole patch again!

However sometimes it does not work and gives the following error-->"AutoPatch error: The worker should not have status 'Running' or 'Restarted' at this point.

Telling workers to quit...

All workers have quit.

AutoPatch error: adfrjp(): Error running jobs in workers"

This is because of inconsistency between fnd_install_processes, ad_deferred_jobs and .rf9 files.

In this case if you check the status of workers using adctrl, and select option "1. Show worker status" it shows the worker status as Running. This is actually the cause of the problem.

Now when we try to manually quit the workers using option "3. Tell worker to quit" then it says "Control code already set to 'Quit' for worker xxx". However if we again check the status of workers now then it still shows them "Running". Now this is a serious problem. Here's how to resolve it--->

select option "4. Tell manager that a worker failed its job" and enter the worker number for which you see the status "Running". Now if you check the worker status then it will change to "Failed"

Now you can select "2. Tell worker to restart a failed job" and continue with ad patch session.

This resolves the problem.

Also there is a different scenario, where in EBS, while applying a patch using adpatch you get the following error->

ATTENTION: All workers either have failed or are waiting: FAILED: file xxxx on worker x. ATTENTION: Please fix the above failed worker(s) so the manager can continue

Here the best approach id to locate the worker log file and check it for the error. The worker log files are located in $APPL_TOP/admin/$SID/log.They are in format->adworkerxx.log where xx is 01,02...The error is clearly mentioned in the log file. If suppose you don't get any clue even after getting the error,then search on metalink for that error. After rectifying the error do the following->

Run adctrl using applmgr. Choose option 1 "Show Worker Status". Verify the worker number that has status failed. Go back to main menu and choose option "2. Tell worker to restart a failed job". Enter the number of worker which you want to restart.The status will change to "fixed,restart" and the patch will progress.

4 comments:

Anonymous said...

Very good article Anmol....

I have a doubt regarding a failed worker. What will happen if we ask a failed worker to quit? I think the job will get transfered to other worker but I'm not sure about it. Or do we have to restart the process?

Anmol said...

If a worker fails, then you should check what is the error because of which it failed in the worker log file which is located at $APPL_TOP/admin/SID/log/adwork*.log
After fixing the error, you should restart the failed worker using adctrl.

Ahmed said...

Thanks alot :)

Blogger said...
This comment has been removed by a blog administrator.