Troubleshooting the Self Service Framework with Oracle Applications (Doc ID 231137.1)
Showing posts with label EBS. Show all posts
Showing posts with label EBS. Show all posts
Sunday, May 7, 2017
Wednesday, November 9, 2016
ebs: Gather Statistics
In R11i/R12 customers should be using the FND_STATS command.
Do not use the ANALYZE command or DBMS_STATS package directly,
as doing so may cause incomplete statistics to be generated.
Use the following command to gather schema statistics:
exec fnd_stats.gather_schema_statistics('ALL') < For all schemas >
Use the following command for gathering statistics on a temporary table
(ie: temporary tablename = TEMP_tmp in schema ABC):
exec fnd_stats.gather_table_stats('ABC','TEMP_tmp');
Source:
Best Practices for Gathering Statistics with Oracle E-Business Suite (Doc ID 1586374.1)
Concurrent Processing - How To Gather Statistics On Oracle Applications Release 11i and/or Release 12 - Concurrent Process,Temp Tables, Manually (Doc ID 419728.1)
Tuesday, November 1, 2016
compiling a form in ebs R12.1.3
1) Remove or Rename the existing .fmb file under "$AU_TOP/forms/US"
2) Remove or Rename the existing .fmx file under corresponding $PROD_TOP/forms/US.
3) Copy the .fmb to "$AU_TOP/forms/US"
4) Compile the form
cd $AU_TOP/forms/US
frmcmp_batch userid=apps/apps module=$AU_TOP/forms/US/APxxxx.fmb output_file=$AP_TOP/forms/US/APxxxx.fmx module_type=form compile_all=special
5) Verify the file created under the $PROD_TOP/forms/US
Thursday, October 20, 2016
Security Best Practices for Release 12
Actually I was looking for ebs R12 - SEEDED APPLICATION USER ACCOUNTS, in the process I stumbled on this blog and which I think answered my queries.
https://blogs.oracle.com/stevenChan/entry/security_best_practices_for_re
Best Practices for Securing Oracle E-Business Suite Release 12 (Metalink Note 403537.1)
https://blogs.oracle.com/stevenChan/entry/security_best_practices_for_re
Best Practices for Securing Oracle E-Business Suite Release 12 (Metalink Note 403537.1)
Monday, April 18, 2016
Script to check and update Profile value in ebs R12
SELECT
substr(pro1.user_profile_option_name,1,35) Profile,
decode(pov.level_id,
10001,'Site',
10002,'Application',
10003,'Resp',
10004,'User') Option_Level,
decode(pov.level_id,
10001,'Site',
10002,appl.application_short_name,
10003,resp.responsibility_name,
10004,u.user_name) Level_Value,
nvl(pov.profile_option_value,'Is Null') Profile_option_Value
FROM
fnd_profile_option_values pov,
fnd_responsibility_tl resp,
fnd_application appl,
fnd_user u,
fnd_profile_options pro,
fnd_profile_options_tl pro1
WHERE
upper(pro1.user_profile_option_name) like upper('%&profile%')
and pro.profile_option_name = pro1.profile_option_name
and pro.profile_option_id = pov.profile_option_id
--and resp.responsibility_name like '%General%Ledger%' /* comment this line if you need to check profiles for all responsibilities */
and pov.level_value = resp.responsibility_id (+)
and pov.level_value = appl.application_id (+)
and pov.level_value = u.user_id (+)
order by 1,2;
************************************
1. Run this sql query to check the value of the profile option at all levels:
set serveroutput on
set echo on
set timing on
set feedback on
set long 10000
set linesize 120
set pagesize 132
column SHORT_NAME format A30
column NAME format A40
column LEVEL_SET format a15
column CONTEXT format a30
column VALUE format A60 wrap
select p.profile_option_name SHORT_NAME,
n.user_profile_option_name NAME,
decode(v.level_id,
10001, 'Site',
10002, 'Application',
10003, 'Responsibility',
10004, 'User',
10005, 'Server',
10007, 'SERVRESP',
'UnDef') LEVEL_SET,
decode(to_char(v.level_id),
'10001', '',
'10002', app.application_short_name,
'10003', rsp.responsibility_key,
'10005', svr.node_name,
'10006', org.name,
'10004', usr.user_name,
'10007', 'Serv/resp',
'UnDef') "CONTEXT",
v.profile_option_value VALUE
from fnd_profile_options p,
fnd_profile_option_values v,
fnd_profile_options_tl n,
fnd_user usr,
fnd_application app,
fnd_responsibility rsp,
fnd_nodes svr,
hr_operating_units org
where p.profile_option_id = v.profile_option_id (+)
and p.profile_option_name = n.profile_option_name
and upper(p.profile_option_name) like '%FND_INIT_SQL%'
and usr.user_id (+) = v.level_value
and rsp.application_id (+) = v.level_value_application_id
and rsp.responsibility_id (+) = v.level_value
and app.application_id (+) = v.level_value
and svr.node_id (+) = v.level_value
and org.organization_id (+) = v.level_value
order by short_name, level_set;
2. One can also run this sql statement if one is sure to have updated the profile option at Site level only:
SELECT val.level_id, val.level_value, val.profile_option_id, val.profile_option_value
FROM fnd_profile_options opt, fnd_profile_option_values val
WHERE opt.profile_option_name = 'FND_INIT_SQL'
AND opt.profile_option_id = val.profile_option_id;
3. Update the profile option to a NULL value.
For instance if one just updated the same at site level one should run (as APPS user):
Instead of that use this PROCEDURE below:
set serveroutput on;
DECLARE
stat boolean;
BEGIN
dbms_output.disable;
dbms_output.enable(100000);
stat := FND_PROFILE.SAVE('GUEST_USER_PWD', 'GUEST/ORACLE', 'SITE');
IF stat THEN
dbms_output.put_line( 'Stat = TRUE - profile updated' );
ELSE
dbms_output.put_line( 'Stat = FALSE - profile NOT updated' );
END IF;
commit;
END;
Monday, February 1, 2016
Clonning R12.1.3 Instance
Cloning Oracle Applications Release 12 with Rapid Clone (Doc ID 406982.1)
Troubleshooting RapidClone issues with Oracle Applications R12.0 & R12.1 (Doc ID 603104.1)
Troubleshooting RapidClone issues with Oracle Applications R12.0 & R12.1 (Doc ID 603104.1)
Tuesday, November 17, 2015
ORA-01017: invalid username/password; logon denied on oracle.apps.fnd.odf2.FndXdfCmp
Issue:
Invoking Utility FndXdfCmp ...
Class: oracle.apps.fnd.odf2.FndXdfCmp
Method: applyXDF
Arguments: system &systempwd &un_apps &pw_apps &jdbc_protocol &jdbc_db_addr type &fullpath_cz_patch/115/xdf_CZ_MODEL_NODE_OBJ_TYPE.xdf &fullpath_fnd_patch/115/xdf_xsl
Solution:
Patch 17839156 Gives Error ORA-01017: invalid username/password; logon denied on oracle.apps.fnd.odf2.FndXdfCmp (Doc ID 1623924.1)
SQL> alter system set sec_case_sensitive_logon=false;
Invoking Utility FndXdfCmp ...
Class: oracle.apps.fnd.odf2.FndXdfCmp
Method: applyXDF
Arguments: system &systempwd &un_apps &pw_apps &jdbc_protocol &jdbc_db_addr type &fullpath_cz_patch/115/xdf_CZ_MODEL_NODE_OBJ_TYPE.xdf &fullpath_fnd_patch/115/xdf_xsl
Solution:
Patch 17839156 Gives Error ORA-01017: invalid username/password; logon denied on oracle.apps.fnd.odf2.FndXdfCmp (Doc ID 1623924.1)
SQL> alter system set sec_case_sensitive_logon=false;
Monday, October 19, 2015
Enable Tracing in EBS: "Initialization SQL Statement – Custom"
A user event trace is very handy for tracing sql operations to debug various issues. The benefit of a user event trace is that it is linked to a specific user so that only code run by this user is traced. This makes diagnosis easier when compared to similar tracing methods at the database level where all user calls are traced.
Step 1
Login to Oracle Applications and select the System Administrator responsibility.
Choose Profile - System
Step 2
In the find profile field select the user which you wish to trace. In the profile field enter 'Initialization SQL Statement - Custom"
Select find
Step 3
In the find profile results form copy and paste the following into the 'user' field. Do not update the site level field.
BEGIN FND_CTL.FND_SESS_CTL('','', '', 'TRUE','','ALTER SESSION SET TRACEFILE_IDENTIFIER='||''''||'USERID' ||''''||' EVENTS ='||''''||' 10046 TRACE NAME CONTEXT FOREVER, LEVEL 12 '||''''); END;
Note: copy and paste the above as one line. Failure to paste the values properly or pasting the values with incorrect syntax will result in this user not being able to login.
Step 4 (Optional)
Save the profile option change. Stop and start the java virtual machine for the change to take effect
11i: use adapcctl.sh
r12: use adoacorectl.sh
Step 5
Login to the application and reproduce the issue. Then quickly log off. Try and avoid any un-necessary keystrokes as this simply makes the log files larger and the issue hard to pinpoint in the logs.
Step 6
login to unix/windows as the oracle user. Navigate to the user dump destination which us usually $ORACLE_HOME/admin/<context>/udump
You will see a series of trace files generated during the time of your issue reproduction. Tkprof all of the generated files and upload both the raw and tkprof files to your service request.
You can also check the user dump destination via the following:
sql> show parameter user_dump_dest;
Notes:
When using this profile, DO NOT turn trace on the menu, as doing so would actually turnoff Event 10046. Turning Event 10046 to any level, turns trace automatically.
Event 10046 level 1 is regular trace, level 4 is tracing with bind variables, level 8 is with database waits and level 12 with both,bind variables and database waits.
alter system set max_dump_file_size=UNLIMITED scope=both;
Step 1
Login to Oracle Applications and select the System Administrator responsibility.
Choose Profile - System
Step 2
In the find profile field select the user which you wish to trace. In the profile field enter 'Initialization SQL Statement - Custom"
Select find
Step 3
In the find profile results form copy and paste the following into the 'user' field. Do not update the site level field.
BEGIN FND_CTL.FND_SESS_CTL('','', '', 'TRUE','','ALTER SESSION SET TRACEFILE_IDENTIFIER='||''''||'USERID' ||''''||' EVENTS ='||''''||' 10046 TRACE NAME CONTEXT FOREVER, LEVEL 12 '||''''); END;
Note: copy and paste the above as one line. Failure to paste the values properly or pasting the values with incorrect syntax will result in this user not being able to login.
Step 4 (Optional)
Save the profile option change. Stop and start the java virtual machine for the change to take effect
11i: use adapcctl.sh
r12: use adoacorectl.sh
Step 5
Login to the application and reproduce the issue. Then quickly log off. Try and avoid any un-necessary keystrokes as this simply makes the log files larger and the issue hard to pinpoint in the logs.
Step 6
login to unix/windows as the oracle user. Navigate to the user dump destination which us usually $ORACLE_HOME/admin/<context>/udump
You will see a series of trace files generated during the time of your issue reproduction. Tkprof all of the generated files and upload both the raw and tkprof files to your service request.
You can also check the user dump destination via the following:
sql> show parameter user_dump_dest;
Notes:
When using this profile, DO NOT turn trace on the menu, as doing so would actually turnoff Event 10046. Turning Event 10046 to any level, turns trace automatically.
Event 10046 level 1 is regular trace, level 4 is tracing with bind variables, level 8 is with database waits and level 12 with both,bind variables and database waits.
alter system set max_dump_file_size=UNLIMITED scope=both;
Tuesday, June 2, 2015
Common Tracing Techniques in Oracle E-Business Applications
Source:
For example, the following is the navigation to enable trace in a form:
1. Goto the Oracle Applications
2. Login
3. Open the form where the error occurs but do not yet cause the error.
4. Enable SQL*Trace by choosing Help > Diagnostics > Trace > Trace with binds
5. A message appears indicating that the trace will be recorded
6. Note the file name and location of the file
7. Now reproduce the error.
8. Once the error occurs, disable trace as soon as possible.
9. Disable SQL*Trace by choosing Help > Diagnostics > Trace > Trace off
10. The same file name and location will be noted in case you need it again.
11. Retrieve the trace file from the DB(user_dump_dest).
For example, the following steps could be used.
1. Goto Sysadmin > Concurrent > Program > Define
2. Query the concurrent program
3. Check the trace box to enable trace
If you require bind variables for your trace file from a concurrent program, a more sophisticated method is required as noted below.
One can enable trace for all actions that a user takes by setting a profile option for the user. This will function when the user logs into the Oracle Applications forms or when logging into the Self Service Web Applications. This method uses an Event Trace.
The instructions for enabling the event trace follow:
1) First enable trace for a specific user:
- Bring up the Core application - System Administrator responsibility
- Move to Profile/System
- Check off the USER box - and enter your username that you are using when getting the error
- Search on the following profile option - 'Initialization SQL Statement - Custom'
Please set this at the user level with the following string:
BEGIN FND_CTL.FND_SESS_CTL('','', '', 'TRUE','','ALTER SESSION SET TRACEFILE_IDENTIFIER='||''''||'4269824.999' ||''''||' EVENTS ='||''''||' 10046 TRACE NAME CONTEXT FOREVER, LEVEL 12 '||''''); END;
This must be one complete line of text - so may be best to copy the string into notepad prior to putting it into the profile.
2) Once the profile is set, please change responsibilities and directly go and reproduce the problem.
To locate the trace file, use the following sql in sqlplus:
SQL> select name, value from v$parameter where name like 'user_dump_dest';
- The value is the location of the trace file on the database server.
- This is the trace file created - please tkprof and upload BOTH the raw and tkprof trace file to My Oracle Support.
3) Ensure that the profile option is unset before exiting the Application.
This is a very important step. If this is not unset, unnecessary trace files will be generated.
4) Note that a similar technique can be used for enabling trace with binds for a user in SQL*Plus. The commands would look like the following:
SQL> ALTER SESSION SET TRACEFILE_IDENTIFIER='577' EVENTS ='10046 TRACE NAME CONTEXT FOREVER, LEVEL 12';
SQL> select 'x' from dual; -- or any SQL that you want to trace
SQL> alter session set sql_trace = false;
alter system set max_dump_file_size = 'unlimited';
This will prevent trace being cutoff and not usable.
2.The profile FND: Diagnostics = Yes is required to have the Diagnostics button appear in Self Service menus.
1.IF setup for the first time, THEN exit and sign on again to the SSA
3.Click on Diagnostics button (In 12.2 - click the GEAR icon and choose Diagnostics)
1.Choose Set Trace Level from the drop down, the press Go
2.Choose the trace level - Trace with BINDS (or for performance issue, then Trace with Binds and Waits)
and press Save
3.A single trace number will be shown… This is NOT usually the trace that is needed.
4.As more steps are performed, more trace numbers will be written to this screen and they will be the ones that be for the functionality that is being tested
4.Perform the actions necessary in Self Service Applications - Note: Use the least number of steps possible!
5.Then click on Diagnostics button again
1.Choose Set Trace Level from the drop down, the press Go
2.Now there will be multiple trace file numbers showing on the screen.
3.Write down the trace numbers and then click Disable Trace and press Save (the number will disappear when you press Save)
6.Have the DBA retrieve the trace files from the user_dump_dest of the database.
1. Retrieve the trace file.
2. Issue a command like the following to create a TKPROF version of the trace file. The explain option will look to see how each query is handled by the database in terms of what tables and indexes are referenced.
$ tkprof sys=no explain=apps/
However, TKPROF does not take into account bind variables. Therefore, these are ignored in the output. When you need to analyze bind variables, consider using TraceAnalyzer.
A handy technique when trouble shooting performance issues is to use TKPROF to look at the longest running queries. Since trace files related to performance can be huge, one might spend hours looking through the results to find the queries causing the issue. If you sort the file by the longest running queries first, it makes it much easier to investigate. The following example sorts by longest running queries first with the sort options selected as "sort='(prsela,exeela,fchela)'" and limits the results to the "Top 10" long running queries with the "print=10" command:
$ tkprof sys=no explain=apps/ sort='(prsela,exeela,fchela)' print=10
of your employees. The employee id might be a variable that is changed before you run each SQL. This could be translated to the database as a bind variable so that the same SQL can be used each time but the correct variable can be substituted just before the SQL is run.
If someone requests that you enable bind variables for your trace file, this causes the database to document the substitution variables within the trace file as well as the SQL run. For example, we may see that a select statement ran against the employee table ten times, but without the binds, we would not know what employee was selected each time.
FAQ: Common Tracing Techniques in Oracle E-Business Applications 11i and R12 (Doc ID 296559.1)
Why Can't Users Enable Forms Trace in 12.1.3 ? (Doc ID 1223753.1)
FAQ - How to Use Debug Tools and Scripts for the VCP (aka APS) and EBS Applications (Doc ID 245974.1)
Enable trace in the Oracle Application forms.
One can enable trace through the forms by using the Help menu, choosing the diagnostics menu, trace and then selecting the appropriate trace for your needs. Most commonly if debugging an error, you should at least provide trace with binds. When debugging a performance issue, you may consider using trace with binds and waits.For example, the following is the navigation to enable trace in a form:
1. Goto the Oracle Applications
2. Login
3. Open the form where the error occurs but do not yet cause the error.
4. Enable SQL*Trace by choosing Help > Diagnostics > Trace > Trace with binds
5. A message appears indicating that the trace will be recorded
6. Note the file name and location of the file
7. Now reproduce the error.
8. Once the error occurs, disable trace as soon as possible.
9. Disable SQL*Trace by choosing Help > Diagnostics > Trace > Trace off
10. The same file name and location will be noted in case you need it again.
11. Retrieve the trace file from the DB(user_dump_dest).
Enable trace for a Concurrent Program.
Checkbox
With system administration privileges, a simple way to enable trace in a concurrent program is to review the concurrent program definition and select trace enabled. This will enable trace without binds for all users that run the program.For example, the following steps could be used.
1. Goto Sysadmin > Concurrent > Program > Define
2. Query the concurrent program
3. Check the trace box to enable trace
If you require bind variables for your trace file from a concurrent program, a more sophisticated method is required as noted below.
Debug Options Button! (Binds and Waits)
When submitting a concurrent program in R12.1 and higher, the concurrent program submission screen has a "Debug Options" button where you can enable trace. The button opens a window with various SQL Tracing options including Binds and Waits. The selection applies just to the current run of the program.Enable trace for ALL user actions
How does one enable trace for all actions that occur for a user?One can enable trace for all actions that a user takes by setting a profile option for the user. This will function when the user logs into the Oracle Applications forms or when logging into the Self Service Web Applications. This method uses an Event Trace.
The instructions for enabling the event trace follow:
1) First enable trace for a specific user:
- Bring up the Core application - System Administrator responsibility
- Move to Profile/System
- Check off the USER box - and enter your username that you are using when getting the error
- Search on the following profile option - 'Initialization SQL Statement - Custom'
Please set this at the user level with the following string:
BEGIN FND_CTL.FND_SESS_CTL('','', '', 'TRUE','','ALTER SESSION SET TRACEFILE_IDENTIFIER='||''''||'4269824.999' ||''''||' EVENTS ='||''''||' 10046 TRACE NAME CONTEXT FOREVER, LEVEL 12 '||''''); END;
This must be one complete line of text - so may be best to copy the string into notepad prior to putting it into the profile.
2) Once the profile is set, please change responsibilities and directly go and reproduce the problem.
To locate the trace file, use the following sql in sqlplus:
SQL> select name, value from v$parameter where name like 'user_dump_dest';
- The value is the location of the trace file on the database server.
- This is the trace file created - please tkprof and upload BOTH the raw and tkprof trace file to My Oracle Support.
3) Ensure that the profile option is unset before exiting the Application.
This is a very important step. If this is not unset, unnecessary trace files will be generated.
4) Note that a similar technique can be used for enabling trace with binds for a user in SQL*Plus. The commands would look like the following:
SQL> ALTER SESSION SET TRACEFILE_IDENTIFIER='577' EVENTS ='10046 TRACE NAME CONTEXT FOREVER, LEVEL 12';
SQL> select 'x' from dual; -- or any SQL that you want to trace
SQL> alter session set sql_trace = false;
How To Generate and Retrieve Trace Files for SSA (Self Service Applications)
1.Have DBA or someone with APPS access to SQL runalter system set max_dump_file_size = 'unlimited';
This will prevent trace being cutoff and not usable.
2.The profile FND: Diagnostics = Yes is required to have the Diagnostics button appear in Self Service menus.
1.IF setup for the first time, THEN exit and sign on again to the SSA
3.Click on Diagnostics button (In 12.2 - click the GEAR icon and choose Diagnostics)
1.Choose Set Trace Level from the drop down, the press Go
2.Choose the trace level - Trace with BINDS (or for performance issue, then Trace with Binds and Waits)
and press Save
3.A single trace number will be shown… This is NOT usually the trace that is needed.
4.As more steps are performed, more trace numbers will be written to this screen and they will be the ones that be for the functionality that is being tested
4.Perform the actions necessary in Self Service Applications - Note: Use the least number of steps possible!
5.Then click on Diagnostics button again
1.Choose Set Trace Level from the drop down, the press Go
2.Now there will be multiple trace file numbers showing on the screen.
3.Write down the trace numbers and then click Disable Trace and press Save (the number will disappear when you press Save)
6.Have the DBA retrieve the trace files from the user_dump_dest of the database.
Using TKPROF
A trace file can be reviewed using TKPROF. TKPROF reformats the raw data so that it is easier to review. The TKPROF commands are normally run at the operating system command prompt. This will be signified with a $ as this is a common prompt in UNIX.1. Retrieve the trace file.
2. Issue a command like the following to create a TKPROF version of the trace file. The explain option will look to see how each query is handled by the database in terms of what tables and indexes are referenced.
$ tkprof
However, TKPROF does not take into account bind variables. Therefore, these are ignored in the output. When you need to analyze bind variables, consider using TraceAnalyzer.
A handy technique when trouble shooting performance issues is to use TKPROF to look at the longest running queries. Since trace files related to performance can be huge, one might spend hours looking through the results to find the queries causing the issue. If you sort the file by the longest running queries first, it makes it much easier to investigate. The following example sorts by longest running queries first with the sort options selected as "sort='(prsela,exeela,fchela)'" and limits the results to the "Top 10" long running queries with the "print=10" command:
$ tkprof
What is a trace file?
A trace file is a log of SQL run in a particular session or sessions focused on selects, inserts, updates, and deletes. A trace file can be used in many circumstances including reviewing performance, finding tables and views referenced, or finding the root of an error. More details about trace files can be read in the database user's guide related to your version.What are bind variables?
A bind variable is a substitution value used within a trace file. To improve performance, the Oracle database will reuse SQL substituting values for variables as necessary. For example, the same SQL statement could be run for eachof your employees. The employee id might be a variable that is changed before you run each SQL. This could be translated to the database as a bind variable so that the same SQL can be used each time but the correct variable can be substituted just before the SQL is run.
If someone requests that you enable bind variables for your trace file, this causes the database to document the substitution variables within the trace file as well as the SQL run. For example, we may see that a select statement ran against the employee table ten times, but without the binds, we would not know what employee was selected each time.
Tuesday, May 5, 2015
Patching & Maintenance Advisor: E-Business Suite
Saturday, March 21, 2015
Debugging Guide for Reports Issues in Oracle E-Business Suite Release 12 (Doc ID 1669163.1)
Section 1: Overview
Oracle Forms and Reports 10.1.2.x as used by Oracle E-Business Suite Release 12 are components of Oracle Application Server 10.1.2. The latest version in Oracle E-Business Suite Release 12 is Oracle Reports version 10.1.2.3.In Oracle E-Business Suite Release 12, all reports are submitted online through the concurrent manager, as there is no standalone reports server.
When a customer submits a report through the concurrent request screen, the
$INST_TOP/ora/10.1.2/bin/appsrwrun.sh
script is called. This script
sets Oracle Application specific settings required for running the report,
executes $ORACLE_HOME/bin/reports.sh
to set the reports
environment, and then calls 10.1.2 $ORACLE_HOME/bin/rwrun
to
execute the report.Reports (rdf files) are placed under
$PROD_TOP/reports/US
in
Release 12. The Oracle Reports user exits available in Oracle E-Business Suite
are found in $FND_TOP/bin/fndrwxit.so
(or
fndrwxit.sl
).In UNIX, we have an environment variable
REPORTS_DEFAULT_DISPLAY
(defined under 10.1.2 $ORACLE_HOME/bin/reports.sh
). This tells
reports to use DISPLAY of a third party like XVFB,VNC or to use headless
operations available in JDK on 10.1.2 ORACLE_HOME.
REPORTS_DEFAULT_DISPLAY=YES
means DISPLAY is not needed and the report is
able to use headless operations from JDK for operations that need graphical or
image generation work.REPORTS_DEFAULT_DISPLAY=NO
means DISPLAY is needed and the
report depends on the DISPLAY parameter set correctly to the third party
XVNC/XVBF displays. REPORTS_DEFAULT_DISPLAY=NO
is set for AIX
only.REPORTS_SERVER_CONFDIR
is used to specify where the
rwbuilder.conf
file will reside. This can be set to a directory
that the user running the reports can write. The rwbuilder.conf
file will be copied into this directory and used by the reports executables.
This variable is set to $INST_TOP/ora/10.1.2/reports/conf
in APPS
instance.Section 2: How to Debug Report Issues
2.1 Steps to Run a Report from Command Line2.2 Further Debugging
When you receive a report issue, you must first assess whether the issue stems from the reports layer or is a concurrent program issue. To figure this out, you need to run a report from the command line.
2.1 Steps to Run a Report from Command Line
Take the following steps to run a report from the command line.- Enable trace in the report so the command used to submit it will appear in
the log file.
- Log in to Oracle Applications as a user who has system administrator
responsibilities.
- As system administrator, navigate to the Define Concurrent Program Screen
and query the report.
- Check the box next to Enable Trace.
- Save the record.
- Log in to Oracle Applications as a user who has system administrator
responsibilities.
- Switch responsibilities and submit the concurrent request to run the
report.
- You will get full reports command in concurrent program log file.
- Log into the middle tier and source the environment.
- Now run the command from the command line after adding userid=userid/password with this command.
opatch lsinventory
command.2.2 Further Debugging
If all patches have been properly applied in the customer's instance and the customer is still receiving this error, it may be a new issue. Review the following points for further debugging:- 2.2.1:
- As the reports temp file is created here, check to make sure enough space is available for reports temp file creation in this directory.
- The reports cache file is created in this directory. Check
$INST_TOP/ora/10.1.2/reports/conf/rwbuilder.conf
file forREPORTS_CACHE
directory path. Enough space should be available for reports cache file creation in this directory. - Please follow My Oracle Support Knowledge Document 1812.1, TECH: Getting a Stack Trace from a CORE file on Unix, for generating stacktrace from reports core file.
- Verify whether all reports one-off patches have been applied in the
customer's instance and all post-installation steps are executed properly if
they are still receiving errors when dealing with a large volume of
data.
You can also check the size of reports temp and cache file with the following commands in Linux (during reports execution).lsof|grep <reports process id>|grep dat
lsof|grep <reports process id>|grep cache)
- Under the system administrator responsibility, navigate to the Define
Concurrent Programs form (Concurrent -> Program -> Define).
- Query the reports by entering the reports name in the program field.
- Check 'Enable Trace' in the request section and save the record.
- Submit the concurrent request to run the reports. DB trace file will be
generated under
USER_DUMP_DEST
. Check the trace file with the string*CR<concurrent_request_id>*
in this directory (for example,-txkr12d2_ora_17752_SYSADMIN_CR40362585.trc
). You can runtkprof TRACE_FILE_NAME
to generate thetkprof
output from this trace file.
df -kh
output of $REPORTS_TMP
df -kh
output of
$INST_TOP/logs/ora/10.1.2/reports/cache
ls -ltr
10.1.2 $ORACLE_HOME/bin/reports.sh
.
You must verify whether customer has the latest reports.sh
under
$ORACLE_HOME/bin
. We have seen some report issues where the
customer has an old reports.sh
file in 10.1.2
$ORACLE_HOME/bin
which will set the wrong
LD_LIBRARY_PATH
.2.2.5:Review the strace output of reports command. You can take strace output of reports command with the following command (you need to run the report from command line here):
strace -o reports .out -f <entire reports
command with userid/password>
2.2.7:Customers often cite a crash when they are running reports containing a large volume of data. Currently, there is no limitation on the reports temp file size and output file size, provided that the customer has applied all reports one-off patches from My Oracle Support Knowledge Document 437878.1, Upgrading OracleAS 10g Forms and Reports in Oracle E-Business Suite Release 12, and
CA_FILEIO_64
is defined to YES in the
customer's instance (already included in template fix 9413844). rwfpngposition
' when number of pages in report output
exceeds 65535 and the report uses page numbering format "m of N". There is no
fix for this issue yet. Respective product teams need to change their page
numbering format to "m" to avoid such issues. The customer may be hit by this
also while running a report with a large volume of data. We need to contact
owner of the rdf file to modify the page numbering format.2.2.9:You can increase the heap size in jvmOptions in
$INST_TOP/ora/10.1.2/reports/conf/rwbuilder.conf
to check the
reports execution with more jvm memory.Change the following lines:
<engine id="rwEng"
class="oracle.reports.engine.EngineImpl"
initEngine="1" maxEngine="1"
minEngine="0" engLife="50" maxIdle="30"
callbackTimeOut="60000">
<engine id="rwEng"
class="oracle.reports.engine.EngineImpl" initEngine="1"
maxEngine="1"
minEngine="0" engLife="50"
maxIdle="30"
callbackTimeOut="60000"
jvmOptions="-Xms512m -Xmx512m">
-java.lang.OutOfMemoryError.
2.2.10:You may need to review the reports trace for debugging a report issue. Enabling reports tracing generates a text file that describes the series of steps completed during the execution of the reports. Tracing can be set to capture all events or just specific types of events.
Under the system administrator responsibility, navigate to the Define Concurrent Programs form.
From here, click on Concurrent -> Program -> Define.
Query the report by entering the report name in the Program field.
Check 'Enable Trace' in the 'Request' section. Enter your trace options in the 'Options' field in the 'Executable' section using the format:
TRACEOPTS=< >TRACEFILE=< >
TRACEMODE=< >
The following table is a list of possible trace options:
Trace Options | Description |
---|---|
TRACE_ALL |
Log all possible trace information in the trace file (default option). |
TRACE_APP |
Log trace information on all the reports objects in the trace file. |
TRACE_BRK |
List all breakpoints in the trace file. |
TRACE_DBG |
Log debug information. |
TRACE_DST |
List distribution lists in the trace file. |
TRACE_ERR |
List error messages and warnings in the trace file. |
TRACE_EXC |
List Reports Server exceptions. |
TRACE_INF |
Dumps any information not covered by the other options. |
TRACE_LOG |
Duplicate log information in your trace file. |
TRACE_PLS |
Log trace information on all the PL/SQL objects in the trace file. |
TRACE_PRF |
Log performance statistics in the trace file. |
TRACE_SQL |
Log trace information on all the SQL in the trace file (includes binds). |
TRACE_STA |
Provide server and engine state information. |
TRACE_TMS |
Enter a timestamp for each entry in the trace file. |
TRACE_WRN |
List server warning messages. |
TRACEOPTS=(TRACE_APP, TRACE_PRF) |
To use multiple options, list options in parentheses. |
TRACEFILE=Any valid file name including the full path to
the file |
Specify the report trace file name. |
TRACEMODE=TRACE_APPEND |
Add the new information to the end of the file. |
TRACEMODE=TRACE_REPLACE |
Overwrite the file. |
TRACEOPTS=< >TRACEFILE=< >
TRACEMODE=<> |
Collect reports trace file by adding tracing options to the end of the reports command line. |
Note: You will receive the following
exception in the reports trace file:
Exception 50125 (org.omg.CORBA.OBJ_ADAPTER: vmcid: SUN minor
code: 202 completed: Maybe
at
com.sun.corba.se.internal.corba.ORB.disconnect(Unknown Source)
at
oracle.reports.server.ConnectionManager.release(ConnectionManager.java:183)
at
oracle.reports.server.ConnectionImpl.disconnect(ConnectionImpl.java:660)
at
oracle.reports.client.ReportRunner.releaseConnection(ReportRunner.java:333)
at
oracle.reports.definition.RWServerInProcess.release(RWServerInProcess.java:368)
at
oracle.reports.definition.RWServerInProcess.showProgress(RWServerInProcess.java:360)
at
oracle.reports.definition.RWServerInProcess.run(RWServerInProcess.java:198)
):
Internal error org.omg.CORBA.OBJ_ADAPTER: vmcid: SUN minor code: 202 completed:
Maybe
This is not an error message. This exception is found
in all reports trace files. This can be ignored while analyzing the report trace
files.You can also apply Patch 5659594 in 10.1.2 ORACLE_HOME.With this patch you will
not see these warning messages in reports trace file. 2.2.11:If you want to check the values of environment variables during reports execution, you need to run
modify appsrwrun.sh
. To do so, add env>
/tmp/envvalues.out
just before -exec $ORACLE_HOME/bin/rwrun
"$@"
command in
$INST_TOP/ora/10.1.2/bin/appsrwrun.sh
.You can also modify
appsrwrun.sh
to take strace output of the report command if your
customer does not feel comfortable with running the report from command line or
if the report is executed from some product executable file. For that you need
to modify appsrwrun.sh
with the following:
exec strace -o /tmp/strace.out -f
$ORACLE_HOME/bin/rwrun "$@"
- 2.2.13:
- Customer may get -
JVMCI161: FATAL ERROR in native method :Wrong method ID used to invoke a Java method
error in AIX while executing report.Customer needs to upgrade jdk to 1.6/1.7 in 10.1.2 ORACLE_HOME for this issue. - Reports-idleTimeout is set to 90000
Long running reports-idleTimeout is set to 90000 in$INST_TOP/ora/10.1.2/reports/conf/rwbuilder.conf
, allowing you to run reports that takes up to 90000 minutes.
- Cache Directory Cleaning
In Oracle E-Business Suite, report cache files are cleared automatically after report execution is completed if<property name="cacheSize" value="0"/>
and<property name="noVoidedOutputError" value="yes"/>
are inrwbuilder.conf
and if Patch 14374587 is applied in10.1.2 ORACLE_HOME
.
JVMCI161: FATAL ERROR in native method error in AIX
Note: Concerning the rwconverter issue, note
that if you need to try manual recompilation while debugging rwconverter issue,
you need to set
DE_DISABLE_PLS_512=0
before executing rwconverter.
During compilation through adadmin
, this variable is set by ad
scripts. During reports execution through the concurrent program,
appsrwrun.sh
takes care of this environment variable.Section 3: Known Issues
Tuesday, September 2, 2014
adpreclone.pl dbTier - Can't locate strict.pm in @INC
On running adcfgclone.pl on 11.2.0.3 RDBMS ORACLE_HOME, it got errored out with the message below.
Issue:
$cd $ORACLE_HOME/appsutil/scripts/$CONTEXT_NAME
$ perl adcfgclone.pl dbTechStack
Can't locate strict.pm in @INC (@INC contains: /erpR1213/oracle/11.2.0/perl/lib/5.8.3 /erpR1213/oracle/11.2.0/perl/lib/site_perl/5.8.3 /erpR1213/oracle/11.2.0/appsutil/perl ../lib/5.10.0/sun4-solaris-thread-multi-64 ../lib/5.10.0 ../lib/site_perl/5.10.0/sun4-solaris-thread-multi-64 ../lib/site_perl/5.10.0 ../lib/5.10.0 ../lib/5.10.0/sun4-solaris-thread-multi-64 ../lib/site_perl .) at adcfgclone.pl line 27.
BEGIN failed--compilation aborted at adcfgclone.pl line 27.
Reason:
After upgrading you database from 10g to 11g , perl utility has been upgraded from 5.8.3 to 5.10.0.
Solution:
This is a known issue and now documented in My Oracle Support Article ADPreclone Fails When Can't Find Strict.PM Following Database Upgrade to 11gR2 [ID 1139403.1].
11.2.0.3 ships with perl 5.10.0. So you need to change the values of context variables pointing to PERL5LIB and ADPERLPRG inside the context file.
vi $CONTEXT_FILE
Global replace 5.8.3 with 5.10.0
Save
cd $ORACLE_HOME/appsutil/template
vi adxdbctx.tmp
Global replace 5.8.3 with 5.10.0
Run adcfgclone.pl, or adconfig or adpreclone.pl and it will work.
Issue:
$cd $ORACLE_HOME/appsutil/scripts/$CONTEXT_NAME
$ perl adcfgclone.pl dbTechStack
Can't locate strict.pm in @INC (@INC contains: /erpR1213/oracle/11.2.0/perl/lib/5.8.3 /erpR1213/oracle/11.2.0/perl/lib/site_perl/5.8.3 /erpR1213/oracle/11.2.0/appsutil/perl ../lib/5.10.0/sun4-solaris-thread-multi-64 ../lib/5.10.0 ../lib/site_perl/5.10.0/sun4-solaris-thread-multi-64 ../lib/site_perl/5.10.0 ../lib/5.10.0 ../lib/5.10.0/sun4-solaris-thread-multi-64 ../lib/site_perl .) at adcfgclone.pl line 27.
BEGIN failed--compilation aborted at adcfgclone.pl line 27.
Reason:
After upgrading you database from 10g to 11g , perl utility has been upgraded from 5.8.3 to 5.10.0.
Solution:
This is a known issue and now documented in My Oracle Support Article ADPreclone Fails When Can't Find Strict.PM Following Database Upgrade to 11gR2 [ID 1139403.1].
11.2.0.3 ships with perl 5.10.0. So you need to change the values of context variables pointing to PERL5LIB and ADPERLPRG inside the context file.
vi $CONTEXT_FILE
Global replace 5.8.3 with 5.10.0
Save
cd $ORACLE_HOME/appsutil/template
vi adxdbctx.tmp
Global replace 5.8.3 with 5.10.0
Run adcfgclone.pl, or adconfig or adpreclone.pl and it will work.
Monday, August 25, 2014
Which is Better: Forms Servlet or Socket Mode?
Many products within the Oracle E-Business Suite have screens that
are built with Oracle Forms. Oracle Forms can be run in either servlet
mode or socket mode. Apps 11i is based on Forms 6i and is configured to
run in socket mode by
default. Apps 12 is based on Forms 10g and is configured to run in
servlet mode by default. What are these modes, and which is better?
What is Forms Servlet Mode?
The Forms Listener Servlet is a Java servlet that delivers the
ability to run Oracle Forms applications over HTTP and HTTPS
connections. It manages the creation of a Forms Server Runtime process
for each client, as well as network communications between the
client and its associated Forms Server Runtime process.
The desktop client sends HTTP requests and receives HTTP responses
from the web server. The HTTP Listener on the web server acts as the
network endpoint for the client, keeping other servers and ports from
being exposed at the firewall.
What is Forms Socket Mode?
Initial releases of the Oracle Forms Server product used a simple
method for connecting the client to the server. The connection from the
desktop client to the Forms Listener process was accomplished using a
direct socket connection. The direct socket
connection mode was suitable for companies providing thin client access
to Forms applications within their corporate local area networks. For
the direct socket connection mode, the client had to be able to see the
server and had to have permission to establish
a direct network connection.
Although the direct socket connection mode is perfectly suited for
deployments within a company’s internal network, it's not the best
choice for application deployment via unsecured network paths via the
Internet. A company connected to the Internet
typically employs a strict policy defining the types of network
connections that can be made by Internet clients to secure corporate
networks. Permitting a direct socket connection from an external client
exposes the company to potential risk because the true
identity of the client can be hard to determine.
Servlet Mode Advantages
- HTTP and HTTPS traffic is easily recognizable by routers, while socket mode communications is generally considered suspect and treated on an exception basis.
- Existing networking hardware can be used to support basic functions such as load-balancing and packet encryption for network transit.
- More resilient to network and firewall reconfigurations.
- More robust: servlet connections can be reestablished if network connections drop unexpectedly for Forms, Framework, and JSP-based pages.
- Is the only supported method for generic Oracle Forms customers, and therefore is more thoroughly tested by the Forms and E-Business Suite product groups.
- Performance traffic can be monitored via tools like Oracle Real User Experience Insight (RUEI).
- Socket mode is not supported on Windows-based server platforms.
Socket Mode Advantages
- Uses up to 40% less bandwidth than Forms servlet mode. This may be perceived by Wide Area Network (WAN) users as causing slower responsiveness, depending upon network latency.
- Uses fewer application-tier JVM resources than servlet mode, due to fewer TCP turns and lack of overhead associated with HTTP POST handling.
Switching Apps Deployments Between Modes
Due to its numerous advantages, Forms servlet mode is the preferred and recommended deployment model for Forms on the web.
There may be circumstances where you need to switch between the
default Forms modes. You might wish to switch your Oracle E-Business
Suite Release 12 environment to socket mode to improve performance or
reduce network load. You might wish to
switch your Apps 11i environment to servlet mode as part of your rollout
to external web-based end-users outside of your organization.
If you're running Apps 11i and would like to switch to servlet mode, see:
- Using Forms Listener Servlet with Oracle Applications 11i (Note 201340.1)
If you're running Apps 12 and would like to switch to socket mode, see:
- Using Forms Socket Mode in Oracle Applications Release 12 (Note 384241.1)
Source: https://blogs.oracle.com/stevenChan/entry/which_is_better_forms_servlet_or_socket_mode
Friday, August 15, 2014
Changing the IP Address in 11i & R12
Symptoms
Users are not able to
Log into the E-Business Suite Instance. Trying to access the
E-Biz Instance, statis page redirection to /OA_HTML/ApssLogin is
resulting in "page can't find"
The IP address of the
Instance is changed but DBA followed incorrect method.
Hence new IP address wasn't propogated to FND_NODES resulting in error.
Hence new IP address wasn't propogated to FND_NODES resulting in error.
E-Business Suite
Instance recognise host name of the node not IP address, but it does store the
IP address in FND_NODES under SERVER_ADDRESS column. Follow the correct
method of IP Address Change in E-Business Suite Instance.
Middle Tier
1. Change the IP address on the servers. Remember to check changes at all places depending on the Operating System e.g. /etcc/hosts in Linux.
2. Ensure to change the entry for the hostname in the DNS lookup table i.e. specify the new IP address at the DNS server. Check it with 'nslookup'.
3. Stop the Middle Tier Services.
4. Run the following command to remove the old IP address from the Oracle Applications tables:
1. Change the IP address on the servers. Remember to check changes at all places depending on the Operating System e.g. /etcc/hosts in Linux.
2. Ensure to change the entry for the hostname in the DNS lookup table i.e. specify the new IP address at the DNS server. Check it with 'nslookup'.
3. Stop the Middle Tier Services.
4. Run the following command to remove the old IP address from the Oracle Applications tables:
> perl $AD_TOP/bin/adgentns.pl appspass=apps
contextfile=$CONTEXT_FILE -removeserver
5. Connect to SQL*Plus as apps user and run:
begin
FND_NET_SERVICES.remove_server('<SID>', '<hostname>');
end;
/
commit;
/
FND_NET_SERVICES.remove_server('<SID>', '<hostname>');
end;
/
commit;
/
Note: Replace
<SID> by the SID of the environment and <hostname> by the hostname
in the environment. Both must be entered in upper case.
6. Run AutoConfig on the Middle Tier to populate the FND_NODES.
7. Use following script to check if the change is reflected in FND_NODES table:
6. Run AutoConfig on the Middle Tier to populate the FND_NODES.
7. Use following script to check if the change is reflected in FND_NODES table:
spool fnd_nodes
set pagesize 50
col node_name format a15
col server_id format a8
col server_address format a15
col platform_code format a4
col webhost format a12
col domain format a20
col virtual_ip format a12
set linesize 132
select node_id, platform_code, support_db D, support_cp C, support_admin A, support_forms F,
support_web W, node_name, server_id, server_address, domain, webhost, virtual_ip
from fnd_nodes
order by node_id;
set pagesize 50
col node_name format a15
col server_id format a8
col server_address format a15
col platform_code format a4
col webhost format a12
col domain format a20
col virtual_ip format a12
set linesize 132
select node_id, platform_code, support_db D, support_cp C, support_admin A, support_forms F,
support_web W, node_name, server_id, server_address, domain, webhost, virtual_ip
from fnd_nodes
order by node_id;
Now the FND_NODES should have correct IP Address value.
8. For R12, follow Note 555214.1 OACORE Processes Won't Start After Increasing Their Number In Oracle Applications Release 12 In Context.xml to purge the lock files.
9. Start the Middle Tier Services.
Database Layer
1. Look for the hardcoded old IP Address in the following files:
a) listener.ora
b) tnsnames.ora (Local Naming) or check if any other naming method is used to resolve address.
Check if any of the parameter using the old IP Address.
2) Check if the parameter LOCAL_LISTENER and REMOTE_LISTENER parameter been set in Database Initialization file.
3) If its a Production Instance then its recommended to take the backup of the Database.
4) Please refer the Note 274476.1 and Note 363609.1 to have a detailed view to change the IP Address of the Database Server.
5) As the change is made at the OS (Operating System) level.Please ensure that the IP address gets reflected in the DNS server and also in the local host file.
Source: Correct Method of Changing the IP Address in 11i & R12 (Doc ID 751328.1)
Subscribe to:
Posts (Atom)