Concurrent Program
A program that implements a business functionality and needs to be executed again and again at regular interval or as per business needs is called concurrent program. They can be implement in PL/SQL, Shell Script, C/C++ etc..
Now when a concurrent program is written, it needs to be executed daily at particular time. If we do it manual, there might be chances of delays or it might happen that two different people run the same program at the same time which might lead problems. So we need a manager which can do all this tasks for us. The responsibility for execution of concurrent programs is given to Concurrent Manager, which ensures that each concurrent program can run successfully without any conflicts. They also ensures that the applications are not overwhelmed with requests. They also manages the batch processing and report generation.
The default installation of Oracle Applications comes with a number of pre defined concurrent managers however you can create your custom concurrent managers to spread out the load of your job processing. Apart from taking care of the load of your jobs the concurrent managers can also schedule the jobs periodically. Also we can assign specific priority and specific times to the different programs, so that the concurrent managers can run them in specific workshifts.
Concurrent managers also allows you to tweak the number of concurrent process that it can handle concurrently. If any request exceed this prescribed limit they are automatically put on pending state. The processing of a request takes place based on the time of request submission and priority of the request submitted.
There are many pre-configured 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.
Apart from these three concurrent manages there is another type of concurrent manager known as the Transaction Manager also exists. The transaction manager is responsible for taking the load off the concurrent request table for pooling the request submitted by the user.The transaction manager takes care of these requests and sends it to standard manager directly.In a RAC environment the Transaction manager is required to be activated on each node of the RAC environment.
From the front end you could view the status of your concurrent manager by logging with the System Administration responsibility and going to the Concurrent Manager administer screen.
The status of concurrent managers and the nodes on which they are configured can also be known from the Oracle Applications manager.
Concurrent Manager Processes
The concurrent managers are like other process which run on the oracle applications executable FNDLIBR. The FNDLIBR executable is located at $FND_TOP/bin.
You could also grep the FNDLIBR executable to check if any concurrent manager process are running
$ ps -ef|grep FNDLIBR
The $FND_TOP/sql/afcmstat.sql script gives you a list of concurrent managers and their respective status.
Below is the list of Most of the Concurrent manager processes.
FNDLIBR
manages following Managers
- Marketing Data Mining Manager
- Transportation Manager
- Session History Cleanup
- UWQ Worklist Items Release for Crashed session
- Collections Manager
- OAM Metrics Collection Manager
- Contracts Core Concurrent Manager
- Standard Manager
- WMS Task Archiving Manager
- Oracle Provisioning Manager
INVLIBR
manages following Managers
- Inventory Manager
MRCLIB
manages following Managers
- MRP Manager
PALIBR manages following Managers
- PA Streamline Manager
FNDSM
The Generic Service Management Framework Process
- FNDSM is executable and core component in GSM ( Generic Service Management Framework discussed above). You start FNDSM services via application listener on all Nodes in Application Tier in E-Business Suite.
Concurrent Manager Scripts
Oracle supplies several useful scripts, (located in $FND_TOP/sql directory), for monitoring the concurrent managers:
afcmstat.sql | Displays all the defined managers, their maximum capacity, pids, and their status. |
afimchk.sql | Displays the status of ICM and PMON method in effect, the ICM's log file, and determines if the concurrent manger monitor is running. |
afcmcreq.sql | Displays the concurrent manager and the name of its log file that processed a request. |
afrqwait.sql | Displays the requests that are pending, held, and scheduled. |
afrqstat.sql | Displays of summary of concurrent request execution time and status since a particular date. |
afqpmrid.sql | Displays the operating system process id of the FNDLIBR process based on a concurrent request id. The process id can then be used with the ORADEBUG utility. |
afimlock.sql | Displays the process id, terminal, and process id that may be causing locks that the ICM and CRM are waiting to get. You should run this script if there are long delays when submitting jobs, or if you suspect the ICM is in a gridlock with another oracle process. |