Concurrent manager in Oracle Apps

on Tuesday, 7 August 2012

Concurrent manager in Oracle Apps


Lets discuss the very basics of Concurrent Managers, again the very basics for the beginners that read  :/http://appstier.blogspot.in/

Two things are obvious:-
1. Concurrent Manager is related to Concurrent  Programs
2. Concurrent manager manages the concurrent(oops I mean parallel) execution of concurrent programs.

So what's left to explain?.....Well nothing much, but I gave a commitment to one of my readers that I shall write something about concurrent managers today. And now when I begin to write, I realize it is worth writing something in plain English on this topic.


Lets explain this with some Q&A
Q : How to run a concurrent program?
Ans: In oracle apps you have a concurrent program submission screen. You can submit the concurrent program from that screen.

Q: What happens when you submit a concurrent program?
Ans: There is something known as Concurrent Manager that runs in the background all the time. This background process, called Concurrent Manager ideally will be running 24x7.
As the name suggests, purpose of a concurrent manager is to manage the submitted concurrent programs.

Q: When I submit a concurrent program( or call it concurrent request), how does concurrent manager pick this up?
Ans: Concurrent manager will be running in the background waiting for a concurrent program to be submitted. As soon as a concurrent program is submitted, it then gets put in an execution queue by concurrent manager.

Q: Why does the Concurrent manager put a concurrent program into a queue? Why doesn't the manager simply let the program run?
Ans: Because at any given point in time a concurrent manager can run no more than say 10 programs concurrently. This figure of 10 is configurable of course. First the manager puts a submitted program into a queue, next the manager checks if there is a slot available (i.e. Less than 10 programs are currently running). If a slot is found available, the concurrent manager then runs the program, or else it keeps the concurrent program in a queue with status Pending.

Q: If we have two concurrent programs, that must never run in parallel(oops I mean concurrently)....can concurrent manager manage such scenarios?
Ans: Of course it can. When you define a concurrent program, you can specify if there are any incompatible programs. If incompatible concurrent programs exist, then concurrent manager will wait for the incompatible program to complete.

Q: Is that all what concurrent manager does?
Ans: Much more, if interested, then read on….

Concurrent manager is responsible for below things too…..

Managing the printer:-
An Oracle Report is registered as a concurrent program too. During submission or during the definition of concurrent program, we can specify the printer where report gets printed. Concurrent manager will send the output of the program to that printer.

Managing the programs completion status-
For example a pl/sql concurrent program can set retcode=2 to make a program complete with warning. Hence concurrent manager not just executes the program, but it manages the completion status of the program too.

Classpath of a java program:-
A concurrent program can be of type java too. If for this specific concurrent program you wish to use a set of java libraries, then you can specify the path of that library in concurrent program definition. Concurrent manager will amend the CLASSPATH to reflect the path of the java library.

Interaction with host concurrent program-
When running a host concurrent program, the concurrent manager passes the apps password as a parameter to the unix script

Tracing a concurrent program
Concurrent manager enable the session trace for the concurrent program, if enable trace checkbox is checked in program definition. You can then go to user dump directory and do tkprof on the file.

Optimization options:-
The concurrent program definition provides an option to specify optimization mode, like choose, fist rows,all rows, rule based etc. The concurrent manager will alter the optimization mode of the session before the submission of the program. Obviously this option has no relevance to Host type concurrent program.



How to Start/Stop Concurrent Manager ? 

In Oracle Applications 11i as you might already be aware that all startup shutdown scripts in 11i(11.5.10) are in $INST_TOP/admin/scripts/$CONTEXT_NAME where $CONTEXT_NAME is your SID_hostname , lets say your SID or Instance Name is VISION and its on machine with name machine1 so your CONTEXT_NAME will be VISION_machine1. So script to start/stop concurrent manager is adcmctl.sh where ad (In my view) is application dba , cm is concurrent manager & ctl means control. Well if you really want to explore more I'll suggest you open this file & go through it . If you open this script you will see syntax to run it in start or stop mode so I am not going to spoon feed you by giving syntax. When you run adcmctl.sh it records execution of this command in text file with name adcmctl.txt at directory $INST_TOP/logs/appl/admin/log/$CONTEXT_NAME. adcmctl.sh called another script startmgr which in turn calls batchmgr in $FND_TOP/bin and this is actual file which fire up Internal Concurrent Manager Process (Open these two files as they are text file and read content in these files.

Lets check important parameter in this file
DISPLAY Set it to some valid XServer , if this is not set properly your reports display will fail (specially one with PDF or Bar code dislay)

DIAG_PARAM Diagnosis parameter it will take value Y or N with default N, If you encounter some error while starting Concurrent Manager you change this to Y and then extra logging will be enabled then check Concurrent Manager log file.

CONCSUB stands for CONC(Concurrent) SUB(Submit) , used to submit concurrent request like shut down concurrent manager.

If you like this post Please keep on Comment............

1 comments:

Unknown said...

And also the path for adcmctl.txt in r12 is

$INST_TOP/logs/appl/admin/log/

Post a Comment