You are previewing Troubleshooting Oracle Performance, Second Edition.
O'Reilly logo
Troubleshooting Oracle Performance, Second Edition

Book Description

Troubleshooting Oracle Performance, 2nd Edition is your systematic guide to diagnosing and resolving performance problems in database-backed applications involving Oracle's database engine. Christian Antognini brings a decade and a half experience to his topic. His first edition is one of the most well-respected books in its field. This second edition has been rigorously updated to cover the latest developments in Oracle Database 11g Release 2 through Oracle Database 12c.

What do you do when your database application isn't running fast enough? You troubleshoot, of course. Finding the slow part of an application is often the easy part of the battle. It's finding a solution that's difficult. Troubleshooting Oracle Performance, 2nd Edition helps by providing a systematic approach to addressing the underlying causes of poor database application performance. The author freely shares his experience while explaining the underlying foundations of how SQL statements are executed by the Oracle database engine. You'll be able to draw a solid foundation of theory and shared experience as you face head-on the performance challenges in your daily work.

  • Written for developers by an application developer who has learned by doing

  • Gives a systematic approach to solving database application performance problems

  • Helps you plan for performance as you would for any other application requirement

  • What you'll learn

  • Systematically identify performance problems

  • Configure the query optimizer to meet performance goals

  • Read and recognize inefficient execution plans

  • Minimize the impact of parsing upon performance

  • Optimize data access, joins, and the physical design of your database

  • Improve performance through parallel processing, materialized views, and result caching

  • Apply SQL tuning techniques such as hints, SQL profiles, stored outlines, and SQL plan baselines

  • Reduce inefficiencies from too much procedural code

  • Who this book is for

    Troubleshooting Oracle Performance, Second Edition is targeted at application developers and database administrators involved in troubleshooting performance problems in Oracle-based applications.

    Table of Contents

    1. Title Page
    2. Dedication
    3. About IOUG Press
    4. Contents at a Glance
    5. Contents
    6. Foreword by Jonathan Lewis
    7. Foreword by Cary Millsap
    8. Foreword from the First Edition
    9. About the Author
    10. About the Technical Reviewers
    11. Acknowledgments
    12. Acknowledgments from the First Edition
    13. Introduction
    14. PART I: Foundations
      1. CHAPTER 1: Performance Problems
        1. Do You Need to Plan Performance?
        2. Designing for Performance
        3. Do You Have Performance Problems?
        4. How Do You Approach Performance Problems?
        5. On to Chapter 2
      2. CHAPTER 2: Key Concepts
        1. Selectivity and Cardinality
        2. What Is a Cursor?
        3. Life Cycle of a Cursor
        4. How Parsing Works
        5. Reading and Writing Blocks
        6. Instrumentation
        7. On to Part 2
    15. PART II: Identification
      1. CHAPTER 3: Analysis of Reproducible Problems
        1. Tracing Database Calls
        2. Profiling PL/SQL Code
        3. On to Chapter 4
      2. CHAPTER 4: Real-Time Analysis of Irreproducible Problems
        1. Analysis Roadmap
        2. Dynamic Performance Views
        3. Analysis With Diagnostics and Tuning Pack
        4. Analysis Without Diagnostics Pack
        5. On to Chapter 5
      3. CHAPTER 5: Postmortem Analysis of Irreproducible Problems
        1. Repositories
        2. Automatic Workload Repository
        3. Statspack
        4. Analysis With Diagnostics Pack
        5. Analysis Without Diagnostics Pack
        6. On to Part 3
    16. PART III: Query Optimizer
      1. CHAPTER 6: Introducing the Query Optimizer
        1. Fundamentals
        2. Architecture
        3. Query Transformations
        4. On to Chapter 7
      2. CHAPTER 7: System Statistics
        1. The dbms_stats Package
        2. What System Statistics Are Available?
        3. Gathering System Statistics
        4. Restoring System Statistics
        5. Working with a Backup Table
        6. Logging of Management Operations
        7. Impact on the Query Optimizer
        8. On to Chapter 8
      3. CHAPTER 8: Object Statistics
        1. The dbms_stats Package
        2. What Object Statistics Are Available?
        3. Gathering Object Statistics
        4. Configuring the dbms_stats Package
        5. Working with Global Temporary Tables
        6. Working with Pending Object Statistics
        7. Working with Partitioned Objects
        8. Scheduling Object Statistics Gathering
        9. Restoring Object Statistics
        10. Locking Object Statistics
        11. Comparing Object Statistics
        12. Deleting Object Statistics
        13. Exporting, Importing, Getting, and Setting Object Statistics
        14. Logging of Management Operations
        15. Strategies for Keeping Object Statistics Up-to-Date
        16. On to Chapter 9
      4. CHAPTER 9: Configuring the Query Optimizer
        1. To Configure or Not to Configure
        2. Configuration Road Map
        3. Set the Right Parameter!
        4. On to Chapter 10
      5. CHAPTER 10: Execution Plans
        1. Obtaining Execution Plans
        2. The dbms_xplan Package
        3. Interpreting Execution Plans
        4. Recognizing Inefficient Execution Plans
        5. On to Part 4
    17. PART IV: Optimization
      1. CHAPTER 11: SQL Optimization Techniques
        1. Altering the Access Structures
        2. Altering the SQL Statement
        3. Hints
        4. Altering the Execution Environment
        5. Stored Outlines
        6. SQL Profiles
        7. SQL Plan Management
        8. On to Chapter 12
      2. CHAPTER 12: Parsing
        1. Identifying Parsing Problems
        2. Solving Parsing Problems
        3. Working Around Parsing Problems
        4. Using Application Programming Interfaces
        5. On to Chapter 13
      3. CHAPTER 13: Optimizing Data Access
        1. Identifying Suboptimal Access Paths
        2. SQL Statements with Weak Selectivity
        3. SQL Statements with Strong Selectivity
        4. On to Chapter 14
      4. CHAPTER 14: Optimizing Joins
        1. Definitions
        2. Nested Loops Joins
        3. Merge Joins
        4. Hash Joins
        5. Outer Joins
        6. Choosing the Join Method
        7. Partition-wise Joins
        8. Star Transformation
        9. On to Chapter 15
      5. CHAPTER 15: Beyond Data Access and Join Optimization
        1. Materialized View
        2. Result Caching
        3. Parallel Processing
        4. Direct-Path Insert
        5. Row Prefetching
        6. Array Interface
        7. On to Chapter 16
      6. CHAPTER 16: Optimizing the Physical Design
        1. Optimal Column Order
        2. Optimal Datatype
        3. Row Migration and Row Chaining
        4. Block Contention
        5. Data Compression
    18. PART V: Appendix
    19. Bibliography
    20. Index