What Are Concurrent Managers in Oracle E-Business Suite?
Concurrent Manager in Oracle Apps R12 are essential components responsible for controlling and managing background processing tasks. They ensure non-interactive, data-dependent programs run efficiently in the background, adhering to specific rules and requirements.
The Oracle Concurrent Manager service is a vital batch processing tool within Oracle E-Business Suite (EBS) that handles background job scheduling and queuing. This service plays a key role in executing user requests efficiently while allowing users to focus on their daily tasks without interruptions. Whether it’s processing data or running reports, the Concurrent Manager ensures that background activities are carried out seamlessly across various Oracle Applications modules.
Below is a detailed breakdown of Concurrent Managers and their functionalities:
Table of Contents
What are Concurrent Managers in Oracle Apps?
What is Concurrent Manager in Oracle Apps R12?
Core Functions of Concurrent Manager
Types of Concurrent Manager in Oracle Apps R12
Concurrent Manager Processes in Oracle Apps
Important Information for Concurrent Manager in Oracle Apps
Environment Variables for Concurrent Manager
Concurrent Manager Important Commands
Starting, Stopping, and Checking Concurrent Managers in Oracle EBS R12
Concurrent Manager Tables in Oracle Apps R12
Concurrent Managers are the controllers of background processing in Oracle Applications. Their primary role is to regulate and control process requests, ensuring that programs are executed simultaneously without user intervention, based on predefined rules.
Core Functions of Concurrent Manager
- Background Task Management: Concurrent Managers handle the execution of non-interactive tasks and ensure they are processed in the background.
- Process Regulation: They operate based on a set of rules, regulating when and how specific requests are processed.
- Simultaneous Execution: They facilitate the concurrent execution of multiple programs, optimizing system resources.
Types of Concurrent Manager in Oracle Apps R12
Oracle Applications provide several predefined Concurrent Managers, each with specialized responsibilities:
- Internal Concurrent Manager (ICM):
- Controls all other Concurrent Managers.
- Acts as the central authority, monitoring and managing the overall environment.
- Standard Manager:
- Accepts all types of requests without any specialization rules.
- Always active, making it a general-purpose manager.
- Best Practice: Avoid adding specialization rules to the Standard Manager to prevent system conflicts.
- Conflict Resolution Manager (CRM):
- Resolves request incompatibilities and ensures smooth operation by managing conflicts.
- Transaction Managers (TM):
- Handle specific transactional processes tailored to the business’s operational needs.
Customization
Oracle Applications allow the creation of additional Concurrent Managers to handle specialized tasks or processes unique to a business requirement. This flexibility ensures that specific program types can be executed under specialized conditions, enhancing efficiency.
Key Points to Remember
- The Standard Manager serves as a general-purpose manager for all requests, ensuring uninterrupted service for unspecialized tasks.
- The Internal Concurrent Manager (ICM) oversees the operations of all other managers, maintaining control over the processing environment.
- The Conflict Resolution Manager (CRM) is critical for managing and resolving conflicts, such as request incompatibilities.
- Creating custom Concurrent Managers for specialized processes can optimize system performance and cater to specific business needs.
Concurrent Managers are a cornerstone of Oracle E-Business Suite, ensuring efficient and regulated background processing, vital for smooth system operations. Understanding their roles and best practices can significantly enhance system reliability and performance.
Concurrent Manager Processes
Concurrent Managers operate as processes within Oracle Applications and run using the Oracle Applications executable FNDLIBR. The FNDLIBR executable is located in the directory path $FND_TOP/bin.
The Internal Concurrent Manager (ICM) initiates and manages FNDLIBR processes in accordance with the definitions configured for each concurrent manager. At the operating system level, the total number of FNDLIBR processes corresponds to the sum of the maximum requests defined for all Oracle concurrent managers, plus one additional process dedicated to the ICM itself.
Environment Variables for Concurrent Manager
- $TNS_ADMIN: Directory containing the Oracle Net configuration files(listener.ora, sqlnet_ifile.ora, sqlnet.ora, tnsnames.ora)
- $APPLCSF: Concurrent Manager puts concurrent program log and output files here
- $APPLLOG: Subdirectory under
$APPLCSF
for log files - $APPLOUT: Subdirectory under
$APPLCSF
for output files - $APPLTMP: Oracle EBS puts temporay files in this directory
- $APPLPTMP: Oracle puts PL/SQL output files in this directory
Concurrent Manager Important Commands
Checking FNDSM Status
$adcmctl.sh status apps/$p_apps_pwd
You are running adcmctl.sh version 120.19.12020000.7
Internal Concurrent Manager is Active.
adcmctl.sh: exiting with status 0
adcmctl.sh: check the logfile /app02/appl/fs2/inst/apps/devebs05/logs/appl/admin/log/adcmctl.txt for more information ...
Checking FNDSM Status ScriptStarting, Stopping, and Checking Concurrent Managers (CM) in Oracle EBS R12
Before managing the Concurrent Manager (CM) service, ensure the environment file is sourced.
- In R12.2, the default environment file is EBSapps.env, which should be set to the Run Edition.
a) Start Concurrent Manager in R12
- Log in as the Application Tier user ( typically
applmgr
). - Navigate to the admin scripts directory
- cd $ADMIN_SRCIPTS_HOME
- Execute the following command to start the Concurrent Manager:
- ./adcmctl.sh start apps/
b) Stop Concurrent Manager in R12
- Log in as the Application Tier user (typically applmgr).
- Navigate to the admin scripts directory:
- cd $ADMIN_SRCIPTS_HOME
- Execute the following command to stop the Concurrent Manager
- adcmctl.sh stop apps/<appspwd>
How to check Concurrent Manager Status?
- Log in as the Application Tier user (typically applmgr).
- Navigate to the admin scripts directory:
- cd $ADMIN_SRCIPTS_HOME
- ./adcmctl.sh status apps/<appspwd>
[applmgr@devebs]$ adcmctl.sh status apps/<appspwd>
You are running adcmctl.sh version 120.19.12020000.7
Internal Concurrent Manager is Active.
adcmctl.sh: exiting with status 0
adcmctl.sh: check the logfile /app02/appl/fs2/inst/apps/devebs/logs/appl/admin/log/adcmctl.txt for more information ...
How to check Concurrent Manager StatusConcurrent Manager Tables in Oracle Apps R12
Understanding the key tables related to Concurrent Managers is crucial for troubleshooting and optimizing performance. Below is an overview of the primary tables associated with Concurrent Managers in R12:
1. FND_CONCURRENT_PROCESSES
- Stores information about concurrent managers.
- Identifies the associated UNIX and Oracle processes for each manager.
- Provides the log file paths linked to each manager.
- Useful for monitoring and troubleshooting manager performance or identifying specific process details.
2. FND_CONCURRENT_REQUESTS
- This table acts as the primary table for job submissions.
- Managers query this table to process jobs.
- New job submissions are inserted here.
- Table size can grow significantly, potentially impacting performance.
- Oracle provides cleanup scripts to manage and purge obsolete data.
3. FND_CONCURRENT_QUEUES
- Contains definitions for concurrent queues, which manage job prioritization and routing.
- Helps configure queue attributes, such as specialization rules and conflict domains.
- Critical for fine-tuning how jobs are distributed among managers.
4. FND_CONCURRENT_PROGRAMS
- Maintains metadata about all concurrent programs.
- Includes the program name, description, and associated attributes.
- Tracks execution methods(EXECUTION_METHOD_CODE) such as PL/SQL, Host, or Java.
- Records argument handling(ARGUMENT_METHOD_CODE) and queue constraints QUEUE_METHOD_CODE.
- Vital for understanding program behavior, especially when debugging or defining custom concurrent programs.
Recommendations for Technical Management:
- Regularly monitor the FND_CONCURRENT_REQUESTS table to identify potential bottlenecks.
- Use predefined cleanup scripts to maintain table performance.
- Ensure proper configuration of queues in FND_CONCURRENT_QUEUES to optimize manager utilization.
- Audit FND_CONCURRENT_PROCESSES and associated logs for any anomalies or errors.
Concurrent Manager Scripts in Oracle Apps R12
Concurrent Manager scripts are essential for maintaining a healthy and efficient Concurrent Manager environment. Regularly monitoring with these tools helps identify and resolve performance bottlenecks, diagnose system issues, and optimize request processing in Oracle E-Business Suite.
Oracle provides a set of valuable scripts, located in the $FND_TOP/sql directory, for effectively monitoring and managing concurrent managers. These scripts offer detailed insights into manager status, request processing, and system diagnostics:
- afcmstat.sql:
Displays all defined concurrent managers, their maximum processing capacity, process IDs (PIDs), and current status. - afimchk.sql:
Checks the status of the Internal Concurrent Manager (ICM), the PMON method in use, and the ICM log file. Determines if the Concurrent Manager Monitor is actively running. - afcmcreq.sql:
Identifies the concurrent manager responsible for processing a specific request and provides the name of its log file. - afrqwait.sql:
Lists concurrent requests that are in pending, held, or scheduled status. - afrqstat.sql:
Summarizes the execution time and status of concurrent requests since a specified date. - afqpmrid.sql
Retrieves the operating system process ID (PID) of the FNDLIBR process corresponding to a given concurrent request ID. This PID can be used for advanced debugging with the ORADEBUG utility. - afimlock.sql:
Provides details about processes causing potential locks, including the process ID, terminal, and Oracle process details. Particularly useful for diagnosing delays in job submissions or gridlocks involving the ICM and CRM.
How to Create a Custom Concurrent Manager in Oracle E-Business Suite
Creating a custom concurrent manager in Oracle EBS allows you to define specialized managers for handling specific concurrent requests. Below is a step-by-step guide to creating a custom concurrent manager:
Step 1: Define the WorkShifts
- Navigate to System Administrator Responsibility → Concurrent → Manager → WorkShifts.
- Create a work shift for your custom manager.
- Shift Name: Provide a unique name.
- From Time/To Time: Define the hours during which the manager will be active.
- From Day/To Day: Mention the from day and to day during which the manager will be active.
- Date:Leave the Date blank for indefinite use.
- Save the work shift.
Step 2: Define a Custom Concurrent Manager
Navigate to System Administrator Responsibility → Concurrent → Manager → Define.
Create a new concurrent manager:
- Manager Name: Enter a unique name for the custom manager.
- Short Name: Provide a short name for internal reference.
- Description: Add a description for clarity.
- Work Shifts: Attach the work shift created in Step 1.
- Target Processes: Specify the number of target processes (e.g., the number of parallel requests the manager will process).
- Cache Size: Set the cache size (the number of requests to cache).
Save the concurrent manager.
Step 3: Specialization Rules (Optional)
- Navigate to System Administrator Responsibility → Concurrent → Manager → Rule.
- Assign specific programs or request types to the custom manager:
- Name the Combined Rule (Specification Rule)
- Application Name
- Define rules to include or exclude certain programs or types of requests.
- Save the rules.
Concurrent Manager Useful SQL Queries
Query to check which manager is going to execute a program
SELECT user_concurrent_program_name,
user_concurrent_queue_name
FROM fnd_concurrent_programs_vl fcpv,
fnd_concurrent_queue_content fcqc,
fnd_concurrent_queues_vl fcqv
WHERE fcqc.type_application_id(+) = fcpv.application_id
AND fcqc.type_id(+) = fcpv.concurrent_program_id
AND fcqc.type_code(+) = 'P'
AND fcqc.include_flag(+) = 'I'
AND fcpv.user_concurrent_program_name =
'p_concurrent_program_name'
AND NVL (fcqc.concurrent_queue_id, 0)= fcqv.concurrent_queue_id
AND NVL (fcqc.queue_application_id, 0) = fcqv.application_id
SQL to check which manager is going to execute a program