Best Practices For Large Oracle Apps R12 Implementations: Imagination at Work
Best Practices For Large Oracle Apps R12 Implementations: Imagination at Work
Ajith Narayanan
Technical Lead-Oracle ERP Configuration Management
Imagination at work. GE Healthcare, Bangalore, India
8th Dec-2014, Liverpool, U.K.
Disclaimer
The views/contents in this slides are those of the author and do not
necessarily reflect that of General Electric Company or Oracle
Corporation and/or their respective affiliates/subsidiaries.
11/14/2014
Who Am I?
Ajith Narayanan
Technical Lead – Oracle ERP Configuration Management
GE Healthcare, Bangalore, India
11/14/2014
Agenda
Why do we need to implement best practices?
• Application Tier
• R12 Tech Stack
• Forms
• Response Time
• Web Applications
• Concurrent Manager
• Workflow Engine
• Taking Diagnostics Help
• CBO Statistics
• Application Patching
• Network & Latency Check
11/14/2014
Agenda
• Database Tier
• CPU Utilization Observations and analysis
• High DB_IO observation and correlation with CPU usage.
• Identify Top SQLs
• Effective usage of AWR, ADDM Reports
• ORACHK Check (From Oracle RAC assurance team)
• ADR Command Interpreter (ADRCI)
• Cluster Callout scripts example.
• Looking At Issues Proactively & From Greater Heights
• References
• Q&A
11/14/2014
Why do we need to implement best
practices?
11/14/2014
Why do we need to implement best
practices?
Oracle Applications R12 Best Practices
• Huge infrastructure • Benefits
– Oracle Applications R12 – Enables us being proactive
– 8 Node middle tiers – simple in terms of manageability
– 16 Node RAC database tier. – Helps in support cost reduction.
– Database Size 40+ TB – Time & effort saving
– Annual DB growth of 2 TB
– Daily Orders: 45 K –3 M order
lines
– 1500 online users
– 1M+ XML messages/day
11/14/2014
Application Tier
Upgrade Tech Stack
• R12 Tech Stack
• OC4J: Oracle AS 10g 10.1.3./ Weblogic Managed Servers (FMW)
• Forms: Oracle AS 10.1.2
• JAVA, JRE Plugin
11/14/2014
Application Tier
10
11/14/2014
Application Tier
Forms
• Socket Mode for Internal users (MOS 384241.1)
• Servlet mode is default in R12 and recommended for external access.
– cat $FORMS_WEB_CONFIG_FILE|grep serverURL=
If the serverURL parameter has no value then Forms is implemented in socket mode else it is servlet
11
11/14/2014
Application Tier
Response Time/CPU Issues
• When users complain about response time, configure Apache to log the time it
takes to service a request.
• Access logs monitoring should be good way to keep a tab on the response times of
user requests.
– Configure Apache to log the time it takes to service a request
– Logs: $LOG_HOME/ora/10.1.3/Apache/access_log*
– Edit: $ORA_CONFIG_HOME/10.1.3/Apache/Apache/conf/httpd.conf
LogFormat "%h %T
(Or)
– Enable Execution Content ID's (ECID) for the access_log in Release 12. ECID's allow correlation of
requests across log files so that one can map the flow of a given request across the various
components of iAS.
LogFormat "%h %l %u %t [ecid: %{Oracle-ECID}i] \"%r\" %>s %b [%T (secs)]" combined
12
11/14/2014
Application Tier
Web Applications
• Train users to logout when transactions are complete.
– Logging out gracefully releases the memory and corresponding resources (i.e. connections, etc.)
Releases process resources sooner
13
11/14/2014
Application Tier
EBS Concurrent Processing Analyzer
• The EBS Concurrent Processing Analyzer is a self-service health-check script
• Reviews the overall Concurrent Processing
• Analyzes the current configurations & settings for the environment.
• Providing feedback and recommendations on best practices.
• APPS Workload (Concurrent, FORM, ICX) observations.
• Mandatory Concurrent Programs fro purging.
14
11/14/2014
Application Tier
EBS Workflow Analyzer
• The EBS Workflow Analyzer is a script that reviews the current Workflow Footprint.
• Analyzes the workflow configurations & Provides feedback and makes
recommendations on best practices and areas of concern.
• Provides immediate analysis and output of the EBS Workflow environment.
• Workflow Process Stuck & Work Flow Checks
How to run EBS Workflow Analyzer Tool as a Concurrent Request (Doc ID 1425053.1)
11i-12 Workflow Analyzer script for E-Business Suite Workflow Monitoring and Maintenance [Video] (Doc
ID 1369938.1)
How To Use Concurrent Program "Purge Order Management Workflow" (Doc ID 878032.1)
15
11/14/2014
Application Tier
OAM Diagnostics Help
• Oracle Application Object Library Best Practices: Database Security Tests Health
Check Test
• Oracle Application Object Library Best Practices: E-Business Suite Security Tests
Health Check Test
• Oracle Application Object Library Best Practices: E-Business Suite Diagnostic
Tests Health Check Test
• And many more……
16
11/14/2014
Application Tier
CBO Statistics
• FND_STATS uses the standard the DBMS_STATS package, but enhances the
functionality as it provides several additional PL/SQL procedures for
gathering statistics at the table, schema, or database level.
17
11/14/2014
Application Tier
Application Patching
• Thorough patch analysis with timing reports on sand box & non-prods
environments before proceeding with the Prod patching.
• In Release 12, you register your customized files in the Register Flagged Files tool
in Oracle Applications Manager (OAM), which replaces the
$APPL_TOP/admin/applcust.txt file.
18
11/14/2014
Application Tier
Network & Latency
• There are two diagnostic tools available in the Oracle E-Business Suite:
The Network test Form – This form can be added to user’s menu , So that they can
run the tests when they feel a performance degradation
Note:- Network latency should be always low (<3ms) and bandwidth should be high.
19
11/14/2014
Application Tier
Network & Latency
The Client Analyzer
20
11/14/2014
Database Tier
CPU Utilization Observations and
analysis
• CPU spikes for more than 30 minutes – How many of you think RAM
continuously is a candidate for RCA. access is 10,000 times faster than
• High DB_IO observation and Physical disk access?
correlation with CPU usage. – In real world, LIO is only 25-100
• I/O Thresholds: Logical RDS > times cheaper than PIO
300K/sec, Physical RDS> 3000/Sec are – Internal locks & latch serialization
candidate for RCA. mechanisms involved.
– Targeting only PIO counts(or high
cache hit ratios) important pitfall
to avoid. Even with no PIOs, a
query can still be outrageously
inefficient
– LIO are a critical component of
query cost
21
11/14/2014
Database Tier
AWR, ASH, ADDM Reports
• Identify Top SQL, Latch Spin Counts – ORAchk daemon auto-start mode
etc., Memory Advisors after node reboot (init integration)
• Identify top wait events (System, User – Merge multiple ORAchk collection
IO, Cluster, Concurrency, reports
Configuration, Applications, Network) – Exclude checks based on profile
• Fragmented Interface tables – Upload of installed patches to
• Object to be pinned – (Frequently used database
database objects) – Collection Manager for ORAchk,
RACcheck and Exachk (Doc ID
• RAC Check (From Oracle RAC
1602329.1)
assurance team) RACcheck - RAC
Configuration Audit Tool (Doc ID – ORAchk signature file in /tmp on
1268927.1) all nodes to verify last ORAchk run
• ORAchk - Health Checks for the Oracle – New checks and bug fixes,
Stack (Doc ID 1268927.2) including o 30 Oracle Ebusiness
AP module data integrity checks
• Sample ORACHK report ORAchk-Report-Example.html
– 12 new Database checks
• ORAchk-Collection Manager – 8 new Solaris system checks
22
11/14/2014
Database Tier
ADR Command Interpreter (ADRCI)
23
11/14/2014
Database Tier
• At the ADRCI prompt, enter the following command:
adrci> HELP
• For example, to get help on the SHOW TRACEFILE command, enter the following:
adrci> HELP SHOW TRACEFILE
24
11/14/2014
Database Tier
2. At the ADRCI prompt, enter the following command:
SHOW ALERT
SPOOL /tmp/MYALERT.LOG
SHOW ALERT
SPOOL OFF
This outputs the alert log, without XML tags, to the file
/tmp/MYALERT.LOG.
25
11/14/2014
Database Tier
Cluster callout scripts. – Quickly get alerted on any cluster events.
#!/bin/ksh
# # Author: Ajith Narayanan
## http://oracledbascriptsfromajith.blogspot.com
## Version 1.0
## This callout script is extended to report/mail the affected weblogic services when any Oracle cluster event occurs.
##
umask 022
FAN_LOGFILE=$ORACLE_HOME/racg/usrco/`hostname`_uptime.log
EVENTLINE=$ORACLE_HOME/racg/usrco/`hostname`_eventline.log
EVENTLINE_MID=$ORACLE_HOME/racg/usrco/`hostname`_eventline_mid.log
MAIL_CONT=$ORACLE_HOME/racg/usrco/`hostname`_mail.log
WEBLOGIC_DS=$ORACLE_HOME/racg/usrco/weblogic_ds
echo $* "reported="`date` >> $FAN_LOGFILE &
tail -1 $FAN_LOGFILE > $EVENTLINE
awk '{
for (f = 1; f <= NF; f++) { a[NR, f] = $f } } NF > nf { nf = NF } END {
for (f = 1; f <= nf; f++) { for (r = 1; r <= NR; r++) { printf a[r, f] (r==NR ? RS : FS) } }
}' $EVENTLINE > $EVENTLINE_MID
SER=`grep "service=" $EVENTLINE_MID|awk -F= '{print $2}'`
DB=`grep "database=" $EVENTLINE_MID|awk -F= '{print $2}'`
INST=`grep "instance=" $EVENTLINE_MID|awk -F= '{print $2}'`
HOST=`grep "host=" $EVENTLINE_MID|awk -F= '{print $2}'`
STAT=`grep "status=" $EVENTLINE_MID|awk -F= '{print $2}'`
if [ "$SER" != " " | "$DB" != " " | "$INST" != " " | "$HOST" != " " | "$STAT" != " " ]; then
if [ $STAT = nodedown ]; then
cat $EVENTLINE_MID > $MAIL_CONT
26
11/14/2014
Database Tier
echo "**============================SERVICES AFFECTED===============================**" >> $MAIL_CONT
grep -i "$DB_" $WEBLOGIC_DS >> $MAIL_CONT
elif [ $STAT = up ]; then
cat $EVENTLINE_MID > $MAIL_CONT
echo "**============================SERVICES RESTORED===============================**" >> $MAIL_CONT
grep -i "$DB_" $WEBLOGIC_DS|grep "SERVICE_NAME=$SER" >> $MAIL_CONT
else
cat $EVENTLINE_MID > $MAIL_CONT
echo "**============================SERVICES AFFECTED===============================**" >> $MAIL_CONT
grep -i "$DB_" $WEBLOGIC_DS|grep "SERVICE_NAME=$SER" >> $MAIL_CONT
#fi
cat $MAIL_CONT| /bin/mail -s "Cluster $STAT event: $DB $INST $SER $HOST" ajithpathiyil@gmail.com
fi
#cat $MAIL_CONT| /bin/mail -s "Cluster $STAT event: $DB $INST $SER $HOST" ajithpathiyil@gmail.com
fi
rm $EVENTLINE $EVENTLINE_MID $MAIL_CONT
27
11/14/2014
Looking At Issues Proactively & From
Greater Heights
28
11/14/2014
References
• My Oracle Support
• Steven Chan’s blog (https://blogs.oracle.com/stevenChan)
29
11/14/2014
Q&A
30
11/14/2014
Thank You!
31
11/14/2014