
Explore how performance blends science and art to meet expectations. Learn a whole brain approach to performance management, tuning, and engineering for database workloads.
Managing performance becomes easy with practice and perseverance; this lecture uses the bicycle balance metaphor and Edison’s perseverance idea to show learning performance tuning through failure and insight.
There is no single solution that fixes all performance problems. Instead, manage performance with a scenario-based approach and pick the best option for each situation.
Explore how performance tuning and management improve Oracle database efficiency, using travel and road-trip analogies to teach basic administration, optimization techniques, and how to become a capable performance engineer.
Define performance engineering by linking software requirements to non-functional demands in design, build, and deployment. Align workload, concurrent transactions, geolocation, and network considerations to production performance.
Learn to diagnose performance issues by identifying root causes from symptoms using data and logs, then apply the right tuning options: SQL, indexing, partitioning, and configuration.
Manage performance by prioritizing high priority transactions over low priority ones, allocating more resources to critical operations while less critical tasks wait, ensuring key workloads finish efficiently without tuning.
Explore case studies on Oracle performance problems, learn to interpret AWR reports, and apply out-of-the-box troubleshooting to distinguish between database, application, and hardware bottlenecks.
Understand how to distinguish luck from chance in performance outcomes by applying performance engineering and non-functional requirements to design, test, and deploy applications according to how they will be used.
Explore how to diagnose database performance by distinguishing user, application, and database response times, identify root causes, and apply tuning strategies within non-functional requirements, focusing on cpu vs wait time.
Optimize resource use by avoiding unnecessary work, using bind variables and prepared statements to reduce parsing and memory, and preferring index lookups to minimize network transfer.
Avoid poor connection management by minimizing connections during peak load and disconnecting on shutdown. Optimize sql by ensuring proper join conditions, avoiding function calls, and avoiding full table scans.
Assess performance-focused design decisions, from data model and physical design to constraints, optimizer-driven execution plans, and parallelism, balancing integrity, redundancy, and materialized view strategies.
Explore how upfront design choices—data types, column order, indexing, and buffer cache—drive database performance, with practical labs on using bind variables and functions to optimize queries.
In session 5, learn how connection management and connection pools impact scalability, comparing single-connection vs repeated connections and outlining best practices for using pools and leaving connections open until shutdown.
Analyze SQL response time by breaking the elapsed time into CPU time and wait time, identify why waits occur, and apply tuning to reduce CPU usage or waiting delays.
Define database time as the sum of CPU and wait time reflecting the database's work. The lecture uses scenarios to show how CPU and wait time determine DB time.
Evaluate when hardware upgrades improve performance versus tuning the root cause. Measure user, application, and database response times to set non-functional requirements guiding efficient tuning.
Understand db time as the sum of active time in the database, excluding idle time, and use wait events to spot bottlenecks such as buffer busy waits and latch contention.
Explore wait events caused by shared pool and dictionary cache contention, and learn to reduce IO by using indexing, partitioning, and table reorganization to keep data in memory.
Explain how sequential read and scattered read i/o waits occur in Oracle queries, contrasting index lookups with full table scans, and show how block reads and buffer cache affect performance.
Understand space management in Oracle databases: dictionary-managed vs locally managed table spaces, manual vs automatic segment management, high watermark, free lists, and how block migration and rotation optimize performance.
Determine the optimal Oracle block size by workload, choosing between transaction processing and querying. Benchmark five sizes: two, four, eight, sixteen, and thirty-two kilobytes, to maximize concurrency and minimize waits.
Explore how to read awr metrics and memory statistics to diagnose wait events, analyze physical reads vs buffer gets, and understand block size and execution plan choices.
Explore block size strategies and space management in Oracle, comparing manual and automatic segment space management and settings like BCB free, BC2, BC3, free lists, and high watermarks.
Explore alternate storage techniques for Oracle databases, including heap and partitioned tables, cluster tables, and materialized views. Understand how local and global indexes, partition pruning, and sharding affect performance.
Explore how storage performance affects Oracle database tuning, using IOPS, MBBS, and RPM; learn about volume managers, tiered storage, compression, heat maps, and AWR-based troubleshooting.
Identify root causes of database slowdowns using diagnostic data from AWR snapshots, dynamic performance views, and the automatic workload repository to obtain a holistic view of activity over time.
Learn how to interpret an AWR report by selecting two close snapshots to reveal the database's performance in a chosen time window, identify waits, top queries, and issues.
Interpret AWR reports by comparing hourly snapshots to reveal top SQL executions and their wait times, and assess database health through sessions, logins, and CPU versus wait metrics.
Learn to interpret an AWR report, create baselines from snapshots, and analyze top waits, CPU, IO, and SQL queries to drive performance tuning.
Learn to interpret an AWR report to identify the queries and objects driving IO and CPU waits, analyze elapsed time and top offenders, and pinpoint root causes for tuning.
Learn to read an AWR report by focusing on the relevant sections, using snapshots and elapsed time to pinpoint bottlenecks, CPU, waits, and service statistics.
Learn how to create an AWR report between beginning and end snapshots and why an instance restart between them prevents aggregation.
Tune the buffer cache by sizing memory, using multiple buffer pools (keep, recycle, default), and leveraging flash cache to improve hit ratio and reduce disk i/o.
Explore the Oracle shared pool, its library cache and dictionary caches, and how locks, serialization, and result cache influence performance, invalidations, and reloads in query execution.
Master PGA tuning and memory advisories in Oracle AWR to optimize buffer cache, temporary tablespace, and joins, with actionable guidance from advisory reports.
Identify i/o hotspots from the AWR report by analyzing read/write rates, latency, and file types, then optimize with indexing, partitioning, views, and memory caching to reduce disk bottlenecks.
Compare ASH and AWR to diagnose bad SQL by examining active session history, which samples activity every second for the last 60 minutes, complementing AWR snapshots that show top SQL.
Uncover how SQL profiles affect the Oracle optimizer decisions by comparing explained plans with actual execution statistics, and learn when to refresh profiles after changing object statistics.
Learn how huge pages enlarge memory pages to exceed the default partition limit, enabling Oracle to manage larger memory and improve utilization.
This training will enable participants to learn Advanced Tuning and Troubleshooting techniques for Oracle Databases. It will enable the participants to go beyond standard troubleshooting methods and get to advanced techniques analysis to diagnose performance problems. At the end of the training, you will be able to interpret an AWR report and identify whether there is any problem in your database, and if they exist, what are the top problems / root causes of problems.
Additional resources( slide deck , practice guide etc) are part of Lecture 10.
The topics covered in this course are
Understanding Database Execution and Resource Utilization
- CPU, Memory and I/O usage patterns
- When does the Database use what Resource
Design – Why is it the best and first place to fix Performance Issues
- Design Fundamentals
- Data Type
- Using Constraints
- Considering Alternate Storage techniques
Will Adding Hardware solve Performance Issues?
- Response Time = Service Time + Wait Time
Accurately Identifying Performance Metrics
- Understanding the Wait Event Ecosystem
o Wait Event Fundamentals
o Diagnosing Problems based on Wait Events
- Understanding Ratio Analysis
o Memory Issues
o I/O Issues
o Space Issues
Understanding Physical Design
Optimizing Storage Configuration
- Hardware / Disk Optimization ( Understand your Storage)
- Space Vs IOPS Vs MBPS – What do you ask when you need Storage
- File placement Strategies – With Striping
How to Read an AWR Report
- Important Sections of an AWR Report
- Approach to read an AWR Report
- Important terms to know to do a 5 minute Analysis and identify the top issue/ problem
Get the Best out of SGA Memory
- Tuning Buffer Cache
– Keep/Recycle Pools, how to configure them
– Using Flash Cache
- Tuning Shared Pool
– Why to Share Cursors
– How to identify if Cursors are Shared
– Keeping Objects in Shared Pool
– Using Result Cache
- Tuning PGA
– Serial Reuseability
– FREE Unused Memory
Identify I/O Hotspots
- File & Tablespace I/O Statistics
- Top Objects consuming I/O
Identify Bad SQL
- What is Bad SQL
- Is it good to do Disk Reads or Memory Reads
- Is there a Threshold for Memory and CPU Consumption
- What to do after Identifying them