PERFORMANCE MONITORING AND TUNING ORACLE E-BUSINESS SUITE FOR APPLICATIONS DBAS John Kanagaraj Cisco Systems Inc. Paper# 3604 – COLLABORATE 2010 Speaker’s Qualifications • • • • • • • • IT Architect @ Cisco Systems Inc Executive Editor SELECT Journal Oracle ACE Co-author Oracle Database 10g Insider Solutions Technical Editor for various books Published in many tech magazines Frequent speaker – IOUG/OAUG/RUGs Skilled in Oracle Database and Applications Tuning SELECT: Call for Articles/Reviewers – The SELECT Journal is IOUG’s Technical Quarterly – Distributed to all IOUG members worldwide – Yearly Best Practices and Tips booklet • Submit an article or Review one! • Contact ‘select@ioug.org’ What this presentation is about • Approach to performance monitoring and tuning • Overview of end to end EBS performance • Tier based approach • Oracle Database 10g, 11g specifics for EBS • Oracle RAC considerations • Q&A Audience survey • Audience profile – DBA/Application Admin • Version survey EBS - Its all the same! (with some changes) • EBS employs well-understood technologies • Just in a different way using a strong F/work! • E.g.: Gathering Table/Index statistics – – – – EBS uses “Gather Schema Statistics” program Calls FND_STATS.GATHER_TABLE_STATS This is a PL/SQL wrapper that calls DBMS_STATS DBMS_STATS gathers object statistics • In a very controlled manner – METHOD_OPT for e.g. • FND_HISTOGRAM_COLS – controls histograms • FND_EXCLUDE_TABLE_STATS – excludes tables An Architectural overview An approach to performance management • Before starting, ask the following questions: – – – – – – What am I working towards? (Capacity? Issues?) What is slow? (Conc programs slow, Forms ok) When is it slow? (Time of day? Period end?) Extent of slowness? (All users? All geographies?) What is the Business priority? (Who gets the slice?) What is the SLA? (What is the target to aim for?) • Create and agree Service Level Agreements • Understand and document Business/Process/Data flow (esp. Qtr/Yr end) Application Execution profile Application Execution profile Desktop Tier • Browser and JVM (Jinitiator, Sun JRE) • Runs the Applet client for Oracle Forms • Needs CPU and Memory – Guess which is more important? • Keep out pop-up blockers • Stop unnecessary services • Check OTN paper on PC Client Performance here “Tech Stack” – Application tier • A number of technologies involved – Java-JRE-JVM, J2EE-OC4J, Apache/Web Servers – Networking, Load Balancers, Security layers • Performance stats not very obvious/missing • Skills do not normally lie in the DBA arena • Three areas to consider: – Latest level of patches/certifications ensure some testing and supportability – Provide adequate computing resources – Simple configuration settings can make a huge difference (positively and negatively) An Architectural overview Web Server tier • • • • • • Caching makes a lot of difference Cache static content as much as possible Go easy on graphics – logos, etc. (size!) Use parallel downloads if possible Consider local accelerators such as Akamai Consider network latency when designing/deploying OAF (or custom) pages • Chatty applications suffer most from latency • Use FireBug or Charles to debug An Architectural overview Forms tier • Forms applet requires direct connection (i.e. not connection pooled) • Forms suffers more directly from “chattiness” – Update a field => SELECT for UPDATE (traffic++) – Forms navigation triggers => validation traffic – LOVs adds to this problem; use good filters • Forms settings – Notes 384241.1, 138159.1 – Socket mode, Forms DCD, Cancel Query • Use Forms Trace: Notes 135389.1, 296559.1 JVM Troubleshooting & Tuning • Note: 362851.1 JVM setup Guidelines for EBS • Provide adequate CPU/Memory (Beware VMs!) • Impact of # of JVMs and settings of interest – Level and Verbosity of logging (switch off when done) – Heap settings: balance size versus GC overheads – Larger heaps may reduce OOM errors, but… • May mask issues – cursor leaks (track GC patterns) • Result in long GC pauses (application freezes) • Check full/partial GCs, parallel GC, no. of threads and type – Heap dumps will be required for Support – Use EM Application Server Control Concurrent Manager tuning • Framework to submit, schedule, control and execute batch jobs and transaction processors • Needs good understanding of: – Underlying FND tables (monitor/troubleshoot/report) – Concept of queues, parameters such as number, type, width, runtime window, inclusion/exclusion, sleep times, cache and other settings (Manage CM) • CM Queues are basically “pipes” • Balance is key: Number/width vs. Complexity and Load Concurrent Manager tuning • Configure Managers by priority and runtimes – Avoid queue backup! (breakout Standard Manager) – “Short(Long)/Critical”, “Short(Long)/Non-critical”, “Administrative” and “Period End” – Set up process to review all new conc. jobs • Purging Concurrent Managers – Relook at the defaults depending on request rate – Purge different reports by their individual rate – Consider APPLCSF log/out file system performance • Set Sleep seconds/Cache by manager type Concurrent Manager tuning • Store/Analyze Request Completion times – Variation is key to pointing out problem areas – Could be caused by underlying inefficient SQL and/or varying parameters – Check unbounded inputs – Read “An Industrial Engineer’s Approach to Managing Oracle Databases" by Robyn Anderson Sands in the Q2 2009 issue of IOUG SELECT – Check Metalink Note: 1057802.1 Best Practices for Performance for Concurrent Managers • Non-SQL related Reports performance – Check Note 296559.1 Oracle Database tuning • Database performance is key to overall EBS performance • Database produces a large number of stats • First, follow the standards! – Strictly follow the mandatory Init.ora parameters – Make sure all objects are analyzed as per EBS approved methods – Don’t make any unapproved/unsupported changes – (Try to) keep up with all the DB patches Oracle Database tuning • Next, provide adequate computing resources – CPU: Plan for peak processing (Qtr/Year End) as well as for growth and spikes in business – Memory: Same as CPU; Cater for increase in JVMs or Connection pool setting – I/O: Track I/O rates from AWR/Statspack, monitor redo, undo and TEMP write performance (RAID 1) – Depending on OS Memory Free, adjust the SGA_TARGET upward (watch for swapping) – Memory pools: This is the lower limit when SGA_TARGET is set Tools: Oracle Database 10g • AWR – Performance Warehouse – – – – – – – Out of the box Workload Repository (7 day retention) Active Session History: in memory, persisted ADDM: Hourly snapshots automatically analyzed High load SQLs and Statistics Advisors: SQL Tuning, SQL Access, etc. New views provide much better analysis Tightly integrated to Oracle Enterprise Manager • Check IOUG repository for papers/articles AWR Report: Deep dive Top 5 Timed Events Avg %Total ~~~~~~~~~~~~~~~~~~ Event Waits Time (s) wait Call (ms) Time Wait Class ----------------------- ------------ ----------- ------ ------ ---------db file sequential read 10,818,054 CPU time 74,085 7 20,605 56.7 User I/O 15.8 gc buffer busy 2,086,824 12,810 6 9.8 Cluster db file scattered read 3,226,504 12,362 4 9.5 User I/O 879,441 4,312 5 3.3 User I/O read by other session – 1 Hour snap: 16 CPUs: 57,600 seconds available – Shared with another 10g database – used up the rest – OS CPU usage (sar: -u 100% CPU busy; -q: Large CPU queue; Wait I/O% high) A process interacts with CPU “CPU Used” Waiting for CPU (not accounted in Oracle) I/O Wait - various CPU 0 CPU 1 Ready Queue Wait Queue CPU Slice Context switches CPU Interrupt CPU Interrupt CPU Interrupt CPU Interrupt CPU Interrupt CPU load: Wait time inflation “CPU Used” Waiting for CPU ( not accounted in Oracle ) I/ O Wait- various CPU0 Wait time inflation CPU1 Ready Queue Wait Queue CPU Slice Context switches CPU Interrupt CPU Interrupt CPU Interrupt CPU Interrupt CPU Interrupt AWR Report: Deeper dive Top 5 Timed Events Avg %Total ~~~~~~~~~~~~~~~~~~ Event Waits Time (s) wait Call (ms) Time Wait Class ----------------------- ------------ ----------- ------ ------ ---------db file sequential read 10,818,054 CPU time 74,085 7 20,605 56.7 User I/O 15.8 gc buffer busy 2,086,824 12,810 6 9.8 Cluster db file scattered read 3,226,504 12,362 4 9.5 User I/O 879,441 4,312 5 3.3 User I/O read by other session – High CPU usage caused CPU starvation – Many processes in CPU Ready Queue – Resulting “I/O Wait Time” inflation AWR Report: Deep dive SQL ordered by CPU Time DB/Inst: TSTDB/TSTDB1 Snaps: 1675-1676 -> Resources reported for PL/SQL code includes the resources used by all SQL statements called by the code. -> % Total DB Time is the Elapsed Time of the SQL statement divided into the Total Database Time multiplied by 100 CPU Elapsed Time (s) Time (s) CPU per Executions % Total Exec (s) DB Time SQL Id ---------- ---------- ------------ ----------- ------- ------------11,733 15,203 1,525 7.69 52.2 4bdz6z8r4b2dj Module: icx.por.req.server.RequisitionAM SELECT PSSV.COUNTRY FROM PO_VENDORS PSV, PO_VENDOR_CONTACTS PSCV, PO_VENDOR_SITE S PSSV WHERE NVL (PSV.ENABLED_FLAG, 'Y') = 'Y' AND PSV.VENDOR_ID = PSSV.VENDOR_I D(+) AND ( PSV.VENDOR_TYPE_LOOKUP_CODE IS NULL OR PSV.VENDOR_TYPE_LOOKUP_CODE <> 'EMPLOYEE' ) AND (SYSDATE BETWEEN NVL (PSV.START_DATE_ACTIVE, SYSDATE - 1) AND Tuning SQL • Standard code: – Search for SQL in Metalink – Possible performance bugs – Open a TAR • SQL Tuning: – – – – – Traditional: Trace/TKPROF, Rewrite SQL/redesign Check Stats fix (Histograms, TCF) SQL Tuning Advisor: Deep dive in IOUG paper SQL Outlines: Fix from the outside If on 11g, look at SQL Plan Baselines Looking into the past • Active Session History: Execution history – – – – Introduced in 10g, expanded in 11g 1 second sample in memory; 10th sample persisted V$ACTIVE_SESSION_HISTORY in memory DBA_HIST_ACTIVE_SESS_HISTORY in AWR • Bind variable capture – Values for bind variables captured/stored in AWR – 1st parse, then at 15 min interval – V$SQL_BIND_CAPTURE/DBA_HIST_SQLBIND Object Statistics in EBS • “Gather Schema Statistics” => FND_STATS • DBMS_STATS gathers object statistics – History optionally stored (not required in 10g) – METHOD_OPT: Builds column list for histogram from FND_HISTOGRAM_COLS – See Metalink CKE Note: 358323.1 – 11i/R12 difference: Default INVALIDATE=YES • Register custom schemas to use this method • Be aware of bind peeking (solved in 11g?) Oracle RAC in EBS Online Users: Forms, Self Service F/E 2 F/E 1 F/E 3 Interconnect 2 Node DB servers DB Node 1 DB Node 2 Interconnect ships Database blocks across nodes (Main overhead in RAC) Non EBS Queries Discoverer (ad-hoc) Other I/Fs Services direct nonEBS connections to one node (Node 2) Shared storage Connection fails over to Node 1 Services Web/Forms (online) and Concurrent Manager (batch) front-end servers Each Concurrent manager connects to one specific node; Online users load balance to both nodes Primary connection to Node 2 RAC: AWR report Segments by CR Blocks Received -> Total CR Blocks Received: -> Captured Segments account for DB/Inst: TSTDB/TSTDB2 127,334 56.8% of Total Tablespace Owner Name Snaps: 26401-26402 Subobject Object Name Name CR Obj. Blocks Type Received %Total ---------- ---------- -------------------- ---------- ----- ------------ ------APPLSYS APPLSYSD1 FND_CONCURRENT_REQUE TABLE 21,345 16.76 APPLSYS APPLSYSX1 FND_CONCURRENT_REQUE INDEX 9,357 7.35 XXAPP_O XXAPPD1 SYS_IOT_TOP_4005193 INDEX 7,771 6.10 XXAPP_O XXAPPD1 XXAPP_RPR_REPAIR_ORD TABLE 7,770 6.10 INV INVD1 MTL_MATERIAL_TRANSAC TABLE 6,716 5.27 ------------------------------------------------------------- – Too many Conc. Managers; very low Sleep_seconds – Expensive external queries: not using directed Services (Application partitioning) Other factors in EBS • Application tuning: – Keep up with patches/certifications – Test/apply performance patches proactively – See Note: 244040.1 for recommended patches • Develop/implement Archive/Purge Policy – – – – WF Purging is key Check/pursue purging for specific modules If R12, check Purge Portal Archiving provided by Oracle as well as 3rd party: HP, IBM – Buzzword is “ILM” What we covered • Approach to performance monitoring and tuning • Overview of end to end EBS performance • Tier based approach • Oracle Database 10g, 11g specifics for EBS • Oracle RAC considerations • Q&A Thank you Please complete the Survey (Paper #3604) Link up with me on LinkedIn John Kanagaraj