Oracle Database. Performance. and Scalability. A Quantitative Approach. Henry H. Liu. as Computer SOCIETY A JOHN WILEY & SONS, INC.



Similar documents
Oracle Database 11 g Performance Tuning. Recipes. Sam R. Alapati Darl Kuhn Bill Padfield. Apress*

1. This lesson introduces the Performance Tuning course objectives and agenda

Basic Tuning Tools Monitoring tools overview Enterprise Manager V$ Views, Statistics and Metrics Wait Events

Oracle Database 11g: Performance Tuning DBA Release 2

Objectif. Participant. Prérequis. Pédagogie. Oracle Database 11g - Performance Tuning DBA Release 2. 5 Jours [35 Heures]

Oracle Database 11g: SQL Tuning Workshop Release 2

Oracle Database 12c: Performance Management and Tuning NEW

Oracle Database 11g: SQL Tuning Workshop

Oracle. Brief Course Content This course can be done in modular form as per the detail below. ORA-1 Oracle Database 10g: SQL 4 Weeks 4000/-

ORACLE DATABASE 11G: COMPLETE

COURCE TITLE DURATION. Oracle Database 11g: Administration Workshop I

Oracle 11g Database Administration

Oracle Architecture, Concepts & Facilities

Oracle Database 10g: New Features for Administrators

Oracle DBA Course Contents

ORACLE DATABASE: ADMINISTRATION WORKSHOP I

Programa de Actualización Profesional ACTI Oracle Database 11g: SQL Tuning Workshop

Objectif. Participant. Prérequis. Pédagogie. Oracle Database 11g - Administration Workshop I Release 2. 5 Jours [35 Heures]

Oracle Database 11g: Administration Workshop I

Oracle Database 11g: Administration Workshop I Release 2

Expert Oracle. Database Architecture. Techniques and Solutions. 10gr, and 11g Programming. Oracle Database 9/, Second Edition.

Oracle Database 11g: Administration Workshop I Release 2

Oracle Database 10g: Administration Workshop II Release 2

Introduction. Part I: Finding Bottlenecks when Something s Wrong. Chapter 1: Performance Tuning 3

FIFTH EDITION. Oracle Essentials. Rick Greenwald, Robert Stackowiak, and. Jonathan Stern O'REILLY" Tokyo. Koln Sebastopol. Cambridge Farnham.

Oracle Database 12c: Performance Management and Tuning NEW

Oracle Enterprise Manager 12c New Capabilities for the DBA. Charlie Garry, Director, Product Management Oracle Server Technologies

Oracle EXAM - 1Z Oracle Database 11g Release 2: SQL Tuning. Buy Full Product.

Oracle Database 12c: Administration Workshop NEW

UNIVERSITY AUTHORISED EDUCATION PARTNER (WDP)

<Insert Picture Here> Oracle Database Directions Fred Louis Principal Sales Consultant Ohio Valley Region

1Z0-117 Oracle Database 11g Release 2: SQL Tuning. Oracle

Oracle Database 10g. Page # The Self-Managing Database. Agenda. Benoit Dageville Oracle Corporation benoit.dageville@oracle.com

D12C-AIU Oracle Database 12c: Admin, Install and Upgrade Accelerated NEW

Microsoft SQL Server for Oracle DBAs Course 40045; 4 Days, Instructor-led

System Administration of Windchill 10.2

MyOra 3.5. User Guide. SQL Tool for Oracle. Kris Murthy

MyOra 3.0. User Guide. SQL Tool for Oracle. Jayam Systems, LLC

Oracle Database 12c: Administration Workshop NEW. Duration: 5 Days. What you will learn

Demystified CONTENTS Acknowledgments xvii Introduction xix CHAPTER 1 Database Fundamentals CHAPTER 2 Exploring Relational Database Components

StreamServe Persuasion SP5 Oracle Database

Contents RELATIONAL DATABASES

ORACLE DBA 11G TRAINING

AV-004: Administering and Programming with ORACLE

The Data Access Handbook

Oracle Database 12c: Admin, Install and Upgrade Accelerated

Oracle Database: SQL and PL/SQL Fundamentals NEW

Oracle Database 11g: Administration And Backup & Recover

MS-40074: Microsoft SQL Server 2014 for Oracle DBAs

Introduction to SQL Tuning. 1. Introduction to SQL Tuning SkillBuilders, Inc. SKILLBUILDERS

Oracle Database 11g: New Features for Administrators DBA Release 2

SQL Server 2012 Optimization, Performance Tuning and Troubleshooting

W I S E. SQL Server 2008/2008 R2 Advanced DBA Performance & WISE LTD.

About the Author About the Technical Contributors About the Technical Reviewers Acknowledgments. How to Use This Book

Sivakumar Software Engg, Zagro Singapore Pte Ltd .

ORACLE CORE DBA ONLINE TRAINING

DBA Best Practices: A Primer on Managing Oracle Databases. Leng Leng Tan Vice President, Systems and Applications Management

ORACLE DATABASE ADMINISTRATOR RESUME

ORACLE DATABASE 10G ENTERPRISE EDITION

SQL Databases Course. by Applied Technology Research Center. This course provides training for MySQL, Oracle, SQL Server and PostgreSQL databases.

Software Performance and Scalability

OLTP Meets Bigdata, Challenges, Options, and Future Saibabu Devabhaktuni

Expert Oracle Exadata

ORACLE INSTANCE ARCHITECTURE

Oracle 11g DBA Training Course Content

Oracle 11g New Features - OCP Upgrade Exam

How To Write A Diagram

Oracle 11g: RAC and Grid Infrastructure Administration Accelerated R2

Oracle Database 12c: SQL Tuning for Developers. Sobre o curso. Destinatários. Oracle - Linguagens. Nível: Avançado Duração: 18h

Database. Administration. The Complete. and Procedures. Guide to DBA Practices. AAddison-Wesley. Second Edition. Mullins

Oracle Database 11g: Administration Workshop II DBA Release 2

Performance rule violations usually result in increased CPU or I/O, time to fix the mistake, and ultimately, a cost to the business unit.

Monitoring and Diagnosing Oracle RAC Performance with Oracle Enterprise Manager. Kai Yu, Orlando Gallegos Dell Oracle Solutions Engineering

Advanced Oracle SQL Tuning

Module 15: Monitoring

FHE DEFINITIVE GUIDE. ^phihri^^lv JEFFREY GARBUS. Joe Celko. Alvin Chang. PLAMEN ratchev JONES & BARTLETT LEARN IN G. y ti rvrrtuttnrr i t i r

Customer evaluation guide Toad for Oracle v12 Database administration

Oracle Database 11g: New Features for Administrators

Tips and Tricks for Using Oracle TimesTen In-Memory Database in the Application Tier

Safe Harbor Statement

An Oracle White Paper May Guide for Developing High-Performance Database Applications

Business Application Services Testing

Monitoring and Diagnosing Oracle RAC Performance with Oracle Enterprise Manager

Oracle and Sybase, Concepts and Contrasts

Oracle Database 12c Administration Workshop

Real Application Testing. Fred Louis Oracle Enterprise Architect

RARITAN VALLEY COMMUNITY COLLEGE COMPUTER SCIENCE (CS) DEPARTMENT. CISY-294, Oracle: Database Administration Fundamentals Part I

Arbortext Content Manager Curriculum Guide

Top 10 Performance Tips for OBI-EE

Topics Advanced PL/SQL, Integration with PROIV SuperLayer and use within Glovia

DBMS Questions. 3.) For which two constraints are indexes created when the constraint is added?

Design and Implementation

Oracle 10g PL/SQL Training

Expert Oracle Exadata

Transcription:

Oracle Database Performance and Scalability A Quantitative Approach Henry H. Liu as Computer SOCIETY A JOHN WILEY & SONS, INC., PUBLICATION

Contents PREFACE xxv Why This Book / xxv Who This Book is For / xxvi How This Book is Organized / xxvii Software and Hardware / xxviii How to Use This Book / xxix How to Reach The Author / xxxi ACKNOWLEDGMENTS xxxiii INTRODUCTION 1 Features of Oracle / 2 Objectives / 4 Conventions / 5 Performance versus Scalability / 6 PART 1 GETTING STARTED WITH ORACLE 1 Basic Concepts 1.1 Standard versus Flavored SQLS / 10 1.2 Relational versus Object-Oriented Databases / 11 vii

Vlli CONTENTS 1.3 An Instance versus a Database / 11 1.4 Summary / 12 Recommended Reading / 12 Exercises / 12 2 Installing Oracle Software 14 2.1 Installing Oracle 1 lg Server Software / 15 2.2 Configuring a Listener / 18 2.3 Creating an Oracle Database / 18 2.4 Installing Oracle 1 lg Client Software / 28 2.5 Oracle Grid Control versus DB Control / 31 2.6 Summary / 33 Recommended Reading / 33 Exercises / 33 3 Options for Accessing an Oracle Server 34 3.1 A Command Line Interface (CLI) versus a GUI-Based Console / 35 3.2 The Oracle Enterprise Manager Java Console (OEMJC) / 37 3.3 Using the SQL*Plus Tool / 40 3.4 Oracle Enterprise Manager DBConsole / 42 3.5 Other Tools for Developers / 43 3.6 Case Study: Creating ER Diagrams with Visio via ODBC / 44 3.7 Case Study: Accessing Oracle in Java via JDBC / 47 3.8 Summary / 49 Recommended Reading / 50 Exercises / 50 4 A Quick Tour of an Oracle Server 52 4.1 New Oracle Schemas Beyond "Scott" / 53 4.2 Oracle Users versus Schemas / 54 4.3 Tablespaces, Segments, Extents, and Data Blocks / 56 4.4 Tables, Indexes and Index Types for Structured Data / 57 4.5 Domain and LOB Index Types for Unstructured Data / 65 4.6 Views, Materialized Views, and Synonyms / 68 4.7 Stored Procedures, Functions, and Triggers / 68 4.8 Referential Integrity with Foreign Keys / 71 4.9 Summary / 73

ix Recommended Reading / 73 Exercises / 74 PART 2 ORACLE ARCHITECTURE FROM PERFORMANCE AND SCALABILITY PERSPECTIVES 75 5 Understanding Oracle Architecture 79 5.1 The Version History of Oracle / 80 5.2 Oracle Processes / 82 5.3 Oracle Memory Areas / 87 5.4 Dedicated versus Shared Oracle Server Architecture / 89 5.5 Performance Sensitive Initialization Parameters / 91 5.6 Oracle Static Data Dictionary Views / 94 5.7 Oracle Dynamic Performance (V$) Views / 95 5.8 Summary / 98 Recommended Reading / 98 Exercises / 99 6 Oracle log Memory Management 101 6.1 SGA Sub-Areas / 102 6.2 SGA Sizing: Automatic Shared Memory Management (ASMM) / 104 6.3 PGA Sizing: PGA_AGGREGATE_TARGET / 106 6.4 Summary / 108 Recommended Reading / 109 Exercises / 110 7 Oracle llg Memory Management 111 7.1 Automatic Memory Management (AMM) / 112 7.2 Memory Sizing Options Configurable at Database Creation Time / 112 7.3 Checking Memory Management and Usage Distribution at Run Time / 113 7.4 Summary / 115 Recommended Reading / 115 Exercises / 115 8 Oracle Storage Structure 116 8.1 Overview / 117 8.2 Managing Tablespaces / 119

for X CONTENTS 8.3 Managing Data Files / 122 8.4 Managing Redo Logs / 124 8.5 Summary / 125 Recommended Reading / 125 Exercises / 126 9 Oracle Wait Interface (OWI) 127 9.1 Ratio-based versus OWI-based Oracle Performance Tuning Methodologies / 128 9.2 Wait Event The Core Concept of OWI / 130 9.3 Classification of Wait Events from OWI / 131 9.4 The Other Part (CPU Time) of the Equation Elapsed Time = CPU Time + Wait Time / 134 9.5 AWR as a Compass to Tuning Oracle Performance and Scalability / 136 9.6 Summary / 137 Recommended Reading / 137 Exercises / 138 10 Oracle Data Consistency and Concurrency 139 10.1 Select... Update Statement / 140 10.2 ACID Properties of Transactions / 141 10.3 Read Phenomena and Data Inconsistencies / 143 10.4 Oracle Isolation Levels / 145 10.5 Multi-Version Concurrency Control (MVCC) and Read Consistency / 145 10.6 Oracle Locks / 146 10.7 Lock Escalations versus Conversions / 149 10.8 Oracle Latches / 149 10.9 Oracle Enqueues / 150 10.10 Deadlocks / 150 10.11 Taking Advantage of Oracle's Scalable Concurrency Model / 151 10.12 Case Study: A JDBC Example / 152 10.13 Summary / 158 Recommended Reading / 159 Exercises / 159

Xi 11 Anatomy of an Oracle Automatic Workload Repository (AWR) Report 161 11.1 Importance of Performance Statistics / 162 11.2 AWR Report Header / 165 11.3 Report Summary / 166 11.3.1 Cache Sizes / 166 11.3.2 Load Profile / 167 11.3.3 Instance Efficiency Percentages (Target 100%) / 169 11.3.4 Shared Pool Statistics / 170 11.3.5 Top Five Timed Events / 170 11.4 Main Report / 171 11.5 Wait Events Statistics / 172 11.5.1 Time Model Statistics / 173 11.5.2 Wait Class / 174 11.5.3 Wait Events / 174 11.5.4 Background Wait Events / 176 11.5.5 Operating System 11.5.6 Service Statistics / 177 Statistics / 176 11.5.7 Service Wait Class Stats / 178 11.6 SQL Statistics / 178 11.6.1 SQL ordered by Elapsed Time / 179 11.6.2 SQL ordered by CPU Time / 180 11.6.3 SQL ordered by Gets / 180 11.6.4 SQL ordered by Reads / 181 11.6.5 SQL ordered by Executions / 182 11.6.6 SQL ordered by Parse Calls / 183 11.6.7 SQL ordered by Sharable Memory / 183 11.6.8 SQL ordered by Version Count / 183 11.6.9 Complete List of SQL Text / 184 11.7 Instance Activity Statistics / 185 11.7.1 Instance Activity Stats / 185 11.7.2 Instance Activity Stats Absolute Values / 196 11.7.3 Instance Activity Stats Thread Activity / 197 11.8 IO Stats / 197 11.8.1 Tablespace IO Stats / 198 11.8.2 File IO Stats / 198 11.9 Buffer Pool Statistics / 199 11.10 Advisory Statistics / 199 11.10.1 Instance Recovery Stats / 200 11.10.2 Buffer Pool Advisory / 200 11.10.3 PGA Aggr Summary / 201 11.10.4 PGA Aggr Target Stats / 202

11.10.5 PGA Aggr Target Histogram / 202 11.10.6 PGA Memory Advisory / 203 11.10.7 Shared Pool Advisory / 204 11.10.8 SGA Target Advisory / 204 11.10.9 Streams Pool Advisory / 205 11.10.10 Java Pool Advisory / 205 11.11 Wait Statistics / 206 11.12 Undo Statistics / 207 11.13 Latch Statistics / 208 11.13.1 Latch Activity / 208 11.13.2 Latch Sleep Breakdown / 213 11.13.3 Latch Miss Sources / 214 11.13.4 Parent and Child Latch Statistics / 215 11.14 Segment Statistics / 215 11.14.1 Segments by Logical Reads / 215 11.14.2 Segments by Physical Reads / 216 11.14.3 Segments by Row Lock Waits / 217 11.14.4 Segments by ITL Waits / 217 11.14.5 Segments by Buffer Busy Waits / 217 11.15 Dictionary Cache Stats / 218 11.16 Library Cache Activity / 219 11.17 Memory Statistics / 219 11.17.1 Process Memory Summary / 219 11.17.2 SGA Memory Summary / 220 11.17.3 SGA Breakdown Difference / 221 11.18 Streams Statistics / 222 11.19 Resource Limit Stats / 224 11.20 init.ora Parameters / 224 11.21 Summary / 225 Recommended Reading / 225 Exercises / 226 12 Oracle Advanced Features and Options 227 12.1 Oracle 8i New Features / 227 12.1.1 Java / 228 12.1.2 Oracle intermedia, Spatial, Time Series, and Visual Image Retrieval / 229 12.1.3 Oracle Parallel Server / 230 12.1.4 Optimizer Plan Stability / 230 12.1.5 Locally Managed Tablespaces / 230 12.1.6 Online Index Creation and Rebuild / 231 12.1.7 Online Read-Only Tablespaces / 231

XiU 12.1.8 Temporary Tables / 231 12.1.9 Non-Blocking OCI (Oracle Call Interface) / 231 12.1.10 Function-Based Indexes / 232 12.1.11 Logical ROWIDs / 232 12.1.12 Enhanced Partitioning / 232 12.1.13 Connection Load Balancing / 233 12.1.14 Client Load Balancing / 233 12.1.15 Oracle Enterprise Manager / 233 12.2 Oracle 9i New Features / 233 12.2.1 Real Application Clusters (RAC) / 234 12.2.2 Data Guard / 236 12.2.3 Performance Tuning Intelligent Advisors / 239 12.2.4 Actual Operation-Level Query Statistics / 239 12.2.5 Dynamic Sampling of Optimizer Statistics / 239 12.2.6 Cloning Production Database with Oracle Enterprise Manager / 240 12.2.7 Renaming Columns and Constraints / 241 12.2.8 Dynamic Memory Pools / 241 12.2.9 Flashback Query / 241 12.2.10 List Partitioning / 241 32.3 Oracle log New Features / 241 12.3.1 Automatic Storage Management (ASM) / 242 12.3.2 Asynchronous Commit / 244 12.3.3 Database Replay / 244 12.3.4 Read Performance Statistics Directly from the SGA / 245 12.3.5 Automatic Workload Repository (AWR) / 245 12.3.6 Automatic Database Diagnostic Monitor (ADDM) / 245 12.3.7 Automatic Shared Memory Tuning / 245 12.3.8 Automatic Optimizer Statistics Gathering / 245 12.3.9 SQL Tuning Features / 247 12.3.10 Grid Computing / 247 12.4 Oracle llg New Features / 248 12.4.1 Automatic Memory Management / 249 12.4.2 Intelligent Cursor Sharing / 249 12.4.3 Database Resident Connection Pool (DRCP) / 249 12.4.4 Server Result Cache / 250 12.4.5 Database Smart Flash Cache / 251 12.4.6 Database Replay SQL Performance Analyzer (SPA) Integration / 252 12.4.7 170 Calibration / 252 12.4.8 Partitioning Enhancements / 252

X/V CONTENTS 12.4.9 SQL Plan Management / 253 12.4.10 Zero-Size Unusable Indexes and Index Partitions / 254 12.4.11 Invisible Indexes / 254 12.4.12 Virtual Columns / 254 12.5 Summary / 255 Recommended Reading / 255 Exercises / 255 13 Top 10 Oracle Performance and Scalability Features 257 13.1 Real Application Clustering (RAC) / 258 13.2 Dedicated versus Shared Server Models / 260 13.3 Proven Transaction and Concurrency Models / 260 13.4 A Highly Efficient SQL Optimization Engine / 261 13.5 Efficient Parallel Processing with Modern Multi-Core CPUs / 261 13.6 Partitioning / 262 13.7 An All-Encompassing, Powerful Performance, and Scalability Troubleshooting Tool AWR / 262 13.8 The Most Comprehensive Set of Internal Performance Metrics / 263 13.9 Database Resident Connection Pool / 263 13.10 In-Memory Database Cache (IMDB) / 263 13.11 Summary / 263 Recommended Reading / 264 Exercises / 264 14 Oracle-Based Application Performance and Scalability by Design 266 14.1 Rapid Development Methodologies / 268 14.2 Planning / 269 14.2.1 Vision / 269 14.2.2 Objectives / 270 14.2.3 ROI Analysis / 270 14.2.4 Feasibility Study / 271 14.2.5 Project Team Formation / 271 14.3 Requirements Gathering / 272 14.3.1 Use Cases / 273 14.3.2 User Views / 274 14.3.3 Business Processes, Entities, and Business Rules / 274

XV 14.4 Conceptual Design via Data Modeling / 275 14.4.1 Entity-Relationship Diagramming / 276 14.4.2 The Information Engineering (IE) Format for ERDs / 278 14.4.3 UML Format for ERDs / 279 14.4.4 Relational Format for ERDs / 279 14.5 Logical Design via Normalization / 280 14.5.1 Operational Anomalies / 281 14.5.2 Review of Relation Theory / 282 14.5.3 Functional Dependencies and Lossless-Join Decompositions / 285 14.5.4 First Normal Form (INF): Avoiding Multi-Valued Columns / 287 14.5.5 Second Normal Form (2NF): Eliminating Partial Dependencies / 288 14.5.6 Third Normal Form (3NF): Eliminating Transitive Dependencies: / 288 14.5.7 Boyce-Codd Normal Form (BCNF): Eliminating Key Non-Key Dependencies / 289 14.5.8 Fourth Normal Form (4NF): Trivializing or Keying Multi-Valued Dependencies / 290 14.5.9 Fifth Normal Form (5NF): Trivializing or Keying Join Dependencies / 292 14.5.10 Which Level of Normalization to Settle Down? / 294 14.5.11 Denormalization? / 294 14.6 Physical Design / 295 14.6.1 Naming Conventions / 297 14.6.2 Creating Tablespaces / 298 14.6.3 Creating a Schema User with Proper Privileges / 299 14.6.4 Creating Application Schema Objects / 299 14.6.5 Changing Schema Objects / 308 14.6.6 Enforcing Business Rules and Data Integrity / 309 14.6.7 Adding Views / 312 14.6.8 Creating Sequences and Synonyms / 312 14.6.9 Adding Indexes / 313 14.6.10 Security / 314 14.7 Implementation / 315 14.7.1 Choosing an Effective and Efficient Coding Path / 315 14.7.2 Leveraging Proven Oracle Database Design Principles / 316

14.7.3 Leveraging Proven Application Design Patterns / 318 14.7.4 Enforcing with an Effective and Efficient Testing Process / 319 14.8 Release To Market (RTM) / 322 14.9 Continuous Improvements / 322 14.10 Summary / 323 Recommended Reading / 324 Exercises / 325 15 Project: Soba A Secure Online Banking Application on Oracle 326 15.1 Getting SOBA Up and Running / 328 15.1.1 Prerequisite Software / 328 15.1.2 Initial Software Stack Setup / 329 15.1.3 Creating SOBA Database on Oracle / 330 15.1.4 Installing SOBA on Eclipse IDE / 330 15.1.5 Configuring SOBA to Work with Oracle / 331 15.1.6 Configuring SOBA to Work with Hibernate / 333 15.1.7 Building SOBA and Deploying SOBA with Ant to Run on Tomcat / 333 15.2 Overview of Spring Framework / 333 15.2.1 Background / 333 15.2.2 Spring for Building Flexible Applications Faster / 334 15.2.3 Spring Inversion of Control (loc) and Dependency Injection / 335 15.2.4 Features of Spring 3.0 / 336 15.3 MVC Architecture / 337 15.3.1 MVC Architecture in General / 338 15.3.2 Spring MVC in Action with SOBA / 340 15.4 Spring MVC Framework Applied to SOBA / 342 15.4.1 Spring DispatcherServlet and WebApplicationContext / 343 15.4.2 Logic Flow of SOBA Defined in Spring MVC Framework / 347 15.4.3 A Web Entry Point Defined in a Spring MVC Web Form / 348 15.4.4 Handler Mapping / 350 15.4.5 Implementing Spring Controllers / 353 15.4.6 A Typical View Defined in a Spring MVC Web Form / 358

XVii 15.4.7 A Typical Form Success Controller and its Resultant View / 362 15.4.8 POJOs Referenced in the CreateCustomerFormController / 364 15.5 Hibernate Object-Relational Mapping (ORM) Applied to SOBA / 368 15.5.1 Benefits of Using Hibernate / 369 15.5.2 Metadata Mapping with Hibernate / 370 15.5.3 Configuring Hibernate to Work with Oracle / 371 15.5.4 Hibernate DAO / 373 15.6 RESTful Web Services Applied to SOBA / 376 15.6.1 Introduction to RESTful Web Services / 376 15.6.2 RESTful Constraints / 377 15.6.3 RESTful Interface Design Principles / 378 15.6.4 Spring's Support for RESTful Web Services / 379 15.6.5 Server Code / 380 15.6.6 Client Code / 383 15.7 Spring Security Applied to SOBA / 386 15.7.1 Basic Concepts / 387 15.7.2 Security Configured in web.xml / 387 15.7.3 Security Configured in soba-security.xml / 388 15.7.4 Implementing Spring Security in Views / 394 15.8 Spring ACL Applied to SOBA / 394 15.8.1 Creating ACL Tables in Oracle / 395 15.8.2 Configuring Spring ACL / 395 15.8.3 Maintaining ACLs for SOBA Domain Objects / 398 15.8.4 Applying ACLs to Business Operations / 404 15.8.5 Testing ACLs with SOBA / 406 15.9 Summary / 413 Recommended Reading / 414 Exercises / 414 PART 3 OPTIMIZING ORACLE PERFORMANCE AND SCALABILITY 415 16 Logistics of the Oracle Cost-Based Optimizer (CBO) 417 16.1 Life of a SQL Statement in Oracle / 418 16.2 Oracle SQL Optimizer: Cost-Based / 420 Rule-Based versus

xviii CONTENTS 16.3 CBO Statistics / 421 16.4 Pivot Role of Gathering Database Statistics to CBO / 422 16.5 Methods of Gathering CBO Statistics / 424 16.6 Locking and Unlocking CBO Statistics / 425 16.7 Explain Plan A Handle to CBO / 425 16.8 Data Access Methods CBO's Footprints / 426 16.9 Looking Up CBO's Plan Hidden in V$SQL_PLAN / 427 16.10 When CBO may Generate Suboptimum Execution Plans / 428 16.11 Summary / 429 Recommended Reading / 429 Exercises / 430 17 Oracle SQL Tuning 431 17.1 Tuning Joins / 432 17.2 Tuning Subqueries / 437 17.3 Case Study: Performance of SUBQUERY versus JOIN / 439 17.4 Case Study: Performance of IN versus EXISTS / 443 17.5 Case Study: A SQL Tuning Yielded a 12x Performance Gain / 444 17.6 Summary / 447 Recommended Reading / 447 Exercises / 448 18 Oracle Indexing 449 18.1 Rules of Thumb on Indexing / 450 18.2 Creating and Using Ubiquitous b-tree Indexes / 451 18.3 Advanced Indexing Scheme I: Covering Indexes versus Index-Organized Tables / 452 18.4 Advanced Indexing Scheme II: Function-Based Indexes (FBIs) / 453 18.5 Unusual Indexing Scheme I: BITMAP Indexes / 454 18.6 Unusual Indexing Scheme II: Reverse Key Indexes / 455 18.7 Unusual Indexing Scheme III: Compressed Composite Indexes / 455 18.8 How To Create Oracle Indexes / 456 18.9 Summary / 457 Recommended Reading / 458 Exercises / 458

XiX 19 AutoJTune Features 459 19.1 Oracle Automatic Database Diagnostic Monitor (ADDM) / 460 19.2 Automatic Undo Management / 462 19.3 Data Recovery Advisor / 462 19.4 Memory Advisors / 462 19.5 MTTR Advisor / 466 19.6 Segment Advisor / 466 19.7 SQL Advisors / 467 19.8 SQL Performance Analyzer / 469 19.9 Summary / 470 Recommended Reading / 471 Exercises / 471 4 CASE STUDIES: ORACLE MEETING REAL WORLD PERFORMANCE AND SCALABILITY CHALLENGES 473 20 Case Study: Achieving High Throughput with Array Processing 477 20.1 Context / 478 20.2 Performance Model / 479 20.3 Tests / 480 20.4 Solution / 480 20.5 Effects of Array Processing / 482 20.6 Summary / 484 Recommended Reading / 484 Exercises / 484 21 Case Study: Performance Comparison of Heap-Organized versus Index-Organized Tables 485 21.1 Context / 486 21.2 Conversion from Heap-Organized to Index-Organized / 487 21.3 Creating Indexes / 487 21.4 Creating Constraints / 488 21.5 EXPLAIN PLANs / 488 21.6 Oracle SQL Traces / 489 21.7 Summary / 490 Recommended Reading / 491 Exercises / 491

22 Case Study: SQL Tuning: "IN" versus "OR" versus Global Temporary Table 492 22.1 Context / 493 22.2 Test Program / 494 22.3 Observation 1: IN_CreateStatement is the Best Performer / 495 22.4 Observation 2: Batch Insert Saves Time / 497 22.5 Temptable Performed Better without an Index Hint than with an Index Hint / 498 22.6 Effects of APPEND Hint for Populating Temptable / 499 22.7 Effects of Number of Iterations / 499 22.8 OR and IN without the Index Hint / 499 22.9 Limitation on the Number of Literal Values and the Size of OR Statement / 501 22.10 Dealing with More Than 1000 Literal Values for an IN Based SQL Query / 501 22.11 A Recommendation for Dealing with 1000 Literal Value Limit in an IN Statement / 501 22.12 Summary / 502 Recommended Reading / 503 Exercises / 503 23 Case Study: Data Access Paths (Double Buffering) 504 23.1 Data Access Paths in General / 505 23.1.1 Data Buffering / 507 23.1.2 Inode Locking / 509 23.1.3 Write-Syne Daemon / 510 23.2 Test Environments / 511 23.2.1 Solaris on Veritas / 511 23.2.2 Solaris onufs / 511 23.2.3 Windows on NTFS / 512 23.3 Test Results with Solaris on Veritas / 514 23.3.1 Test Run #1 145 ms Average Read Time / 514 23.3.2 Test Run #2 401 ms Average Read Time / 516 23.3.3 Test Run #3 261 ms Average Read Time / 518 23.3.4 Test Run #4 0.98 ms Average Read Time / 519 23.3.5 Analysis / 521 23.4 Test Results with Solaris on UFS / 522 23.4.1 Test Run #1 447 ms Average Read Time / 522 23.4.2 Test Run #2 10ms Average Read Time / 524 23.4.3 Analysis / 525

XXi 23.5 Test Results with Windows on NTFS / 526 23.5.1 Test Run 8 ms Average Read Time / 526 23.5.2 Analysis / 528 23.6 Moral of the Case Study / 528 Recommended Reading / 529 Exercises / 530 24 Case Study: Covering Index 531 24.1 Getting to Know the Application Architecture / 533 24.2 Quantifying the Problems / 533 24.3 Analyzing Bottlenecks / 533 24.4 Applying Optimizations/Tunings / 535 24.5 Verifying the Fixes / 535 24.5.1 Report Summary / 537 24.5.2 Wait Events Statistics / 538 24.5.3 SQL Statistics / 541 24.5.4 10 Stats / 544 24.5.5 Buffer Pool Statistics / 544 24.5.6 Wait Statistics / 544 24.5.7 init.ora Parameters / 545 24.6 Moral of the Case Study / 545 Recommended Reading / 546 Exercises / 546 25 Case Study: CURSOR_SHARING 547 25.1 25.2 25.3 25.4 25.5 25.6 25.7 The Concept of a Bind Variable / 548 Oracle CURSOR_SHARING Parameter / 549 Getting to Know the Application Architecture / 550 Quantifying Problems / 550 Analyzing Bottlenecks / 551 25.5.1 Report Summary / 552 25.5.2 SQL Statistics / 556 25.5.3 10 Stats / 557 25.5.4 Wait Statistics / 558 25.5.5 init.ora Parameters / 558 = Applying Tuning: CURSOR_SHARING FORCE / 560 25.6.1 Report Summary / 561 25.6.2 Wait Events Statistics / 563 Applying Tuning: CURSOR_SHARING = SIMILAR / 564 25.7.1 Report Summary / 564 25.7.2 Wait Events Statistics / 566

25.8 Moral of the Case Study / 569 Recommended Reading / 569 Exercises / 570 26 Case Study: Bulk Transactions 571 26.1 Application Architecture / 572 26.2 Quantifying Problems / 572 26.3 Identifying Performance and Scalability Optimization Opportunities / 573 26.3.1 Report Summary / 573 26.3.2 Wait Events Statistics / 575 26.3.3 SQL Statistics / 577 26.3.4 Wait Statistics / 579 26.4 Effects of Bulk Transactions on Performance / 581 26.4.1 Report Summary / 581 26.4.2 Wait Events Statistics / 583 26.4.3 SQL Statistics / 585 26.4.4 Wait Statistics / 587 26.5 Moral of the Case Study / 592 Recommended Reading / 593 Exercises / 593 27 Case Study: Missing Statistics 594 27.1 Decaying Performance due to Missing Statistics / 595 27.2 First Run with no Statistics / 597 27.2.1 Report Summary / 598 27.2.2 Wait Events Statistics / 599 27.2.3 SQL Statistics / 601 27.2.4 10 Stats / 602 27.2.5 Wait Statistics / 602 27.2.6 init.ora Parameters / 603 27.3 Second Run with Missing Statistics / 604 27.3.1 Report Summary / 605 27.3.2 Wait Events Statistics / 606 27.3.3 SQL Statistics / 607 27.3.4 IO Stats / 609 27.3.5 Wait Statistics / 609 27.4 Third Run with Updated Statistics / 611 27.4.1 Report Summary / 611 27.4.2 Wait Events Statistics / 613 27.4.3 Operating System Statistics / 614 27.4.4 SQL Statistics / 614

XX/// 27.4.5 Wait Statistics / 616 27.5 Moral of the Case Study / 61.8 Recommended Reading / 618 Exercises / 618 28 Case Study: Misconfigured SAN Storage 620 28.1 Architecture of the Apple's Xserve RAID / 621 28.2 Problem Analysis / 622 28.2.1 Report Summary / 622 28.2.2 Wait Events Statistics / 624 28.2.3 10 Stats / 625 28.2.4 init.ora Parameters / 625 28.3 Reconfiguring the RAID and Verifying / 626 28.3.1 Report Summary / 626 28.3.2 Wait Events Statistics / 628 28.3.3 10 Stats / 629 28.4 Moral of the Case Study / 629 Recommended Reading / 630 Exercises / 630 APPENDIX A ORACLE PRODUCT DOCUMENTATIONS 633 A. 1 Oracle Database Concepts / 633 A.2 Oracle Database Administrator's Guide / 633 A.3 Oracle Database Reference / 634 A.4 Oracle Database Performance Tuning Guide / 634 A.5 Oracle Database 2 Day + Performance Tuning Guide / 634 A.6 Oracle Database 2 Day DBA / 634 A.7 Oracle Database SQL Language Reference / 634 A.8 Oracle Database Sample Schemas / 635 A.9 Oracle Database PL/SQL Packages and Types Reference / 635 A. 10 Oracle Database PL/SQL Language Reference / 635 A.l 1 Oracle Database JDBC Developer's Guide and References / 635 APPENDIX B USING SQL*PLUS WITH ORACLE 636 B. l Installation / 636 B.2 SQLTlus and tnsnames.ora File / 637 B.3 Basics of SQL*Plus / 638

B.4 Common SQL*Plus Commands / 638 B.5 Using SQL*Plus to Execute SQL Statements / 639 B.6 Using SQLTlus to Execute PL/SQL Blocks / 640 B.7 Using SQL*Plus Autotrace to Obtain EXECUTION PLANs and Optimizer Statistics / 640 B.8 Using SQL*Plus Timing Command / 641 B.9 Exporting/Importing Oracle Databases with SQL*Plus / 642 B.10 Creating AWR Reports with SQL*Plus / 643 B.l 1 Checking Tablespace Usage with SQL*Plus / 644 B.12 Creating EM DBConsole with SQL*Plus / 646 APPENDIX C APPENDIX D APPENDIX E A COMPLETE LIST OF ALL WAIT EVENTS IN ORACLE 11g 648 A COMPLETE LIST OF ALL METRICS WITH THE V$STATNAME VIEW 656 A COMPLETE LIST OF ALL STATISTICS WITH THE V$SYSSTAT VIEW 667 INDEX 681