Concurrent Manager as name suggest is Manager, which manages your concurrent requests in Oracle Apps 11i. You can assign single request or batch job & let concurrent manager manage these request.
The Master Concurrent Managers
There is a lot of talk about “the” concurrent manager in Oracle Applications. Actually, there are many Concurrent Managers, each governing flow within each Oracle Apps areas. In addition there are “super” Concurrent Managers whose job is to govern the behavior of the slave Concurrent Managers. The Oracle e-Business suite has three important master Concurrent Managers:
- Internal Concurrent Manager — The master manager is called the Internal Concurrent Manager (ICM) because it controls the behavior of all of the other managers, and because the ICM is the boss, it must be running before any other managers can be activated. The main functions of the ICM are to start up and shutdown the individual concurrent managers, and reset the other managers after one them has a failure.
- Standard Manager — Another important master Concurrent Manager is called the Standard Manager (SM). The SM functions to run any reports and batch jobs that have not been defined to run in any specific product manager. Examples of specific concurrent managers include the Inventory Manager, CRP Inquiry Manager, and the Receivables Tax Manager.
- Conflict Resolution Manager — The Conflict Resolution Manager (CRM) functions to check concurrent program definitions for incompatibility rules.
However, the ICM can be configured to take over the CRM’s job to resolve incompatibilities.
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 $OAD_TOP/admin/script/$CONTEXT_NAME where $OAD_TOP is also called as $COMMON_TOP and $CONTEXT_NAME is your SID_hostname, adcmctl.shwhere ad (In my view) is application dba, cm is concurrent manager & ctl means control. When you run adcmctl.sh it records execution of this command in text file with name adcmctl.txt at directory $COMMON_TOP/admin/log/$CONTEXT_NAME. adcmctl.sh called another script startmgr which in turn callsbatchmgr in $FND_TOP/bin and this is actual file which fire up Internal Concurrent Manager Process. Where do concurrent request or manager logfiles and output files go?
The concurrent manager first looks for the environment variable $APPLCSF. If this is set, it creates a path using two other environment variables: $APPLLOG and $APPLOUT.
It places log files in $APPLCSF/$APPLLOG, output files go in
$APPLCSF/$APPLOUT
So for example, if you have this environment set:
$APPLCSF = /u01/appl/common
$APPLLOG = log
$APPLOUT = out
The concurrent manager will place log files in /u01/appl/common/log, and output files in /u01/appl/common/out
If $APPLCSF is not set, it places the files under the product top of the application associated with the request. For example, a PO report would go under $PO_TOP/$APPLLOG and $PO_TOP/$APPLOUT.
How to findout whether concurrent manager is running through backend?
Findout whether concurrent manager is running or not, by using “ps -ef | grep FNDLIBR”
(FND Foundation, LIB Library).
What are the logfile and output file naming conventions?
Request logfiles: l<request id>.req
Manager logfiles:
ICM logfile: Default is std.mgr, can be changed with the mgrname
startup parameter
Concurrent manager log: w<XXXXXX>.mgr
Transaction manager log: t<XXXXXX>.mgr
Conflict Resolution manager log: c<XXXXXX>.mgr
Where: <XXXXXX> is the concurrent process id of the manager.
Can I delete a concurrent manager?
No. You can disable the manager by checking the ‘Enabled’ checkbox, or you can simply terminate the manager and it will not run again unless you reactivate it. If it is really necessary, you can query the manager in the ‘Define Manager’ form, and delete the row. (It is recommended that you DO NOT do this).
How can I check to see if a concurrent manager is running?
One way to see if a manager is running is to use the ‘Administer Concurrent Managers’ form. Navigate to Concurrent->Managers->Administer.
You will see two columns labeled ‘Actual’ and ‘Target’. The Target column lists the number of processes that should be running for each manager for this particular workshift. The Actual column lists the number of processes that are actually running. If the Actual column is zero, there are no processes running for this manager. If the Target column is zero, then either a workshift has not been assigned to this manager, or the current workshift does not specify any target processes. If the target column is not zero, and then the manager processes have either failed to start up, or gone down.
How to define the concurrent manager - The navigation of the concurrent manager is
Concurrent > manager > Define
In that we will assign the specialization rules, workshifts, and program libraries to the manager.
How to assign the specialization rule for the manager - The navigation of the concurrent manager specialization rule is
Concurrent > manager > Specializationrule
By assigning the specialization rule we can find out which concurrent request the concurrent manager is going to read.
How can we tune the Concurrent Managers ?
ReplyDeleteWe can tune the Concurrent Manager by following parameter:
ReplyDeleteSleep Seconds
It is the number of seconds our Concurrent Manager waits between checking the pending concurrent request.
Cache Size
It is amount of request cached.
Process
It is amount of request gets processed.
Purging
It is deletion of unwanted log files and output files.
Besides we can also tune it by creating the Specialised Concurrent Manager.
I have defined a concurrent manager for 5 concurrent programs with default priority.
ReplyDeleteI was monitoring the request R1 to be picked in the queue. This was triggered at 4.26.52 PM by the allocation batch.
But suddenly it got pushed down by another request – R2, it was triggered at 3.32.44 (fine that it was triggered earlier than 35805434), but it was requested to start at 4.30 PM later than 35805434 at 4:20 PM.
Is this normal behavior bcoz why did it pickup request which is requested to start later