Vous êtes sur la page 1sur 98

Maximizing the Performance of the Oracle eBusiness Suite

Ahmed Alomari Applications Performance Group Oracle Corporation June 14, 2005

Agenda
Architecture Application Services Tier

Forms Reports Concurrent Manager Apache


Mod PL/SQL Jserv/JVM

Portal Discoverer

Network Performance Data Server Tier Application Tuning 11i10 Performance Improvements Q&A

Architecture
Portal Servlet Engine Java Server Pages (JSP)
http JDBC (Thin) Real Application Clusters (RAC)

Web Listener

AOLJ Discoverer PL/SQL Gateway Reports Forms Concurrent Manager


TNS (Net8)

Clients

Data Server Tier

Application Tier

Application Services Tier


Forms

Deploy with socket mode for internal users:


connectMode=socket (appsweb.cfg)

Enable Forms Dead Client Detection


Value specified in minutes Terminates f60webmx processes for dead clients. FORMS60_TIMEOUT=10

Enable Forms Abnormal Termination Handler


Do not set FORMS60_CATCHTERM

Application Services Tier


Forms

Upgrade to the latest Forms patch set (patch set 16) Forms patchset 7 (6.0.8.16.X) introduced a regression which affects scalability (bug 2269913). Results in Forms generating invalid SQL. Fixed in Forms patchset 10 (6.0.8.19.X). Refer to MetaLink document 125767.1 for Forms patchset upgrades.

Application Services Tier


Forms Cancel Query

Should not be enabled unless you are on Forms patchset 14 (Forms version 6.0.8.23.x or higher). Refer to MetaLink Note 138159.1 for instructions on how to enable and tune Cancel query related parameters. Cancel Query increases middletier CPU as well as DB CPU. To Disable Cancel Query Set the Profile FND: Enable Cancel Query to No.

Application Services Tier


Forms

Ensure users are optimally utilizing the professional Forms interfaces.


Avoid Blind queries Provide selective criteria in Find windows and LOVs. Avoid opening and closing forms across transactions. Users which need to switch responsibility in order to complete a business transaction should instead keep the relevant Forms open.

Application Services Tier


Forms (Tracing)

If the form is slow, or a specific flow in the Form is slow, first generate a complete SQL trace using the Trace menu in HelpDiagnostics. If the SQL trace does not account for the majority of the response time experienced by the user, then generate a Forms Runtime Diagnostics (FRD) Trace.

Application Services Tier


Forms (Tracing SQL Trace)

Application Services Tier


Forms (Tracing FRD Trace)

Logon to Applications 11i with the following parameters appended to the URL: play=&record=collect&log=/tmp/oeform.trc Navigate through the flows which you would like to trace. Exit from Oracle Applications completely. Review the trace file from the application server (/tmp/oeform.trc).

Application Services Tier


Reports

Ensure users provide selective parameters to the standard Reports. Review the Report output:
Number of rows returned to the report. Number of report pages.

SQL Trace can be generated at Request Submission Time (SRS form Debug Options) or by setting the Enable Trace flag in the Concurrent Program Definition Form.

Application Services Tier


Reports (Tracing)

If the SQL trace for the report does not account for the elapsed time of the request, then generate a Reports trace by appending tracing parameters the to concurrent program command line.
The following are the trace options: TRACE_ALL : log all possible trace information in the trace file. (DEFAULT) TRACE_APP : log trace information on all the report objects in the trace file. TRACE_BRK : list breakpoints in the trace file. TRACE_ERR : list error messages and warnings in the 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. TRACE_TMS : enter a timestamp for each entry in the trace file.

Application Services Tier


Reports (Tracing)

Enabling Reports Trace (pre 11i10) Signon to Apps with System Administrator responsibility Navigate to Concurrent > Program > Define Query the concurrent program (report) which you want to trace. Locate the Options field and enter the following values : TRACEOPTS=<trace option> TRACEFILE=<path/file> Save the concurrent program Run the report and a trace file will be generated. Remember to clear the trace options after running the report.

Enabling Reports Trace (11i10) Use the Debug Options page at request submission.

Application Services Tier


Reports (Trace Output)
Report: /u02/appl/fnd/11.5.0/reports/US/FNDSCURS.rdf Logged onto server: Username: . . . . . . . . 23:59:57 23:59:57 23:59:57 . . . . . APP APP APP . . ... ( ... ) ... ( . Generic Graphical Object B_SECURITY_GROUP_NAME1 Generic Graphical Object B_SECURITY_GROUP_NAME1 Generic Graphical Object B_USER_NAME1 +-------------------------------------+ | Report Builder Profiler statistics | +-------------------------------------+ TOTAL ELAPSED Time: Reports Time: 2243.04 seconds

1196.62 seconds (53.34% of TOTAL) 1046.41 seconds (46.65% of TOTAL) 1046.00 seconds 0.40 seconds 904.71 seconds

ORACLE Time: UPI: SQL: TOTAL CPU Time used by process:

Application Services Tier


Concurrent Manager

Avoid enabling an excessive number of standard or specialized managers. Use specialization rules and work shifts to bind specific jobs to specific time windows.
Helps avoid scheduling resource intensive batch requests during peak activity.

For jobs which spawn parallel workers such as Auto Invoice or Payroll, set the sleep time of the Conflict Resolution Manager (CRM) to null (i.e. 10 seconds). The default value is 60 seconds.

Application Services Tier


Concurrent Manager

Database Resource Manager Integration


Define Resource Consumer Groups and associate specific concurrent programs with a resource group. Allows an administrator to constrain the amount of CPU resources used by a concurrent program. Resource Groups can also be defined for online users using the profile FND: Resource Consumer Group.

Application Services Tier


Concurrent Manager

Transaction Managers
Used for Inventory Transactions as well as other synchronous online processing. Ensure enough transaction managers exist to service the request load. Set the profile Concurrent:Wait for Available TM to 1 (second). Set TP:INV Transaction processing mode to Online processing for small inventory requests from the UI. Set the sleep time on the transaction managers to a high number (e.g. 10 minutes). Avoids constant polls to check for shutdown requests. Transaction Managers can also be traced.

Application Services Tier


Concurrent Manager

Enabling Tracing
Program Level Enable the trace option in the concurrent program definition form. Request Level (new in 11i10) Use the Debug Options button in the Request Submission Form The profile Concurrent: Allow Debugging should be set to Yes.

Application Services Tier


Concurrent Manager

Enabling Trace at the Program Level

Application Services Tier


Concurrent Manager

Enabling Trace at the Request Level

Application Services Tier


Concurrent Manager

Enabling Trace at the Request Level

Application Services Tier


Apache

On UNIX, Apache is process based (httpd), and mods such as mod PL/SQL run within the process address space of the httpd processes. On Windows, Apache is multithreaded (Apache.exe). Tune the number of processes and number of clients (httpds.conf):

MinSpareServers 5 MaxSpareServers 10 StartServers 5 MaxClients 512

Application Services Tier


Apache

Minimize levels of logging (httpds.conf): LogLevel warn SSLLogLevel warn Enable Caching of nonHTML resources including images, style sheets, and Java script. Caches content in the browser cache. Reduces network roundtrips (non SSL) Reduces network bandwidth utilization (SSL) Included in AutoConfig templates in 11.5.8 (or higher).

Application Services Tier


Apache

Enable Caching of nonHTML resources (httpd.conf or


apps.conf)

<Directory "<physical_path_corresponding_to_the_alias_/OA_HTML/>"> #enable the generation of the Expires header for files under /OA_HTML/ ExpiresActive On #expire images one month after last client access ExpiresByType image/gif "access plus 1 month" #expire stylesheets one week after the last client access ExpiresByType text/css "access plus 1 weeks" #expire javascript libraries one day after the last client access ExpiresByType text/javascript "access plus 1 days ExpiresByType application/x-javascript "access plus 1 day" </Directory>

Application Services Tier


Apache

Review Apache Access Log file to ensure images are being satisfied from the browser cache.
Http code 200 (request for document) Http code 304 (request for time stamp)

130.35.127.106 - - [23/Oct/2002:19:00:21 -0700] "GET /OA_MEDIA/FNDINVDT.gif HTTP/1.1" 200 821 130.35.127.106 - - [25/Oct/2002:14:38:23 -0700] "GET /OA_MEDIA/FNDINVDT.gif HTTP/1.1" 304 130.35.127.106 - - [25/Oct/2002:14:38:23 -0700] "GET /OA_MEDIA/FNDWATHS.gif HTTP/1.1" 200 190 130.35.127.106 - - [25/Oct/2002:14:38:23 -0700] "GET /OA_MEDIA/FNDREDPT.gif HTTP/1.1" 200 70 130.35.127.106 - - [25/Oct/2002:14:39:23 -0700] "GET /OA_HTML/OA.jsp? page=/oracle/apps/icx/por/rcv/pages/ReceivingHomePage&OAHP=ICXP OR_MENU&OASF=ICXPOR_RCV_HOME_PAGE&dbc=ap107fam_ipdev11i&language_code=US&transactionid=70A5819F04C0F411 HTTP/1.1" 200 14 130.35.127.106 - - [25/Oct/2002:14:39:34 -0700] "GET /servlets/PoolMonitor?jvm HTTP/1.1" 200 7954 130.35.127.106 - - [25/Oct/2002:14:41:03 -0700] "GET /OA_HTML/US/ICXINDEX_ipdev11i.htm HTTP/1.1" 304 130.35.127.106 - - [25/Oct/2002:14:41:03 -0700] "GET /OA_MEDIA/logo.gif HTTP/1.1" 304 130.35.127.106 - - [25/Oct/2002:14:41:03 -0700] "GET /OA_MEDIA/appslogo.gif HTTP/1.1" 304 130.35.127.106 - - [25/Oct/2002:14:41:03 -0700] "GET /OA_MEDIA/FNDJLFRL.gif HTTP/1.1" 304 130.35.127.106 - - [25/Oct/2002:14:41:03 -0700] "GET /OA_MEDIA/FNDINVDT.gif HTTP/1.1" 304 130.35.127.106 - - [25/Oct/2002:14:41:03 -0700] "GET /OA_MEDIA/FNDJLFRR.gif HTTP/1.1" 304 -

Application Services Tier


Apache Mod PL/SQL

Configure a dedicated mod PL/SQL Listener


Improves performance and scalability Significantly reduces overall number of sessions/connections. Reduces latency of web requests. Improves cursor sharing. Documented in Oracle 9i Application Server Using the PL/SQL Gateway Release 1 (v1.0.2.2)
http://technet.oracle.com/docs/products/ias/doc_library/102 2doc_otn/apps.102/a90099/apptroub.htm#634180

Application Services Tier


Apache Mod PL/SQL (dedicated listener)
1. For the main Listener running on Port 7000, edit the file $IAS_HOME/Apache/modplsql/cfg/plsql.conf as follows: Disable the mod PL/SQL service from the main listener by commenting out the lines between the two Location parameters as follows: # <Location /pls> # # # SetHandler pls_handler Order deny,allow Allow from all

# </Location> Comment out the following line as follows: # LoadModule plsql_module /d1/ias/Apache/modplsql/bin/modplsql.so

Application Services Tier


Apache Mod PL/SQL (dedicated listener)
2. Configure the main listener to forward all mod_plsql requests to the dedicated mod PL/SQL listener by adding the following line: ProxyPass /pls/ http://sechost.us.oracle.com:8888/pls/ For the dedicated mod PL/SQL Listener running on Port 8888, configure each DAD to override the default CGI environment variables in order to allow redirects. Edit the file $IAS_HOME/Apache/modplsql/cfg/wdbsvr.app and add the following line for each DAD: cgi_env_list=SERVER_NAME=mainhost.us.oracle.com,SERVER_PORT=7000,HOST=mainhos t.us.oracle.com:7000

Application Services Tier


Apache Jserv / JVM

Minimize Jserv logging log=true log.channel.warning=true log.file=/d1/ias/Apache/Jserv/logs/jserv_7000.log Review error log files for exceptions. Disable auto reload in production environments: autoreload.classes=false autoreload.file=false Use Jserv Auto Load Balancing Configure Multiple Zones. Provides higher availability and improves scalability.

Application Services Tier


Apache Jserv / JVM

Upgrade to the latest JDK (1.4.2_08). Do not disable hotspot or the JIT (i.e. DCOMPILER=NONE or Xint). Enable verbose GC in order to optimally tune the heap sizes based on the GC traffic.
Minor Collections Major Collections Elapsed Time of GC

Application Services Tier


Apache Jserv / JVM

Enable Verbose GC Output


Overload wrapper.bin with a shell wrapper in order to redirect stdout to a file.
Existing: wrapper.bin=/apps/jdk/jdk1.4.2/bin/java Change To: Wrapper.bin=/apps/scripts/java.sh java.sh: ========= /apps/jdk/jdk1.4.2/bin/java -verbosegc $* >> /apps/logs/java.log

Application Services Tier


Apache Jserv / JVM (Verbose GC Output)
/apps/logs/java.log: [GC 30460K->1369K(510848K), 0.1135695 secs] [Full GC 15135K->1686K(510848K), 0.2700469 secs] [GC 32123K->2131K(510848K), 0.0203634 secs] [GC 32595K->2130K(510848K), 0.0113639 secs] [GC 32593K->2171K(510848K), 0.0129179 secs] [GC 32635K->2419K(510848K), 0.0567306 secs] [GC 32881K->3157K(510848K), 0.2906981 secs] [GC 33620K->3197K(510848K), 0.0320023 secs] [GC 33661K->3218K(510848K), 0.0103013 secs] [GC 33674K->3309K(510848K), 0.0487887 secs] [GC 33769K->3532K(510848K), 0.0531514 secs] [GC 33983K->3784K(510848K), 0.0552549 secs] [GC 34248K->4056K(510848K), 0.0624969 secs] [GC 34520K->4404K(510848K), 0.0555575 secs] [GC 34868K->4828K(510848K), 0.0587044 secs] [GC 35292K->5242K(510848K), 0.0945290 secs]

Application Services Tier


Apache Jserv / JVM

Utilize the verbose GC output to tune the JVM heaps (Xmx and Xms) accordingly. Review the frequency of collections, especially major collections (i.e. Full GC).
Start with: Xms256M and Xmx512M XX:NewSize=60M XX:MaxNewSize=120M

Above settings have been incorporated in 11i10.

Application Services Tier


Apache Jserv / JVM

Process Identification (V$SESSION)


Specify the property DCLIENT_PROCESSID in the JVM startup shell script. Set automatically in 11i10.

Existing: wrapper.bin=/apps/jdk1.4.2/bin/java Change To: Wrapper.bin=/apps/scripts/java.sh java.sh: ========= #!/bin/sh /apps/jdk1.4.2/bin/java -verbosegc -DCLIENT_PROCESSID=$$ $* >> /d2/logs/java.log

Application Services Tier


Apache Jserv / JVM

Process Identification (V$SESSION)


Allows you to map the JDBC session from v$session to a particular JVM process. Set automatically in 11i10

SID MACHINE PROCESS MODULE LOGON ---- ------------------------- ------------ ------------------ ----------------41 aptier1.us.oracle.com 28806 JDBC Thin Client 12/02/04 14:26:43 42 aptier2.us.oracle.com 1723 JDBC Thin Client 12/02/04 14:27:01 43 aptier3.us.oracle.com 3201 JDBC Thin Client 12/02/04 14:28:15 44 aptier1.us.oracle.com 28807 JDBC Thin Client 12/02/04 14:29:17 . . . . . . . . . . . . . . aptier1{apps_a}-> ps -ef | grep 28806
apps_a 28806 28561 0 14:26:39 pts/20 apps_a 28807 28806 53 14:26:40 pts/20 0:00 /bin/sh ./java.sh 8:55 /jdk1.4.2/bin/../bin/sparc/native_threads/java

Application Services Tier


Apache Jserv / JVM

JDK 1.4.2 is Certified with Apps.


Refer to MetaLink note 246105.1 for details on upgrading to the JDK 1.4.2. ~15% performance improvement. Parallel GC (XX:+UseParNewGC) Detail GC Statistics (XX:+PrintGCDetails)

[GC [DefNew: 2047K->0K(2112K), 0.0012660 secs] 2472K->424K(3520K), 0.0014699 secs] [GC [DefNew: 2047K->0K(2112K), 0.0012561 secs] 2472K->424K(3520K), 0.0014669 secs] [GC [DefNew: 2047K->0K(2112K), 0.0012672 secs] 2472K->424K(3520K), 0.0014754 secs] [GC [DefNew: 0K->0K(2112K), 0.0018657 secs][Tenured: 20227K->227K(21416K), 0.1107343 secs] 20227K->227K(23528K), 0.1387975 secs] [GC [DefNew: 0K->0K(2112K), 0.0019746 secs][Tenured: 20227K->227K(21416K), 0.1105988 secs] 20227K->227K(23528K), 0.1384847 secs] [GC [DefNew: 0K->0K(2112K), 0.0019862 secs][Tenured: 20227K->227K(21416K), 0.1105816 secs] 20227K->227K(23528K), 0.1386478 secs]

Application Services Tier


Apache Jserv / JVM

JDK 1.4 provides new JVM monitoring tool (jvmstat)


Download from http://developers.sun.com/dev/coolstuff/jvmstat/

Application Services Tier


Java Server Pages (JSPs)

Precompile the JSPs to avoid dynamic compilation. Users experience poor performance for the initial page loads. Potential deadlocks if multiple users attempt to compile the same JSP. Potential JVM death due to OutOfMemoryException during concurrent compilation. MetaLink Document 215268.1 provides the instructions and the patch reference for an automated script to perform the precompilation. ojspCompile Script With the latest version of ojspCompile, it takes 15 minutes to compile all the JSPs.

Application Services Tier


Java Server Pages (JSPs)

Use a separate JVM to perform the JSP compilation.


Automatically set in 11i10.

root.properties: servlet.oracle.jsp.JspServlet.initArgs=translate_params=true, unsafe_reload=false, page_repository_root=/appl_top/115/common/html/jsp/pagecache, alias_translation=true,developer_mode=false, javaccmd=/usr/jdk142/bin/javac,send_error=true

Application Services Tier


Portal Tuning

Tune the number of content fetcher threads for PPE (poolSize). Default is 25. Adjust the fetch request timeout (requesttime). Adjust the fetch connection request timeout (stall).

zone.properties: servlet.page.initArgs=poolSize=50 servlet.page.initArgs=requesttime=200 servlet.page.initArgs=stall=100

Application Services Tier


Portal Tuning

Ensure that the mod PL/SQL cache is enabled and sized appropriately:
$APACHE_TOP/modplsql/cfg/cache.cfg: [PLSQL Cache] enabled=yes total_size=100000000 cleanup_size=75000000 cleanup_interval=86400 ; [Cookie Cache] enabled=yes total_size=25000000 cleanup_size=15000000 cleanup_interval=86400 max_size = 0

Application Services Tier


Discoverer 4i Viewer Tuning

Disable Query Prediction by setting QPPEnable=0 in pref.txt. Set ObjectsAlwaysAccessible=1 to avoid extra workbook SQL validation, and related dictionary SQL. Set the Query Governor option Limit retrieved query data to: to 100 rows. Set the option After opening a worksheet: to Dont run query. Ensure Custom workbooks define mandatory parameters.

Network Performance
Network performance is often neglected. Networks with poor latency or low bandwidth impacts user response time. Can also impact concurrent programs if the network between the application tier and data server tier is not optimal. A direct switch should be used between the application tier and data server tier

Latency should ideally be ~12ms per roundtrip.

Network Performance
Use the ping command to determine the latency of requests. Vary the packet size to determine the average latency. Do not use the default ping packet size of 32 bytes.

D:\>ping aptierhost.us.oracle.com -l 2048 Pinging aptierhost.us.oracle.com [139.185.128.27] with 2048 bytes of data: Reply Reply Reply Reply from from from from 139.185.128.27: 139.185.128.27: 139.185.128.27: 139.185.128.27: bytes=2048 bytes=2048 bytes=2048 bytes=2048 time=371ms time=330ms time=361ms time=360ms TTL=252 TTL=252 TTL=252 TTL=252

D:\>ping aptierhost.us.oracle.com -l 512 Pinging aptierhost.us.oracle.com [139.185.128.27] with 512 bytes of data: Reply Reply Reply Reply from from from from 139.185.128.27: 139.185.128.27: 139.185.128.27: 139.185.128.27: bytes=512 bytes=512 bytes=512 bytes=512 time=231ms time=210ms time=231ms time=220ms TTL=252 TTL=252 TTL=252 TTL=252

Network Performance
Use the ping command to determine the latency between the application server and the data server. Use a packet size of 2K since this the default size for SQL*Net traffic.

aptierhost{applmgr}-2-> ping -s dbtierhost 2048 PING 2056 2056 2056 2056 2056 2056 dbtierhost.us.oracle.com: 2048 data bytes from dbtierhost.us.oracle.com bytes from dbtierhost.us.oracle.com bytes from dbtierhost.us.oracle.com bytes from dbtierhost.us.oracle.com bytes from dbtierhost.us.oracle.com bytes from dbtierhost.us.oracle.com bytes (144.25.76.250): (144.25.76.250): (144.25.76.250): (144.25.76.250): (144.25.76.250): (144.25.76.250): icmp_seq=0. icmp_seq=1. icmp_seq=2. icmp_seq=3. icmp_seq=4. icmp_seq=5. time=1. time=1. time=1. time=1. time=1. time=1. ms ms ms ms ms Ms

---- dbtierhost.us.oracle.com PING Statistics---6 packets transmitted, 6 packets received, 0% packet loss round-trip (ms) min/avg/max = 1/1/1

Network Performance
Measure the sustained bandwidth on both the client network (i.e. desktops) as well as the applicationtiers. Use traceroute (or tracert) utility to determine number of hops and impact on latency. Monitor network statistics including packet rates, error rates, collisions, etc.. using tools such as netstat i.

Data Server Tier


Refer to the MetaLink document 216205.1 Database Initialization Parameters and Configuration for Oracle Applications 11i.

Ensure mandatory parameters are set correctly.

Optimally configure the buffer cache and shared pool as per the workload and the number of users:

[typical configuration for 2,000 Apps users]

db_block_buffers=800,000 shared_pool_size=2000M A poorly sized buffer cache results in excessive buffer gets and physical I/O. A poorly sized shared pool results in library cache and shared pool latch contention due to reloads and lack of space.

Data Server Tier


Enable asynchronous I/O Consider using Quick I/O or equivalent if using file system based files for the DB files.

Quick I/O improves performance and scalability by simulating raw devices, and avoiding file system cache traffic for the DB files.

Use locally managed temp files (uniform) for the temporary tablespace. Install Stats Pack (spcreate.sql) and use spauto.sql to automate hourly snapshots. Stats Pack reports can be used to trend transaction rates and business flows.

Data Server Tier


Stats Pack Report (Instance Summary)
STATSPACK report for DB Name DB Id Instance Inst Num Release Cluster Host ------------ ----------- ------------ -------- ----------- ------- -----------GSIAP 317772662 gsi1ap 1 9.2.0.5.0 YES agsidbs1 Snap Id Snap Time Sessions Curs/Sess Comment ------- ------------------ -------- --------- ------------------Begin Snap: 503400 18-May-05 11:00:01 ####### .0 End Snap: 503405 18-May-05 16:00:04 ####### .0 Elapsed: 300.05 (mins) Cache Sizes (end) ~~~~~~~~~~~~~~~~~ Buffer Cache: Shared Pool Size:
. . . . . . . . . . . .

5,313M 2,864M

Std Block Size: Log Buffer:

8K 1,024K

Data Server Tier


Stats Pack Report (Instance Summary)
Load Profile ~~~~~~~~~~~~ Redo size: Logical reads: Block changes: Physical reads: Physical writes: User calls: Parses: Hard parses: Sorts: Logons: Executes: Transactions: % Blocks changed per Read: Rollback per transaction %:
. . . . . . . . . . . .

Per Second --------------462,767.56 54,537.81 3,237.12 2,403.22 272.19 518.96 223.29 1.26 199.15 1.85 1,566.48 17.62 5.94 3.18 Recursive Call %: Rows per Sort:

Per Transaction --------------26,266.16 3,095.50 183.74 136.40 15.45 29.46 12.67 0.07 11.30 0.11 88.91 88.46 102.78

Data Server Tier


Stats Pack Report (Instance Summary)
Instance Efficiency Percentages (Target 100%) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Buffer Nowait %: 99.90 Redo NoWait %: Buffer Hit %: 96.03 In-memory Sort %: Library Hit %: 99.87 Soft Parse %: Execute to Parse %: 85.75 Latch Hit %: Parse CPU to Parse Elapsd %: 69.57 % Non-Parse CPU: Shared Pool Statistics Memory Usage %: % SQL with executions>1: % Memory for SQL w/exec>1: Begin -----90.55 66.70 60.86 End -----76.14 75.37 71.08 100.00 99.96 99.44 99.82 97.34

Top 5 Timed Events ~~~~~~~~~~~~~~~~~~ % Total Event Waits Time (s) Ela Time -------------------------------------------- ------------ ----------- -------db file sequential read 16,187,270 134,274 31.12 CPU time 110,764 25.67 global cache cr request 21,410,811 66,129 15.33 db file scattered read 3,184,765 23,571 5.46 KJC: Wait for msg sends to complete 10,722,532 20,446 4.74

Data Server Tier


Stats Pack Report (Wait Events)
Total Wait Event Waits Timeouts Time (s) ---------------------------- ------------ ---------- ---------db file sequential read 16,187,270 0 134,274 global cache cr request 21,410,811 56,241 66,129 db file scattered read 3,184,765 0 23,571 KJC: Wait for msg sends to c 10,722,532 194,069 20,446 row cache lock 74,583 5,842 17,796 wait for unread message on b 73,977 4,624 13,054 SQL*Net more data to client 6,021,483 0 8,873 enqueue 114,204 19,898 7,427 buffer busy global CR 516,382 18 4,735 buffer busy waits 434,054 192 3,857 direct path read 1,239,648 0 3,226 inactive session 1,774 1,774 1,784 latch free 242,171 19,203 1,694 db file parallel read 121,670 0 1,280 direct path write 1,270,008 0 1,110 log file sync 604,002 244 1,097 SQL*Net message from dblink 20,365 0 1,080 Avg wait Waits (ms) /txn ------ -------8 51.0 3 67.5 7 10.0 2 33.8 239 0.2 176 0.2 1 19.0 65 0.4 9 1.6 9 1.4 3 3.9 1006 0.0 7 0.8 11 0.4 1 4.0 2 1.9 53 0.1

Data Server Tier


Review Top 5 Timed Events section in the Stats Pack reports to determine the overall instance utilization. For latch free waits, latch contention is often a symptom due to a legitimate problem such as nonsharable SQL, suboptimal SQL which performs full table or full index scans, dynamic object creation/removal, etc..

Review the latch Statistics section of the Stats Pack report to determine the hot latches. Enable tracing for a few of the sessions waiting on the latch as well as the holder to determine the actual cause.

Data Server Tier


Stats Pack Report (Expensive SQL)
CPU Elapsd Physical Reads Executions Reads per Exec %Total Time (s) Time (s) Hash Value --------------- ------------ -------------- ------ -------- --------- ---------3,413,015 1 3,413,015.0 7.9 1970.29 6716.03 976039043 Module: ALECDC SELECT distinct ooha.order_number , fu.user_name , rac.cu stomer_name , to_char(wctc.last_update_date, 'DD-MON-YY hh24:mi ') , DECODE(SUBSTR(wctc.comments, 1, 21), 'NOTE: This Order-Line', wctc.process_flag || ': manually scre ened', DECODE(wctc.process_flag ,'101','101: host u 2,229,632 1 2,229,632.0 5.2 2115.49 35448.22 1280227044 Module: ALECDC select distinct pv.segment1 , nvl(pv.vendor_name_a lt, pv.vendor_name) , ai.invoice_num , hr.name , 'ap_gsiap_rpts_us@oracle.com' from po_vendors pv , ap_invoices_all ai , ap_holds_all ah , hr_organi zation_units hr where ai.payment_status_flag||''='Y' and 1,990,002 1 1,990,002.0 4.6 2321.34 Module: OKILOADDR BEGIN OKI_REFRESH_PUB.REFRESH_ADDRS( :errbuf, :rc ); END; 23934.41 4063073269

Data Server Tier


Monitor CPU and Memory Utilization Monitor paging Monitor I/O statistics, including service times. Review Stats Pack reports and correlate top SQL to the business flows. Review expensive custom SQL

Data Server Tier


Gathering Statistics

Do not gather statistics excessively on entire schemas or the entire database such as nightly or weekly. Do not gather statistics on permanent objects during peak intervals.
Gathering statistics invalidates cursors Gathering statistics requires dictionary and object level locks. Plans are not likely to change if the data distribution has not changed.

Data Server Tier


Gathering Statistics

For tables which are growing at a rapid rate, gather statistics only on those tables. Use only FND_STATS or the Gather Schema and Gather Table Statistics Concurrent Programs
Do NOT USE the analyze nor dbms_stats command directly. It is not supported, and results in sub optimal plans.

Review the table and index statistics for the objects which appear in the top SQL section of Stats Pack.

Data Server Tier


Gathering Statistics Enhancements (11i10)

Gather Schema Statistics Auto Gather option Gather Statistics only on tables which have changed Change threshold is user definable. Utilizes the Table Monitoring feature. To enable schema monitoring:
SQL> exec fnd_stats.ENABLE_SCHEMA_MONITORING()

Auto List option Lists the objects which have changed. Maintain history of Statistics Collection No Invalidate Option Does not invalidate cursors.

Data Server Tier


Gathering Statistics Enhancements (11i10)

Data Server Tier


Verifying the Statistics
SQL> set serveroutput on SQL> exec apps.fnd_stats.verify_stats ('ONT','OE_ORDER_LINES_ALL');
=================================================================================================== Table OE_ORDER_LINES_ALL =================================================================================================== last analyzed sample_size num_rows blocks 12-03-2004 22:59 3726829 37268290 3527197 Index name last analyzed num_rows LB DK LB/key DB/key CF ---------------------------------------------------------------------------------------------------OE_ORDER_LINES_N1 12-03-2004 22:12 36018080 87310 2097282 1 5 11719150 OE_ORDER_LINES_N10 12-03-2004 22:12 26519270 68610 2230418 1 4 10949180 OE_ORDER_LINES_N11 12-03-2004 22:12 16310880 96200 11196380 1 1 7668050 OE_ORDER_LINES_N12 12-03-2004 22:12 50 1 20 1 1 19 OE_ORDER_LINES_N13 12-03-2004 22:12 1363149 3132 138681 1 3 547938 . . . . . . OE_ORDER_LINES_N5 12-03-2004 22:12 0 0 0 0 0 0 OE_ORDER_LINES_N6 12-03-2004 22:12 158583 410 158670 1 1 85032 OE_ORDER_LINES_N7 12-03-2004 22:12 103459 238 18873 1 2 48075 OE_ORDER_LINES_N9 12-03-2004 22:12 4276030 11060 3101971 1 1 2444110 OE_ORDER_LINES_U1 12-03-2004 22:12 37510470 91790 37510470 1 1 17574490 ---------------------------------------------------------------------------------------------------Histogram Stats Schema Table Name Status last analyzed Column Name ---------------------------------------------------------------------------------------------------ONT OE_ORDER_LINES_ALL present 03-12-2004 22:59 OPEN_FLAG

Data Server Tier


Verifying the Statistics Column Statistics
SQL> set serveroutput on SQL> exec apps.fnd_stats.verify_stats ('ONT','OE_ORDER_LINES_ALL',0,TRUE);
=================================================================================================== Table OE_ORDER_LINES_ALL =================================================================================================== last analyzed sample_size num_rows blocks 12-03-2004 22:59 3726829 37268290 3527197 ---------------------------------------------------------------------------------------------------Column Stats Column name sample_size num_distinct num_nulls density last analyzed ---------------------------------------------------------------------------------------------------ACCOUNTING_RULE_DURATION 0 37219060 0 12-03-2004 22:51 ACCOUNTING_RULE_ID 1882057 72 18398490 .013888888 12-03-2004 22:34 . . . BOOKED_FLAG 3724692 2 0 .5 12-03-2004 22:51 . . . CANCELLED_FLAG 3724692 2 0 .5 12-03-2004 22:51 . . . LINE_ID 3721906 37219060 0 .000000026 12-03-2004 22:34 LINE_NUMBER 3721906 5649 0 .000177022 12-03-2004 22:34 LINE_SET_ID 10420 18873 37114860 .000052985 12-03-2004 22:34 OPTION_NUMBER 1350665 1176 23740270 .00085034 12-03-2004 22:51 ORDERED_ITEM_ID 3210194 50265 5117120 .000019894 12-03-2004 22:34 UPGRADED_FLAG 3125945 2 5987470 .5 12-03-2004 22:51 VEH_CUS_ITEM_CUM_KEY_ID 0 37219060 0 12-03-2004 22:34 VISIBLE_DEMAND_FLAG 668876 2 30558160 .5 12-03-2004 22:51

Data Server Tier


Enable the Auto memory manager

Pga_aggregate_target can be set to tune the PGA for the entire instance. Automatically tunes hash area and sort area sizes Returns unused memory to the OS. No more ORA1555s!!! Set undo_retention to the length of the longest running request. No need to manually set Freelist/freelist groups. A bitmap is used to automatically scale the segment related parameters. Improves PL/SQL execution performance. Improves scalability by removing a lot of stress off of the shared pool.

Enable System Managed Undo


Utilize Auto Segment Tablespace Management

Enable PL/SQL Native Compilation


Data Server Tier


New Tablespace Model for the eBusiness Suite:

Consolidates the number of Apps tablespaces from 400 tablespaces to 10. Optimizes performance via the wide stripe model. Ideal for customers migrating to RAC or migrating to raw devices. Uniform extents, locally managed No more fragmentation! Migration script can be used to migrate a schema at a time.

Data Server Tier


New Tablespace Model for the eBusiness Suite:

Objects are classified by object type and access patterns:


Transaction tables Transaction indexes Reference/SEED Interface Summary Management Archive NoLogging Queue Media Temporary Undo System Total = 12 Tablespaces

Data Server Tier


Applications Tablespace Migration Utility

MetaLink note 248857.1 ARU # is 3381489 1.4 Terabyte customer DB 24 hours New size of DB after migration (850 GB). 250 GB customer DB 4 hours New size of DB after migration (150 GB).

Migration timings: (complete migration)

Application Tuning
Review the MetaLink note Recommended Performance Patches for the Oracle E Business Suite, 244040.1.

Recommended performance patches for all the modules and tech. stack components are consolidated in this note.

Application Tuning
Workflow

When starting background engines via Concurrent Manager, set the Process Stuck parameter to No. Start a separate background engine to handle stuck processes with a very low frequency such as once or twice a day. Use deferred activities to improve online response times and facilitate asynchronous processing for flows such as Scheduling, PO Document Approval, etc.. Establish a regular frequency for purging Workflow runtime data (FNDWFPR Purge Obsolete Workflow Runtime Data).

Application Tuning
Order Management

OM Pack J contains numerous performance fixes including Pricing performance fixes. Ensure that debugging is disabled: OM: Debug Level, set to 0 for OFF QP: Debug Mode, set to Request Viewer Off WSH: Debug Enabled, set to No WSH: Debug Level, set to 0 for OFF Use the streamlined workflows. Removes unnecessary activities and subprocesses. Improves performance and amount of WF data significantly. New streamlined flow in 11.5.10 Line Flow Generic: Performance Refer to MetaLink note 130511.1

Application Tuning
Order Management

For online order entry, use the new Quick Sales Order Form Provides a checkbox deferred pricing which can be used to defer price calculation until the order is saved. Also improves overall speed of order entry from a functional / navigational perspective. Enable AutoScheduling Use deferred activities Tax Calculation Credit Check

Application Tuning
Payroll

Tune the number of threads, chunk size and the buffer sizes (pay_action_parameters):

THREADS=25 CHUNK_SIZE = 20 BAL BUFFER SIZE=550 EE BUFFER SIZE =550 RR BUFFER SIZE =550 COST BUFFER SIZE=550

Set threads to 1.52.0 times the number of data server processors. Set LOW_VOLUME=N to enable optimal plans.

Application Tuning
OA Framework Applications

Refer to MetaLink note 123456.1 (Recommended Patches for Applications) and MetaLink note 275880.1 (Framework Roadmap). If running FWK 5.7, ensure that you are running the latest rollup patch for 5.7H. Refer to MetaLink note 258333.1.

Upgrade to the latest 9iR2 JDBC Drivers (MetaLink note 164317.1)


Pool Monitor can be used to monitor the resource utilization Application Module Pool Memory Utilization JVM Properties Pre 11i10: https://<hostname>/servlet/OAAppModPoolMonitor 11i10: Login>Diagnostics>Show Pool Monitor.

Application Tuning
OA Framework Applications (Pool Monitor)

Application Tuning
OA Framework Applications (Pool Monitor)

Application Tuning (OA)


Tracing Framework Applications

Set profile FND : Diagnostics to Yes at user level Login to Self Service as the above user Click on Diagnostics icon at the top of page Select Set Trace Level and click Go Select the desired trace level and click Save Perform the activity that you want to trace Exit application

Application Tuning (OA)


Tracing Framework Applications

Application Tuning
AOLJ Connection Pool (dbc configuration)

$FND_TOP/secure/<hostname_sid>.dbc Number of DB connections used by the Java based Self Service Applications. Start with a reasonable default such as 100 or 200. FND_JDBC_MAX_CONNECTIONS=200 Tune FND_JDBC_MAX_CONNECTIONS as per the amount of user concurrency (per JVM). AOLJ automatically decays idle connections and resizes the pool.

Application Tuning
AOLJ Connection Pool (dbc configuration)

Disable sanity checks in production environments FND_JDBC_USABLE_CHECK=false FND_JDBC_PLSQL_RESET=false Reduce the number of OXTA JDBC connections In jserv.properties file, add the following entries wrapper.bin.parameters=DOXTAOutThreads=1 wrapper.bin.parameters=DOXTAInPoolSize=1 If running multiple JVMs, the OXTA connections can be a significant portion of the total JDBC connections. Automatically set in 11i10

Application Tuning
AOLJ Connection Pool (dbc configuration)

AOLJ Supports the use of Services for RAC load balancing or failover.
Patch 2566387 allows the use of service names in the configuration: New dbc parameter APPS_JDBC_URL Used in place of DB_HOST, DB_NAME, DB_PORT Useful for automatic connection load balancing

APPS_JDBC_URL=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS_LIST=(LOAD_BALANCE=ON) (ADDRESS=(PROTOCOL=TCP)(HOST=ap201ops)(PORT=1526))(ADDRESS=(PROTOCOL=TCP) (HOST=ap202ops)(PORT=1526)))(CONNECT_DATA=(SERVICE_NAME=opsperf)))

Application Tuning
AOLJ Connection Pool Monitoring

Use the JSP (AoljDbcPoolStatus.jsp) to monitor the connection pool status. Lists DBC configuration parameter settings. Connection Statistics Locked Connections Available Connections Closed Connections Allows drilldowns to determine source of the connection.
http://apptier.oracle.com:1200/OA_HTML/jsp/fnd/AoljDbcPoolStatus.jsp

Application Tuning
Connection Pool Status (AoljDbcPoolStatus.jsp)

Application Tuning
Purging

Implement a regular purge process including transient data as well as obsolete transactional data. Archive system related entities prior to purge such as
FND_CONCURRENT_REQUESTS ICX_SESSIONS

Purge old data before performing upgrades.

Application Tuning
Purging
Product FND Concurrent Program Name Purge Concurrent Request and/or Manager Data Purge "Sign on" Audit data GL Archive and Purge Mass Additions Purge Report Purge accounting tables Purge Archive and Purge Order Purge

General Ledger Assets Payables Receivables Order Management

11i10 Performance Improvements


Order Management

Significant improvements in pricing and order management.


111 11 111 11 111 11 111 11 111 11 111 11 111 11 11 11 1 HVOP Order Import Throughput 1,11 11 1.1 1 .1 1.1 1 1 .1 1,11 11

11i10 Performance Improvements


Order Management

New Java Pricing Engine


111 11 111 11 111 11 111 11 11 11 1 Order Throughput with Pricing 11 , 11 1.1 1 .1 1.1 1 1 .1 1,11 11

11i10 Performance Improvements


Inventory / Shipping

20% improvement in Pick Release. 25% improvement in Interface Trip Stop. 2X improvement in Ship Confirm.

11i10 Performance Improvements


Workflow Improvements

Java Mailer Parallel worker support 15,000 notifications per hour (per worker)

Workflow engine runtime Improved Caching Asset Import (5X) Order Management (5%) Integration with GSM Business Event Listener Mailer

11i10 Performance Improvements


Payroll Improvements New Run Balances Architecture (HRMS FP F) Improves reporting performance significantly (~90%): TRR 95%+ Payroll Register 90%+ US and Canadian Forms and Reports utilize the new Balance Reporting Architecture. Custom reports which utilize the balance user exit also benefit from the new run balances arch. Payroll run improves by 15%. Suppression of zero and null balances provides an additional 10% performance improvement.

11i10 Performance Improvements


TCA Customer Import Completely rewritten. Requires 9iR2 (or higher). Scales well with parallel workers. 300K customers per hour per worker 1 million customers imported in one hour using 4 workers.

11i10 Performance Improvements


TCA Customer Import
11 11 1 11 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 111 1 1 1 ,1 1 , 11 1

1.1 1 .1 1.1 1 1 .1

1,1 1 11 Customer Import Throughput

11i10 Performance Improvements


11i10 Tracing Improvements

Ability to enable all levels of SQL trace as well as PL/SQL profiler from Forms, Framework based pages, and Concurrent Programs. Help>About Oracle Applications shows performance information including time spent in the Form and time spent in the DB. For concurrent programs, tracing can be enabled at the program definition level and at the request level. Trace file identifier is automatically set to the Applications user name prod11i_ora_2738_BASMITH.trc

New Report (PL/SQL Profiler) Generates an HTML report of the PL/SQL profiler data.

11i10 Performance Improvements


11i10 Tracing Improvements (PL/SQL Profiler Report)

11i10 Performance Improvements


11i10 Tracing Improvements (PL/SQL Profiler Report)

11i10 Performance Improvements


11i10 Tracing Improvements (Performance Info.)

11i10 Performance Improvements


FND_STATS Improvements:

No invalidate option can be used to avoid invalidating cursors while gathering statistics. Auto Gather has been added to allow statistics to be gathered only on those objects which have changed. Change threshold is configurable. Default is 10%. Significantly reduces the time to gather statistics. Improves manageability as FND_STATS automatically determines changed object list. Maintain history of all gather stats requests. Automatically determines degree of parallelism.

11i10 Performance Improvements


Configuration Enhancements

Reviewed and optimized default settings for the entire stack via AutoConfig templates including: Forms JDK DB Concurrent Manager Discoverer AOLJ DBC

Customer Sequence Cache settings are preserved across patches/upgrades if current setting exceeds standard default. AutoConfig support for complex configurations including RAC, Load Balancing, Firewalls, etc..

11i10 Performance Improvements


Significant reduction in patching downtime

Parallelized large table updates. FNDLOAD Improvements 15% for small LDTs Orders of magnitude for large LDTs. Improvements to distributed AD. Large indexes are now created in parallel. APPS_MRC schema has been eliminated. Optimized PL/SQL recompilation order for invalid objects.

MetaLink References
Note #: 123456.1 125767.1 138159.1 164317.1 215268.1 216205.1 244040.1 246105.1 248857.1 258333.1 275880.1 Description: EBusiness Suite Recommended Patch List Upgrading Developer 6i with Oracle Applications 11i Canceling Long Running Queries in Oracle Applications 11i Upgrading Oracle JDBC Drivers with Oracle EBusiness Suite 11i Implementing and Using the JSP Precompiler Database Initialization Parameters and Configuration for Oracle Applications 11i Recommended Performance Patches for Oracle EBusiness Suite Using J2SE Version 1.4 with Oracle EBusiness Suite 11i, Release 11.5.9 or Higher Oracle Applications Tablespace Model Release 11i Tablespace Migration Utility About OA Framework Minipack 11i.FWK.H Oracle Applications Framework Release 11i Documentation Road Map

Q & A

QUESTIONS ANSWERS

Vous aimerez peut-être aussi