Skip to main content

PCP -- Parallel Concurrent Processing

I often get queries about PCP(Parallel Concurrent Processing) and its configuration. I will try to include all such details in this blog which will help configure PCP step by step.

PCP makes sense on a RAC environment else there is no point having PCP atleast for me.

POINT1: Check if you require PCP to load balance or to be used as failover.

If both the nodes then, Change the names of the concurrent managers say SM:Node A and Assign PRIMARY and SECONDARY Nodes to that manager.

Then duplicate the record and change the name to SM:Node B for the 2nd manager and change the PRIMARY and SECONDARY Nodes
Note: Ensure the hostname should be only the name of the host from uname -a command, not the virtual hostname.

Do it for all the managers in the instance including tx mgr, internal mgr EXCEPT Internal Monitor.

Following configuration details are from metalink document 362135.1 section 3.12.

Check PCP Prerequisites

It is assumed that you have more than one Concurrent processing tiers in your environment to setup PCP. If you do not have this refer to OracleMetaLink Note: 230672.1 for cloning of Applications tier.

Set Up PCP

1. Execute AutoConfig by using $COMMON_TOP/admin/scripts// on all concurrent nodes.
2. Source the application environment by using $APPL_TOP/APPSORA.env
3. Check the configuration files tnsnames.ora and listener.ora located under 8.0.6 ORACLE_HOME at $ORACLE_HOME

/network/admin/. Ensure that you have information of all the other concurrent nodes for FNDSM and FNDFS entries.
4. Restart the application listener processes on each application node.
5. Logon to Oracle E-Business Suite 11i Applications using SYSADMIN in login and System Administrator Responsibility.

Navigate to Install > Nodes screen and ensure that each node in the cluster is registered.
6. Verify whether the Internal Monitor for each node is defined properly with correct primary and secondary node

specification and work shift details. Also make sure the Internal Monitor manager is activated by going into Concurrent ->

Manager -> Administrator and activate the manager.
(e.g. Internal Monitor: Host2 must have primary node as host2 and secondary node as host3)
7. Set the $APPLCSF environment variable on all the CP nodes pointing to a log directory on a shared file system.
8. Set the $APPLPTMP environment variable on all the CP nodes to the value of the UTL_FILE_DIR entry in init.ora on the

database nodes. This value should be pointing to a directory on a shared file system.
9. Set profile option ' Concurrent: PCP Instance Check' to OFF if DB instance sensitive failover is not required. By setting

it to 'ON' Concurrent Managers will failover to a secondary middle-tier node when database instance it is connected goes down.

Set Up Transaction Managers

1. Shut down the application tiers on all the nodes.
2. Shut down all the database instances cleanly in RAC environment using
SQL>shutdown immediate;
3. Edit $ORACLE_HOME/dbs/_ifile.ora. Add the following parameters:
* _lm_global_posts=TRUE
* _immediate_commit_propagation=TRUE
4. Start the instances on the database nodes, one by one.
5. Start up the Application tier on all the nodes.
6. Log on to Oracle E-Business Suite 11i Applications using SYSADMIN in login and System Administrator Responsibility.
Navigate to Profile > System and change the profile option ‘Concurrent: TM Transport Type' to ‘QUEUE' and verify the

transaction manager works across the RAC instance.
7. Navigate to Concurrent > Manager > Define screen, and set up the primary and secondary node names for transaction

8. Restart the concurrent managers.

Load Balance the Concurrent Processing Tiers

1. Create a load balancing alias similar to _806_balance as shown sample in
Appendix C.
2. Edit the applications context file through Oracle Applications Manager interface and set the value of Concurrent Manager

TWO_TASK to load balancing alias created in previous step.
3. Execute AutoConfig by using $COMMON_TOP/admin/scripts// on all concurrent nodes.

Appendix C: Example for Concurrent Processing Tiers

Sample for Concurrent Processing Tiers


Check test case below:

1. All tnsnames.ora files in the $TNS_ADMIN(806)_HOME's and IAS_ORACLE_HOME/network/admin/ should be identical.

2. The following is an example:

(ADDRESS = (PROTOCOL = TCP)(PORT = 1521)(HOST = hostname1))
(ADDRESS = (PROTOCOL = TCP)(PORT = 1521)(HOST = hostname2))

(ADDRESS=(PROTOCOL=tcp)(HOST= hostname1)(PORT=1521))

(ADDRESS=(PROTOCOL=tcp)(HOST= p201)(PORT=1521))

3. DEV is your service_name alias defined for the RAC environment.
DEV1 and DEV2 are the actual database instances. The value of INSTANCE_NAME correlates to the value of INSTANCE_NAME defined in the database init.ora files.

4. For the alias DEV, the hostname definitions need to be ordered by local host.
In the above example, this entry would exist for the tnsnames.ora for hostname1.
For the tnsnames.ora on hostname2, the entry would look like:

(ADDRESS = (PROTOCOL = TCP)(PORT = 1521)(HOST = hostname2))
(ADDRESS = (PROTOCOL = TCP)(PORT = 1521)(HOST = hostname1))

5. Please ensure that parameter name INSTANCE_NAME is used instead of SID.
INSTANCE_NAME is what is recognized in the 11i RAC environment. SID value definition seems to cause problems with how the

database connection is being recognized when one of the database is shutdown.

6. After these settings start up all database instances. Make the following connections from all host machines in the 11i

Applications environment:

a. apps/@dev
b. apps/@dev1
c. apps/@dev2

NOTE: If you setup autoconfig then you do not have to manually edit 806 tnsnames. Follow metlaink doc 362135.1 section 3.11

Establish Applications Environment for RAC


Anonymous said…
Sorry for my bad english. Thank you so much for your good post. Your post helped me in my college assignment, If you can provide me more details please email me.
Mithun Ashok said…

Thanks for your response. Please let me know your email and your query, will try to help you out with your query.

Popular posts from this blog

Basics of RDBMS

Data Small set of information becomes data, this set of information helps make decision. Data is always some useful information. Database Place where you store the data. Database represents some aspect of the real world called "miniworld". A database is designed, built and populated with data for a specific purpose. It has intended group of users and some preconceived applications in which these users are interested. In other words, a database has some source from which data is derived, some degree of interaction with events in the real world and an audience that is actively interested in the contents of the database. Database can also be defined as collection of one or more tables. Ex: Mobile, human brain etc DBMS (Database Management System ) Is a program that stores retrieves and modifies data in the database on request. Study of different techniques of design, development and maintenance of the database Types of DBMS These types are based upon their m

SQL Interview Questions on Subqueries

SUB Queries: 1. List the employees working in research department 2. List employees who are located in New York and Chicago 3. Display the department name in which ANALYSTS are working 4. Display employees who are reporting to JONES 5. Display all the employees who are reporting to Jones Manager 6. Display all the managers in SALES and ACCOUNTING department 7. Display all the employee names in Research and Sales Department who are having at least 1 person reporting to them 8. Display all employees who do not have any reportees 9. List employees who are having at least 2 reporting 10. List the department names which are having more than 5 employees 11. List department name having at-least 3 salesman 12. List employees from research and accounting having at-least 2 reporting 13. Display second max salary 14. Display 4th max salary 15. Display 5th max salary  -- Answer for nth Max Salary Co-Related Subqueries: 16. Write a query to get 4th max salary from EMP table 17. Wri

Answers for SQL Functions

1. SQL> SELECT empno, ename FROM emp WHERE Length(ename) = 4; 2. SQL> SELECT empno, ename, job FROM emp where Length(job)=7; 3. SQL> SELECT Length('qspiders') - Length(replace('qspiders','s','')) FROM dual; 4. SQL>  SELECT empno, ename, job FROM emp WHERE Instr(job,'MAN') >0; 5. SQL> SELECT empno, ename, job FROM emp WHERE Instr(job, 'MAN') =1; 6. SQL> SELECT empno, ename, job FROM emp WHERE (Length(ename) - Length(Replace(ename, 'L',''))) = 1; 7. SQL> SELECT * FROM dept WHERE Instr(dname,'O') > 0; 8. SQL> SELECT Concat(ename,' working as a ') || Concat(job, ' earns ') || Concat(sal, '  in ') || Conc at('dept ',deptno) AS text from emp; OR SQL> SELECT Concat(Concat(Concat(Concat(Concat(Concat(Concat(ename,' working as a '), job),' earns '), sal),'  in '),'dept '), deptno) AS text FROM emp; 9. SQL