#@#@#@!!!!!!

As technical consultant, I learn new stuff everyday. My goal here to collect those day-to-day findings and organized them for future reference.

#@#@#@!!!!!!

Thursday, July 06, 2006

Why doesn't the "Launch Diagnostic" button work in 11.5.10 (OAM 2.3.1)?

Why doesn't the "Launch Diagnostic" button (on the Diagnostics page of the Applications Dashboard of Applications Manager) work in 11.5.10 (OAM 2.3.1)?


Make sure that the DISPLAY is set in jserv.properties to a valid and running X-Server. Apache needs to be restarted after changing the configuration (e.g. modifying jserv.properties, starting X-Server, using "xhost +" etc.). If the X-Server works properly then the buttons will appear as generated images instead of gray squares.

How to add Read only account for OAM?

How to add Read only account for OAM?

Verify you have OAM Patch 2.1.1 or higher

select * from ad_bugs where bug_number in ('2600516')


These Oracle Applications responsibilities for OAM are:

System Administrator - this responsibility has access to all functionality in OAM.

OAM Read Only Mode - this responsibility provides administrators with view-only access to most of the data in OAM. This

responsibility does not provide access to critical actions such as Stop Services and Edit Configuration Parameters.

OAM Patch History - administrators with this responsibility can view the Applications Dashboard and Patch History pages.

Note: when an administrator is assigned more than one of the above responsibilities, the access mode is assigned according

to the highest access, as listed above. For example, if an administrator is assigned the System Administrator responsibility

and either OAM Read Only Mode or OAM Patch History, that administrator has access to all functionality in OAM. If an

administrator is assigned the responsibilities OAM Read Only Mode and OAM Patch History, the OAM Read Only Mode

responsibility takes precedence

Create a application user and assigned it OAM Read only mode responsibility.

Wednesday, July 05, 2006

How to Determining the Current Version of Oracle HTTP Server?

How to Determining the Current Version of Oracle HTTP Server?

To determine the version of the Oracle HTTP Server, either consult the Oracle Installer inventory or run the following commands:

On Unix, before iAS 1.0.2.2:
% cd /Apache/Apache/bin
% ./httpds -v
Server version: Apache/1.3.9 (Unix)
OR
Server version: Apache/1.3.12 (Unix)

On Unix, with iAS 1.0.2.2:
% cd /Apache/Apache/bin
% ./httpd -v
Server version: Oracle HTTP Server Powered by Apache/1.3.19 (Unix)

Tuesday, July 04, 2006

How To Determine The Version Of OAM (Oracle Application Manager)?

How To Determine The Version Of OAM (Oracle Application Manager)?

1. Login to OAM
2. Navigate to Site Map > Others > Applications Manager Log
3. Find the version in the upper left corner


If the above navigation path is not available in OAM or you are unable to
login to OAM, use the following steps to check the version of OAM:


Unix
----
$ cd $JAVA_TOP

$ ident $JAVA_TOP/fndoam.zip | grep Header

OR

$ strings -a fndoam.zip | grep Header


fndoam.zip 115.26 and below -- OAM 2.0
fndoam.zip 115.27 -- OAM 2.1
fndoam.zip 115.34 -- OAM 2.1.1
fndoam.zip 115.75 -- OAM 2.2
fndoam.zip 115.75.x.x -- OAM 2.3
fndoam.zip 115.76 -- OAM 2.3.1


The last entry should have something like ...
$Header: fndoam.zip 115.27 2002/04/18 09:41:37 pkm ship

Here is an example

ceapiapp$
ceapiapp$
ceapiapp$ cd $JAVA_TOP
ceapiapp$ strings -a fndoam.zip |grep Header
$Header: fndoam.zip 115.76 2003/11/13 16:57 ppradhan noship $
ceapiapp$

Ref : metalink Doc ID 214962.1

Monday, July 03, 2006

How to fix invalid objects in EBS

To get a quick count of the number of existing invalids (if any), use the
following select statement:

SELECT COUNT(*)
FROM DBA_OBJECTS
WHERE STATUS = 'INVALID';

For a more detailed query, use the following script:

SELECT OWNER, OBJECT_TYPE, COUNT(*)
FROM DBA_OBJECTS
WHERE STATUS = 'INVALID'
GROUP BY OWNER, OBJECT_TYPE;

To recompile an individual object, connect to SQL*PLUS as the owner of the
object (generally apps). Use one of the following depending on the object
type:

SQL> alter package compile; (package
specification)
SQL> alter package compile body; (package
body)
SQL> alter view compile; (view)

If the object compiles with warnings, use either of the following to see
the errors that caused the warnings:

SQL> show errors
or
SQL> select * from user_errors where name = '';

Another way to correct invalid objects is to run the adadmin utility as
follows:

UNIX OPERATING PLATFORM
-----------------------
a. Log in as applmgr: /
b. Start the utility from the Unix prompt with this command:

$ adadmin

The utility will then ask you a series of questions.

c. Under the Maintain Applications Database Objects Menu,
select Compile APPS schema(s)

This task spawns parallel workers to compile invalid database objects in
your APPS schema(s). It uses the same parallel phases as AutoInstall.


c. Under the Maintain Applications Database Objects Menu,
select Compile APPS schema(s)



=================
Within Applications, there is a script to compile INVALID objects - called
ADCOMPSC.pls

Arguments for ADCOMPSC.pls:
1 - Schema to run in
2 - Password for schema
3 - Check errors for objects starting with #3

NOTE: The order in which to compile Invalid Objects in schemas is
SYS, SYSTEM, APPS and then all others. APPS_DDL and APPS_ARRAY_DDL
should exist in all schema's. In case of an ORA-1555 error
while running adcompsc.pls, restart the script.

The script can be run as follows:

cd $AD_TOP/sql
sqlplus @adcompsc.pls SCHEMA_NAME SCHEMA_PASSWORD %

Example: SQL> @adcompsc.pls apps apps %

After the script completes, check for invalid objects again. If the number
has decreased, but invalid objects still exist, run adcompsc.pls again.
Keep running adcompsc.pls until number of invalid objects stops decreasing.

If there are any objects still left INVALID, verify them by using derrchk.
sql to record the remaining INVALID objects. Aderrchk.sql use the same syntax
as adcompsc.pls. This script is also supplied with the Applications.

Send the aderrchk.sql to a file using the spool command in
sqlplus.

e.g. sqlplus x/y @aderrchk.sql SCHEMA_NAME SCHEMA_PASSWORD %

For objects will not compile, try the following:

select text
from user_source
where name = 'OBJECTNAME'
and text like '%Header%';

This script will provide the sql that creates the packages > recreate
the packages.

SQL>@packageheader
SQL>@packagebody

If recreating the package does not make the package valid, analyze the
user_errors table to determine the cause of the invalid package.

select text
from user_errors
where name = 'PACKAGENAME';

=================

For most the application there is a script for compiling invalid objects and nice report on pre and post invalid objects
for example $CZ_TOP/patch/115/sql
the scrept czclnup11.sql

output will looks like

Objects that are still invalid:
-------------------------------
PACKAGE BODY : CZ_IMP_SINGLE_DEBUG
PACKAGE BODY : CZ_RUNTIME
PACKAGE BODY : CZ_UIOA_PVT


===================


Metalink DOC
Step by Step Troubleshooting Guide to Solve APPS Invalid Objects 113947.1
Resolving Invalid Objects in Oracle Applications 74660.1

Upgrading Applications 11.5.7 Database To 9i Generates 400+ Invalid Objects

Too Many Invalid objects in EBS database

As Oracle account login on database server.
       % sqlplus apps/ 
         spool invalid_object_before_phase2.1.out
         select count(*) from dba_objects where status <> ‘VALID’;
         select owner, object_name 
         from dba_objects where status <> ‘VALID’;
         spool off
 
If the count of above query is in hundreds You need to perform following steps
during the Production down time.
Ref : Metalink note*:239016.1
Please validate following events are listed in database init file.
If the following events missing please add those with detail comments as follow.
 
########
#
# Events
#
# Events are used by Oracle Support and Development. They should only be
# set as requested.
#
# The following events are required for backward compatibility.
#
# They must be set for Oracle Applications release 11.5.7.
# For all other certified releases ( 11.5.8 and above ), they
# are not required and should be either commented out or removed
# from the init.ora file.
#
########
event="10932 trace name context level 32768"
event="10943 trace name context level 16384"
event="10933 trace name context level 512"
Make sure you are in downtime window and All Application process are down
including Concurrent manager.
To make above init files changes to take effect, restart the database. 
Verify the database started with above events by performing following check. 

  • check alert.log
  • run show parameter 
From database node as applmgr account Run 
         adadmin
 The utility will then ask you a series of questions.
 Under the Maintain Applications Database Objects Menu, 
 select Compile APPS schema(s)
 exit out from adadmin
 
NOTE : This was only when you are EBS 11.5.7 and Oracle 9i.
Read my previous blog where I had ISSUE due to the trace event are not removed after 11.5.10 upgrade

Saturday, July 01, 2006

Concurrent manager Basic :Where is log and out files ?

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
Note that $APPLCSF must be a full, absolute path, and the other two are
directory names.
If $APPLCSF is not set, it places the files under the product top of the application associated with the request. So for example, a PO report would go under $PO_TOP/$APPLLOG and $PO_TOP/$APPLOUT
Logfiles go to: /u01/appl/po/9.0/log
Output files to: /u01/appl/po/9.0/out
Of course, all these directories must exist and have the correct permissions.
Note that all concurrent requests produce a log file, but not necessarily an output file

Concurrent Manager : troubleshooting

Summary of Possible Reasons and Solutions for the Problem Where All Concurrent Requests Stuck in Pending Phase


Below are several different possible solutions to the problem where concurrent
requests are stuck in pending status:

1. When shutting down the concurrent manager are there any FNDLIBR processes still running at the OS level? If so, do a kill -9 on them. Then restart the concurrent manager.

2. Try Relinking $FND_TOP.

3. Rebuild the concurrent manager views. As applmgr run the following from
the OS:

This is non-destructive. Concurrent Manager views can be rebuild by running the following command at the command line:

Ensure that concurrent manager is shutdown.

FNDLIBR FND FNDCPBWV apps/apps SYSADMIN 'System Administrator' SYSADMIN

restart the concurrent mgr.

4. Another possibility is that the Profile Option "Concurrent: OPS Request Partitioning" is set to OFF (by default). Unless Concurrent OPS is being used, the setting for this profile option should be NULL.

5. Yet another possibility is that System Profile Option: Concurrent Active
Requests is set to 0.


1. Log into Oracle Applications as SYSADMIN.
2. Select System Administrator responsibility.
3. Navigate to PROFILE --> SYSTEM.
4. Query for %CONC%ACTIVE%.
5. Change the profile option for Concurrent: Active Request Limit to Null (blank).
6. Exit Oracle Applications and log in again for the change to take affect.
7. Run a new concurrent request.


6. Another possibility is that Concurrent managers were brought down, while an
outstanding request was still running in the background. In which case, Update
the FND_CONCURRENT_REQUESTS table as follows:
.
sql> update fnd_concurrent_requests
set status_code='X', phase_code='C'
where status_code='T';
sql> commit;

7. The control_code for concurrent_queue_name = 'FNDCRM' is 'N' in the FND_CONCURRENT_QUEUES table, which means 'Target node/queue unavailable'. This value should be NULL (CRM is running; target and actual process amount are the same), or 'A' ('Activate concurrent manager' control status).

Set the control_code to 'A' in fnd_concurrent_queues for the Conflict Resolution Manager:

1. Logon to Oracle Applications database server as 'applmgr'.
2. Verify the Applications environment is setup correctly ($ORACLE_HOME and $ORACLE_SID).

3. Logon to SQL*Plus as 'APPS' and run the following SQL statement:

update fnd_concurrent_queues
set control_code = 'A'
where concurrent_queue_name = 'FNDCRM';

commit;

4. Verify the status of the concurrent managers through the
Concurrent -> Manager -> Administer form.

If the CRM is still not active, bounce (deactivate, activate) the Internal Concurrent Manager. This is done through the Concurrent -> Manager ->

Administer form from the 'System Administrator' responsibility. It can also be done through the CONCSUB command at the command level.

Setting the control_code to 'A' in the fnd_concurrent_queues table for the Conflict Resolution Manager indicates that this concurrent manager is to be activated with the parameter values specified through this table for this manager (MAX_PROCESSES, CACHE_SIZE, etc).

8. What is the cache size? Try increasing it then bounce the concurrent manager.

If concurrent requests are rarely prioritized and there are managers that service short-running requests, consider setting the cache size to equal at least twice the number of target processes. This increases the throughput of the concurrent manaagers by attempting to avoid any sleep time. For example, if more than one manager or worker processes the same type of requests with only a small cache size, it may be unable to process any jobs in a single processing cycle, because other processes have already run the cached requests. When this happens, it is important to note that the manager will sleep before refreshign its cache. To increase manager throughput where there are sufficient requests of the required type in the queue, increase the cache size to improve the chance of the manager finding work to process and thus avoid having to enter a sleep phase.

TIP: Ensure that the system is not resource-constrained before attempting to increase the rate of concurrent processing in this way; otherwise, these changes may actually reduce concurrent processing throughput because jobs take longer to run..

Enter the number of requests your manager remembers each time it reads which requests to run. For example, if a manager's workshift has 1 target process and a cache value of 3, it will read three requests,, and will wait until these three requests have been run before reading new requests.

In reading requests, the manager will only put requests it is allowed to run into its cache. For example, if you have defined your manager to run only Order Entry reports then the manager will put only Order Entry requests into its cache.

If you enter 1, the concurrent manager must look at its requests list each time it is ready to process another request. By setting the cache size at a higher number, the concurrent manager does not have to read its requests list each time it runs a request. However, the manager does not recognizea nay priority changes you make for a particular request if it has already read that request into its cache. Further, even if you give a higher priority to a new request, that new request must wait until the buffer isempty and the manager returns to look at the requests list. That request may have to wait a long time if you set the buffer size to a high number.

You should use cache size to tune your concurrent managers to work most efficiently for you site's needs. If your organization tends to reprioritize jobs going to a certain manager, that manager should have its buffer size set fairly low.

*Suggestion: *Enter a value of 1 when defining a manager that runs long, time-consuming jobs, and a value of 3 or 4 for managers that run small, quick jobs.



9. Please check the sleep seconds set for the concurrent manager which runs the report that is taking long time for completion. Reducing the sleep time will improve performance.

1. Check for the value set for the sleep seconds for the concurrent manager using the following path: System Administrator Responsibilty -> Concurrent -> Manager -> Define.

2. Check the processes running for the concurent manager using the following command:

ps -ef | grep 'INVLIBR'

As all concurrent programs are dealt by INVLIBR, the number of processes returned here must tally with the value specified for the processes defined for the concurrent manager.

3. Also, check for the duration for which the processes are sleeping. Reducing the value assigned for it would improve performance.

As a workaround to improve performance, you could change the priority of concurent request.

Explanation
-----------
The sleep state would be assigned to some tasks when the program running it has to handle more tasks than it has been configured to process. For example, if the number of processes has been defined as say 10, then at any point of time there is a provision to run 10 tasks. Now say, 12 tasks arrive for the program, then time slots are alloted for 10 and the rest 2 are put to sleep. So, if the concurrent program running the problem report is handling larger number of processes the sleep and run behaviour can be observed.