Admin

Oracle Peoplesoft

Oracle AWR Report Deep Dive: SQL, Wait Events & I/O Performance Tuning

Master Oracle AWR reports. Deep dive into top SQL, wait events, and I/O analysis to diagnose and optimize database performance effectively.

By Someshwar ThakurPublished: August 1, 202615 min read10 views✓ Fact Checked
Oracle AWR Report Deep Dive: SQL, Wait Events & I/O Performance Tuning
Oracle AWR Report Deep Dive: SQL, Wait Events & I/O Performance Tuning

Overview: Unlocking Database Performance with Oracle AWR Reports

In the complex world of enterprise applications, maintaining optimal database performance is paramount. For organizations leveraging Oracle databases, especially those powering critical systems like Oracle PeopleSoft, performance bottlenecks can lead to significant operational disruptions, slow user experience, and ultimately, impact business productivity. This is where the Oracle Automatic Workload Repository (AWR) report emerges as an indispensable tool for database administrators (DBAs) and performance engineers.

The AWR report is a comprehensive performance diagnostic tool provided by Oracle Database. It collects, processes, and maintains performance statistics for problem detection and self-tuning purposes. By capturing snapshots of vital database statistics at regular intervals, AWR allows DBAs to analyze historical performance data, identify trends, pinpoint performance degradation, and diagnose the root cause of bottlenecks. Think of it as a detailed health check and diagnostic report for your Oracle instance, providing insights into everything from SQL execution efficiency to wait events and I/O patterns.

A deep dive into an AWR report enables us to dissect the database's behavior over a specific period, helping answer critical questions: Which SQL statements consumed the most resources? What are the most prevalent wait events hindering performance? Are there any I/O hotspots or inefficient memory configurations? For PeopleSoft environments, where complex queries, batch processes, and numerous concurrent users interact with the database, understanding these metrics is crucial for ensuring the application runs smoothly and efficiently.

Prerequisites for AWR Analysis

Before embarking on an AWR report deep dive, ensure the following prerequisites are met:

  • Oracle Diagnostic Pack License: The Automatic Workload Repository (AWR) is part of the Oracle Diagnostic Pack, which requires a separate license. Without this license, generating and analyzing AWR reports is a violation of Oracle's licensing terms.
  • Appropriate Database Privileges: To generate an AWR report and query the underlying AWR views (DBA_HIST_*), the user must have the necessary privileges. Typically, users with the DBA role or the SELECT_CATALOG_ROLE and execute privileges on DBMS_WORKLOAD_REPOSITORY can perform these tasks. Connecting as SYSDBA is always an option for full access.
  • AWR Snapshots Enabled: AWR automatically collects snapshots of performance statistics by default. You can verify the snapshot interval and retention period by querying DBA_HIST_WR_CONTROL. If snapshots are not being taken or the interval is too long for granular analysis, they may need adjustment.
  • Access to the Database Server: You'll need SQL*Plus access to the Oracle database server to generate the report script and potentially to query AWR views directly.

You can check the current AWR snapshot settings with the following SQL command:


SET PAGESIZE 100
SET LINESIZE 200
COLUMN snap_interval FORMAT A20
COLUMN retention FORMAT A20

SELECT snap_interval, retention
FROM DBA_HIST_WR_CONTROL;

Expected output might look like:


SNAP_INTERVAL        RETENTION
-------------------- --------------------
+00000 01:00:00.0     +00008 00:00:00.0

This indicates snapshots are taken every 1 hour and retained for 8 days. If you need to modify these settings, for instance, to capture snapshots every 30 minutes and retain for 30 days (43200 minutes), you can use:


EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(interval => 30, retention => 43200);

Step-by-Step AWR Report Deep Dive

Generating an AWR Report

The first step is to generate the AWR report. This is typically done via SQL*Plus by running the awrrpt.sql script located in the RDBMS admin directory.

  1. Connect to SQL*Plus:
    
    sqlplus / as sysdba
            
  2. Run the AWR report script:
    
    @?/rdbms/admin/awrrpt.sql
            
  3. Provide Inputs (example values for demonstration):

    The script will prompt you for several inputs:

    • Report Type: Choose html for browser-friendly viewing or text for command-line analysis. HTML is generally preferred for its navigability.
      
      Enter the Report Type: html
              
    • DB Id and Instance Number: The script will list available databases and instances. Select the one you want to analyze. If you only have one, press Enter.
      
      Instances in this database
      ~~~~~~~~~~~~~~~~~~~~~~~~~~
         DB Id    Inst Num Instance Name
      ----------- -------- ------------
       3862660026        1 orcl
      
      Enter the DB Id for the desired instance.
      Defaults to "3862660026"
      Enter value for dbid: 3862660026
      
      Enter the Instance Number for the desired instance.
      Defaults to "1"
      Enter value for instance_number: 1
              

      Tip: You can find these values by running SELECT dbid, instance_number FROM V$DATABASE, V$INSTANCE;

    • Begin and End Snapshot IDs: The script will display a list of recent AWR snapshots. Choose the BEGIN_SNAP_ID and END_SNAP_ID that define the time window you want to analyze. For instance, to analyze a one-hour period where performance was degraded, select the snapshot just before and just after the degradation.
      
      ... (list of snapshots) ...
      
      Enter the Begin Snapshot Id for the report.
      Enter value for begin_snap: 12345
      
      Enter the End Snapshot Id for the report.
      Enter value for end_snap: 12346
              

      Tip: To see a wider range of snapshots, query SELECT snap_id, begin_interval_time, end_interval_time FROM DBA_HIST_SNAPSHOT ORDER BY snap_id DESC;

    • Report Name: Provide a name for your AWR report file.
      
      Enter the Report Name.
      Defaults to awrrpt_1_12345_12346.html
      Enter value for report_name: awrrpt_peoplesoft_perf_issue_20231026.html
              

    Once generated, open the HTML file in your web browser.

Navigating the AWR Report

The AWR report is structured with a table of contents at the top, allowing you to jump to specific sections. Key sections to focus on initially include:

  • Report Summary: Provides high-level information about the database and the reporting period.
  • Cache Sizes: Shows the sizes of the various memory caches (SGA, PGA).
  • Load Profile: Critical section showing database activity levels (transactions per second, redo size, logical/physical reads per second, etc.).
  • Instance Efficiency Percentages: High-level indicators of how efficiently the instance is operating.
  • Top 5 Timed Foreground Events: The most crucial section for identifying performance bottlenecks, showing where the database spent most of its time waiting.
  • SQL Statistics: Details on top SQL statements by various metrics.
  • IO Statistics: Information about I/O activity.

Top SQL Analysis

One of the most valuable aspects of an AWR report is its ability to highlight resource-intensive SQL statements. Navigate to the "SQL Statistics" section. Here you'll find several subsections:

  • SQL ordered by Elapsed Time: This is often the first place to look. It identifies queries that took the longest wall-clock time to complete. These might be long-running batch jobs or complex Peoplesoft reports.
    
    SQL ordered by Elapsed Time               DB/Inst: ORCL/orcl  Snaps: 12345-12346
    
    Elapsed      CPU     Executions  Elapsed    CPU per   Executions  SQL Id
    Time (s)     Time (s)             per Exec   Exec (s)  per Sec
    ---------- ---------- ----------- ---------- --------- ----------- -------------
       125.61      88.23          10      12.56      8.82        0.00 fghjkl12345
       102.34      75.12         100       1.02      0.75        0.00 asdfghjkl1
        ...
            

    Look for high Elapsed Time (s) and high Elapsed per Exec (s). A query with high total elapsed time but low elapsed time per execution might indicate it's executed frequently. A query with high elapsed time per execution suggests a single slow execution.

  • SQL ordered by CPU Time: Identifies queries that consumed the most CPU resources. High CPU usage can indicate inefficient query plans, excessive data processing, or missing indexes.
    
    SQL ordered by CPU Time                   DB/Inst: ORCL/orcl  Snaps: 12345-12346
    
    CPU        Elapsed    Executions  CPU per    Elapsed   Executions  SQL Id
    Time (s)   Time (s)               Exec (s)   per Exec  per Sec
    ---------- ---------- ----------- ---------- --------- ----------- -------------
        88.23     125.61          10       8.82     12.56        0.00 fghjkl12345
        75.12     102.34         100       0.75      1.02        0.00 asdfghjkl1
        ...
            
  • SQL ordered by Physical Reads / Logical Reads: These sections help identify I/O-intensive queries. High physical reads often point to inefficient data access, lack of proper indexing, or large table scans. Logical reads (buffer gets) indicate how much data was accessed in the buffer cache. High logical reads can still be problematic if the query processes too much data, even if it's in memory.

    In a PeopleSoft context, large-scale reports, data conversion processes, or poorly optimized custom SQL can often appear in these sections.

For any problematic SQL ID, you can retrieve the full SQL text from the database using:


SELECT sql_text
FROM DBA_HIST_SQLTEXT
WHERE sql_id = 'fghjkl12345';

Analyze the SQL text, its execution plan (using EXPLAIN PLAN or DBMS_XPLAN.DISPLAY_AWR), and consider indexing, query rewriting, or statistics updates.

Wait Events Analysis

The "Top 5 Timed Foreground Events" section is arguably the most critical part of an AWR report. It shows where the database spent most of its active time (excluding idle events). The events are listed by their total wait time, giving you an immediate indication of the primary bottlenecks.


Top 5 Timed Foreground Events           DB/Inst: ORCL/orcl  Snaps: 12345-12346
-> % Time is total wait time for that wait class sample
-> Total active time for foreground sessions: 4.8min

Event                             Waits    Time (s) % DB time Wait Class
------------------------------ -------- ----------- -------- ----------
db file sequential read          12,567       165.2     57.4 User I/O
log file sync                     2,100        45.1     15.7 Commit
db file scattered read            5,890        30.5     10.6 User I/O
CPU + CPU (OS)                                 25.3      8.8 CPU
enq: TX - row lock contention       150        10.2      3.5 Concurrency
------------------------------ -------- ----------- -------- ----------
        

Common wait events and their interpretations:

  • db file sequential read: Indicates single block reads, typically from index lookups or single-row table access. High values suggest inefficient indexing, too many index lookups, or I/O contention on data files. In PeopleSoft, this could be due to numerous small transactions or non-optimal index usage.
  • db file scattered read: Indicates multi-block reads, usually from full table scans or fast full index scans. High values often point to missing indexes, stale statistics leading to full table scans, or large range scans. Peoplesoft batch processes are prone to these if not properly tuned.
  • log file sync: Occurs during a COMMIT or ROLLBACK. The session waits for the Log Writer (LGWR) to write the redo buffer to the redo log file on disk. High values indicate slow I/O subsystem for redo logs, frequent commits, or network latency if redo logs are on remote storage. PeopleSoft applications with high transaction rates can experience this.
  • latch free: Sessions contending for a latch (a low-level serialization mechanism). High latch contention often points to hot blocks, frequent access to specific data structures, or CPU saturation.
  • enq: TX - row lock contention: Indicates sessions waiting for a row-level lock held by another session. Common in highly concurrent OLTP environments like PeopleSoft, especially during updates or deletes on the same data. Identifying the blocking session and the SQL causing the lock is crucial.
  • direct path read/write: Data is read/written directly to disk, bypassing the buffer cache. Often associated with large sorts, parallel query operations, or temporary tablespace usage.

Correlating wait events with the "Top SQL" section is key. For example, if db file sequential read is high, check the SQL ordered by physical reads. If log file sync is high, look for SQL statements with high commit rates. You can also query DBA_HIST_SYSTEM_EVENT for more detailed historical wait event data.

I/O Analysis

The AWR report provides detailed I/O statistics to identify bottlenecks at the storage level. Look at:

  • Tablespace IO Stats: Shows I/O activity per tablespace.
    
    Tablespace IO Stats                     DB/Inst: ORCL/orcl  Snaps: 12345-12346
    -> ordered by Reads per Second
    
    Tablespace
    Name             Av Rd/s Av Wr/s Av Blk R/s Av Blk W/s Av Rd(ms) Av Wr(ms)
    ---------------- -------- -------- --------- --------- --------- ---------
    PSAPSDATA             2.5      0.5       2.5       0.5      10.2       5.5
    PSAPPSINDEX           1.2      0.1       1.2       0.1       8.5       3.2
    SYSAUX                0.8      0.2       0.8       0.2       7.1       4.1
    UNDOTBS1              0.3      0.2       0.3       0.2       6.8       3.8
        ...
            

    This section helps identify which tablespaces are experiencing the most read/write activity (Av Rd/s, Av Wr/s) and the average read/write times (Av Rd(ms), Av Wr(ms)). High read/write times indicate slow storage. For PeopleSoft, PSAPSDATA and PSAPPSINDEX tablespaces are typically the busiest.

  • File IO Stats: Provides even more granular detail, listing I/O activity per data file. This helps pinpoint specific data files or LUNs that are I/O hotspots.
    
    File IO Stats                           DB/Inst: ORCL/orcl  Snaps: 12345-12346
    -> ordered by Reads per Second
    
    Tablespace           Filename
    -------------------- --------------------------------------------------------
    Av Rd/s Av Wr/s Av Blk R/s Av Blk W/s Av Rd(ms) Av Wr(ms)
    -------------------- -------- -------- --------- --------- --------- ---------
    PSAPSDATA            /u01/app/oracle/oradata/orcl/psapsdata01.dbf
                           1.5      0.3       1.5       0.3      12.5       6.1
    PSAPSDATA            /u01/app/oracle/oradata/orcl/psapsdata02.dbf
                           1.0      0.2       1.0       0.2       8.9       4.8
    PSAPPSINDEX          /u01/app/oracle/oradata/orcl/psappsidx01.dbf
                           0.8      0.1       0.8       0.1       9.2       3.5
        ...
            

    High Av Rd(ms) or Av Wr(ms) values (e.g., consistently above 10-20ms) for critical data files suggest storage latency issues. Correlate these with db file sequential read and db file scattered read wait events to understand the impact on user sessions.

You can also query DBA_HIST_IOSTAT_FILE for more detailed historical I/O statistics.

Other Key Sections (Briefly)

  • Segments by Physical Reads/Logical Reads/Writes: This section identifies specific database objects (tables, indexes) that are experiencing the most I/O or buffer access. This is crucial for identifying 'hot' tables or indexes that might benefit from tuning, partitioning, or better indexing. For PeopleSoft, this might reveal heavily accessed transaction tables or reference data.
  • Buffer Pool Statistics: Provides insights into the efficiency of the buffer cache. Look for high buffer cache hit ratios (typically above 90-95% for OLTP). Low ratios suggest that data is frequently being read from disk, which might indicate an undersized buffer cache or inefficient SQL.
  • Memory Statistics (SGA, PGA): Shows the usage of the System Global Area (SGA) and Program Global Area (PGA). Check the "PGA Aggregate Target Advisory" and "SGA Target Advisory" for recommendations on optimal memory sizing.
  • Advisory Statistics: Oracle provides advisories for Buffer Cache, Shared Pool, PGA Target, and other components. These can offer actionable recommendations for memory sizing.

Security Considerations

AWR reports contain sensitive performance data that can inadvertently reveal details about application behavior, data access patterns, and even specific queries that might expose business logic or data structures. Therefore, proper security practices are essential:

  • Restrict Access to AWR Reports: Store generated AWR HTML or text files in secure locations with restricted access. Only authorized personnel (DBAs, performance engineers) should have access.
  • Least Privilege Principle: Grant only the necessary privileges to users who generate AWR reports. While SYSDBA has full access, consider creating a dedicated role with just the required SELECT privileges on DBA_HIST_* views and execute privileges on DBMS_WORKLOAD_REPOSITORY for non-SYS users.
  • Data Masking/Redaction: If AWR reports need to be shared with a wider audience (e.g., application developers), consider redacting or masking sensitive information, especially from SQL text, if it contains literal values that could expose confidential data.
  • Auditing: Implement auditing for access to AWR data and the generation of AWR reports to track who accessed what and when.
  • Secure Transmission: When transferring AWR reports across networks, ensure secure protocols (e.g., SFTP, HTTPS) are used.

Best Practices for AWR Analysis

  • Establish Baselines: Regularly generate AWR reports during periods of normal, healthy database operation. These "baseline" reports are invaluable for comparison when performance degrades, allowing you to quickly identify deviations.
  • Analyze Trends, Not Just Snapshots: While individual AWR reports are useful, analyzing a series of reports over time (e.g., daily, weekly, monthly) helps identify performance trends, growth patterns, and recurring issues.
  • Correlate with Application Monitoring: Always correlate AWR findings with application-level monitoring (e.g., PeopleSoft's Process Monitor, Tuxedo logs, application server logs). A database bottleneck might be triggered by a specific PeopleSoft process, a peak in user activity, or a poorly coded custom query.
  • Utilize ADDM and ASH: AWR is foundational, but Oracle's Automatic Database Diagnostic Monitor (ADDM) provides expert-system analysis of AWR data, offering prioritized recommendations. Active Session History (ASH) provides granular, real-time session-level details, perfect for diagnosing short-duration or transient issues not easily captured by AWR's hourly snapshots. Use them in conjunction for a holistic view.
  • Proactive Tuning: Don't wait for performance to degrade. Regularly review AWR reports, especially after major application changes, upgrades, or data loads, to proactively identify potential issues and tune accordingly. Pay attention to AWR's advisory sections.
  • Focus on the "Top" Consumers: Start your analysis with the highest consumers of resources (Top 5 Timed Foreground Events, Top SQL by Elapsed Time/CPU/I/O). Addressing these usually yields the most significant performance gains.
  • Consider Workload Characteristics: Understand if the database workload is OLTP (many small transactions), OLAP (complex queries, reporting), or batch-heavy. Tuning strategies differ significantly based on workload. PeopleSoft environments are often a mix of all three.

FAQ

Here are answers to some common questions regarding Oracle AWR reports:

Q1: Is the Oracle AWR report free to use?

No, the Oracle AWR report functionality is part of the Oracle Diagnostic Pack, which requires a separate license. Using AWR features without the appropriate license is a violation of Oracle's licensing policy. Organizations should consult their Oracle license agreements or sales representative to ensure compliance.

Q2: How often should AWR snapshots be taken, and for how long should they be retained?

The default AWR snapshot interval is 60 minutes, and the retention period is 8 days. For most production environments, a 60-minute interval is sufficient for general trend analysis. However, for highly volatile systems or during critical performance investigations, reducing the interval to 15 or 30 minutes can provide more granular data. The retention period should be set based on your historical analysis needs; retaining data for 30-60 days is common for trend analysis and comparing performance over longer periods. You can adjust these settings using DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS.

Q3: Can AWR help diagnose PeopleSoft-specific performance issues?

Absolutely. While AWR reports are database-agnostic, they are invaluable for diagnosing the underlying database bottlenecks that manifest as PeopleSoft application performance issues. For example, if PeopleSoft users report slow page loads or batch jobs are running long, the AWR report can identify the specific SQL statements executed by PeopleSoft that are consuming the most CPU or I/O, or highlight wait events like enq: TX - row lock contention that could be caused by concurrent PeopleSoft processes. By identifying these database-level issues, DBAs can work with PeopleSoft developers to optimize queries, add indexes, or adjust application configuration.

Conclusion

The Oracle AWR report is a powerful, indispensable tool for any Oracle DBA or performance engineer committed to maintaining a healthy and high-performing database environment. Its ability to provide a comprehensive historical view of database activity, pinpoint resource-intensive SQL, identify

📧

Enjoyed this article?

Get articles like this delivered to your inbox daily. Join 10,000+ tech professionals.

Written By

Someshwar Thakur

PS Admin, Cloud Architect, DBA

Sources & References

• Official company announcements and press releases

• Industry reports from Gartner, IDC, and Statista

• Peer-reviewed research and technical documentation

• On-record statements from industry experts

Last verified: August 1, 2026

Fact-checked by TechNews Venture editorial team

Leave a Comment

Comments are moderated and will appear after review.