DbaNotePad

Oracle APPS DBA Blog

R12: What Is the OAFM JVM Process

Posted by dbanotepad on April 9, 2010

R12: What Is the OAFM JVM Process Used For?

When running adopmnctl.sh status you notice a java process-type named “OC4J-oafm”. When running adstrtal.sh you may observe that file adoafmctl.sh is called to What is this OAFM Java Virtual Machine? What is it used for, can it be turned off, and how is it scaled.

Solution

OAFM is short for “Oracle Applications Fusion Middleware”, however this doesn’t best describe what the JVM is currently used for.

More specifically the OAFM JVM is used for Map Viewer applications, Oracle Transport Agent XML transactions, and Web Services.

There are 2 applications in Release 12 that use Map Viewer, these are:

Field Service and Transportation Planning

You may be wasting resources on your server by starting the OAFM JVM’s if your not using Field Service, Transportation Planning, XML Gateway or Web services. If you are not using these products (see SQL query below) you may be able to safely disable the OAFM JVM. You can follow the steps below to stop the JVM from starting when running adstrtal.sh

1. Stop the OAFM JVM via adoafmctl.sh stop

2. Edit context via the context editor and change s_oafmstatus  to disabled

3. Run Autoconfig

Now when adstrtal.sh is run the adoafmctl.sh script will not be called and thus OAFM processes will not start. If you have more than one application tier please perform the actions above on all application tiers.

If you are using Field Service and/or Transportation Planning a good rule of thumb would be to have 1 OAFM jvm per 80-100 active Map Viewer users. Map data generally is quite large in size so stick to the lower end of the scale….80 users per JVM.

To adjust the number of OAFM JVMs edit context via the context editor and change s_oafm_nprocs to the number of JVMs required per node. Now run Autoconfig to propagate the change. Repeat the steps for each application tier.

Script to check if OAFM apps are being used (not a complete list, doesn’t include web services)

select fa.APPLICATION_SHORT_NAME, fpi.PATCH_LEVEL, DECODE(fpi.STATUS, ‘I’,’Installed’,
‘S’,’Shared’, ‘N’, ‘Inactive’, fpi.STATUS) Status , fpi.DB_STATUS
from fnd_product_installations fpi,FND_APPLICATION fa
where fpi.APPLICATION_ID in (
select APPLICATION_ID from FND_APPLICATION where APPLICATION_SHORT_NAME in (‘CSKF’,’MST’,’ECX’))
and fa.APPLICATION_ID=fpi.APPLICATION_ID;
where the status is like:
I= ‘Installed’
N=’Inactive’ – product is not fully implemented and not used.
S=’Shared’ are not fully implemented and patching these products isn’t required.

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: