Oracle Database Performance Tuning Guide

Oracle Database Performance Tuning Guide, 10g Release 2 (10.2). B14211-03. Copyright © 2000 Oracle. All rights reserved.

More PDF Content

Oracle Database Performance Tuning Guide
Preface… xxiii
Audience…
Documentation Accessibility…
Related Documents…
Conventions…
What\’s New in Oracle Performance?… xxv
Part I
Performance Tuning
Performance Tuning Overview
Introduction to Performance Tuning…
Performance Planning…
Instance Tuning…
Performance Principles…
Baselines…
The Symptoms and the Problems…
When to Tune…
Proactive Monitoring…
Bottleneck Elimination…
SQL Tuning…
Query Optimizer and Execution Plans…
Introduction to Performance Tuning Features and Tools…
Automatic Performance Tuning Features…
Additional Oracle Tools…
V$ Performance Views…
Part II
Designing and Developing for Performance
Oracle Methodology…
Understanding Investment Options…
Understanding Scalability…
What is Scalability?…
System Scalability…
Performance Planning
Factors Preventing Scalability… 2-4
System Architecture… 2-5
Hardware and Software Components… 2-5
Hardware Components… 2-5
CPU… 2-5
Memory… 2-5
I/O Subsystem… 2-5
Network… 2-6
Software Components… 2-6
Managing the User Interface… 2-6
Implementing Business Logic… 2-6
Managing User Requests and Resource Allocation… 2-6
Managing Data and Transactions… 2-7
Configuring the Right System Architecture for Your Requirements… 2-7
Application Design Principles… 2-9
Simplicity In Application Design… 2-10
Data Modeling… 2-10
Table and Index Design… 2-10
Appending Columns to an Index or Using Index-Organized Tables… 2-11
Using a Different Index Type… 2-11
B-Tree Indexes… 2-11
Bitmap Indexes… 2-11
Function-based Indexes… 2-11
Partitioned Indexes… 2-11
Reverse Key Indexes… 2-12
Finding the Cost of an Index… 2-12
Serializing within Indexes… 2-12
Ordering Columns in an Index… 2-12
Using Views… 2-12
SQL Execution Efficiency… 2-13
Implementing the Application… 2-14
Trends in Application Development… 2-15
Workload Testing, Modeling, and Implementation… 2-16
Sizing Data… 2-16
Estimating Workloads… 2-17
Extrapolating From a Similar System… 2-17
Benchmarking… 2-17
Application Modeling… 2-18
Testing, Debugging, and Validating a Design… 2-18
Deploying New Applications… 2-19
Rollout Strategies… 2-19
Performance Checklist… 2-20
Performance Improvement Methods
The Oracle Performance Improvement Method… 3-1
Steps in The Oracle Performance Improvement Method… 3-2
A Sample Decision Process for Performance Conceptual Modeling… 3-3
Top Ten Mistakes Found in Oracle Systems… 3-4
Emergency Performance Methods… 3-6
Steps in the Emergency Performance Method… 3-6
Part III
Configuring a Database for Performance
Performance Considerations for Initial Instance Configuration…
Initialization Parameters…
Configuring Undo Space…
Sizing Redo Log Files…
Creating Subsequent Tablespaces…
Creating Permanent Tablespaces – Automatic Segment-Space Management…
Creating Temporary Tablespaces…
Creating and Maintaining Tables for Good Performance…
Table Compression…
Estimating the Compression factor…
Tuning to Achieve a Better Compression Ratio…
Reclaiming Unused Space…
Indexing Data…
Specifying Memory for Sorting Data…
Performance Considerations for Shared Servers…
Identifying Contention Using the Dispatcher-Specific Views…
Reducing Contention for Dispatcher Processes…
Identifying Contention for Shared Servers…
Automatic Performance Statistics
Overview of Data Gathering… 5-1
Database Statistics… 5-2
Wait Events… 5-2
Time Model Statistics… 5-3
Active Session History (ASH)… 5-3
System and Session Statistics… 5-4
Operating System Statistics… 5-4
CPU Statistics… 5-5
Virtual Memory Statistics… 5-5
Disk Statistics… 5-5
Network Statistics… 5-5
Operating System Data Gathering Tools… 5-6
Interpreting Statistics… 5-6
Overview of the Automatic Workload Repository… 5-7
Snapshots… 5-8
Baselines… 5-8
Space Consumption… 5-8
Managing the Automatic Workload Repository… 5-9
Managing Snapshots… 5-10
Optimizing Instance Performance
Creating Snapshots…
Dropping Snapshots…
Modifying Snapshot Settings…
Managing Baselines…
Creating a Baseline…
Dropping a Baseline…
Transporting Automatic Workload Repository Data…
Extracting AWR Data…
Loading AWR Data…
Using Automatic Workload Repository Views…
Generating Automatic Workload Repository Reports…
Running the awrrpt.sql Report…
Running the awrrpti.sql Report…
Running the awrsqrpt.sql Report…
Running the awrsqrpi.sql Report…
Running the awrddrpt.sql Report…
Running the awrddrpi.sql Report…
Generating Active Session History Reports…
Running the ashrpt.sql Report…
Running the ashrpti.sql Report…
Automatic Performance Diagnostics
Introduction to Database Diagnostic Monitoring…
Automatic Database Diagnostic Monitor…
ADDM Analysis Results…
An ADDM Example…
Setting Up ADDM…
Diagnosing Database Performance Issues with ADDM…
Running ADDM Using addmrpt.sql…
Running ADDM using DBMS_ADVISOR APIs…
Views with ADDM Information…
Memory Configuration and Use
Understanding Memory Allocation Issues…
Oracle Memory Caches…
Automatic Shared Memory Management…
Dynamically Changing Cache Sizes…
Viewing Information About Dynamic Resize Operations…
Application Considerations…
Operating System Memory Use…
Reduce paging…
Fit the SGA into main memory…
Allow adequate memory to individual users…
Iteration During Configuration…
Configuring and Using the Buffer Cache…
Using the Buffer Cache Effectively…
Sizing the Buffer Cache…
Buffer Cache Advisory Statistics… 7-6
Using V$DB_CACHE_ADVICE… 7-6
Calculating the Buffer Cache Hit Ratio… 7-8
Interpreting and Using the Buffer Cache Advisory Statistics… 7-9
Increasing Memory Allocated to the Buffer Cache… 7-10
Reducing Memory Allocated to the Buffer Cache… 7-10
Considering Multiple Buffer Pools… 7-11
Random Access to Large Segments… 7-11
Oracle Real Application Cluster Instances… 7-12
Using Multiple Buffer Pools… 7-12
Buffer Pool Data in V$DB_CACHE_ADVICE… 7-12
Buffer Pool Hit Ratios… 7-12
Determining Which Segments Have Many Buffers in the Pool… 7-13
KEEP Pool… 7-14
RECYCLE Pool… 7-15
Configuring and Using the Shared Pool and Large Pool… 7-15
Shared Pool Concepts… 7-16
Dictionary Cache Concepts… 7-16
Library Cache Concepts… 7-16
SQL Sharing Criteria… 7-17
Using the Shared Pool Effectively… 7-18
Shared Cursors… 7-19
Single-User Logon and Qualified Table Reference… 7-19
Use of PL/SQL… 7-20
Avoid Performing DDL… 7-20
Cache Sequence Numbers… 7-20
Cursor Access and Management… 7-20
Reducing Parse Calls with OCI… 7-21
Reducing Parse Calls with the Oracle Precompilers… 7-21
Reducing Parse Calls with SQLJ… 7-21
Reducing Parse Calls with JDBC… 7-21
Reducing Parse Calls with Oracle Forms… 7-21
Sizing the Shared Pool… 7-21
Shared Pool: Library Cache Statistics… 7-22
V$LIBRARYCACHE… 7-22
Shared Pool Advisory Statistics… 7-24
V$SHARED_POOL_ADVICE… 7-24
V$LIBRARY_CACHE_MEMORY… 7-24
V$JAVA_POOL_ADVICE and V$JAVA_LIBRARY_CACHE_MEMORY… 7-24
Shared Pool: Dictionary Cache Statistics… 7-24
Interpreting Shared Pool Statistics… 7-26
Increasing Memory Allocation… 7-26
Allocating Additional Memory for the Library Cache… 7-26
Allocating Additional Memory to the Data Dictionary Cache… 7-26
Reducing Memory Allocation… 7-27
Using the Large Pool… 7-27
Tuning the Large Pool and Shared Pool for the Shared Server Architecture… 7-27
Determining an Effective Setting for Shared Server UGA Storage…
Checking System Statistics in the V$SESSTAT View…
Limiting Memory Use for Each User Session by Setting PRIVATE_SGA…
Reducing Memory Use with Three-Tier Connections…
Using CURSOR_SPACE_FOR_TIME…
Caching Session Cursors…
Configuring the Reserved Pool…
Using SHARED_POOL_RESERVED_SIZE…
When SHARED_POOL_RESERVED_SIZE Is Too Small…
When SHARED_POOL_RESERVED_SIZE Is Too Large…
When SHARED_POOL_SIZE is Too Small…
Keeping Large Objects to Prevent Aging…
CURSOR_SHARING for Existing Applications…
Similar SQL Statements…
CURSOR_SHARING…
When to use CURSOR_SHARING…
Maintaining Connections…
Configuring and Using the Redo Log Buffer…
Sizing the Log Buffer…
Log Buffer Statistics…
PGA Memory Management…
Configuring Automatic PGA Memory…
Setting PGA_AGGREGATE_TARGET Initially…
Monitoring the Performance of the Automatic PGA Memory Management…
V$PGASTAT…
V$PROCESS…
V$PROCESS_MEMORY…
V$SQL_WORKAREA_HISTOGRAM…
V$SQL_WORKAREA_ACTIVE…
V$SQL_WORKAREA…
Tuning PGA_AGGREGATE_TARGET…
V$PGA_TARGET_ADVICE…
How to Tune PGA_AGGREGATE_TARGET…
V$PGA_TARGET_ADVICE_HISTOGRAM…
V$SYSSTAT and V$SESSTAT…
Configuring OLAP_PAGE_POOL_SIZE…
I/O Configuration and Design
Understanding I/O…
Basic I/O Configuration…
Lay Out the Files Using Operating System or Hardware Striping…
Requested I/O Size…
Concurrency of I/O Requests…
Alignment of Physical Stripe Boundaries with Block Size Boundaries…
Manageability of the Proposed System…
Manually Distributing I/O…
When to Separate Files…
Tables, Indexes, and TEMP Tablespaces…
Redo Log Files…
Archived Redo Logs…
Three Sample Configurations…
Stripe Everything Across Every Disk…
Move Archive Logs to Different Disks…
Move Redo Logs to Separate Disks…
Oracle-Managed Files…
Tuning Oracle-Managed Files…
Choosing Data Block Size…
Reads…
Writes…
Block Size Advantages and Disadvantages…
Understanding Operating System Resources
Understanding Operating System Performance Issues…
Using Operating System Caches…
Asynchronous I/O…
FILESYSTEMIO_OPTIONS Initialization Parameter…
Memory Usage…
Buffer Cache Limits…
Parameters Affecting Memory Usage…
Using Operating System Resource Managers…
Solving Operating System Problems…
Performance Hints on UNIX-Based Systems…
Performance Hints on Windows Systems…
Performance Hints on HP OpenVMS Systems…
Understanding CPU…
Finding System CPU Utilization…
Checking Memory Management…
Paging and Swapping…
Oversize Page Tables…
Checking I/O Management…
Checking Network Management…
Checking Process Management…
Scheduling and Switching…
Context Switching…
Post-wait Driver…
Memory-mapped System Timer…
List I/O Interfaces to Submit Multiple Asynchronous I/Os in One Call…
Starting New Operating System Processes…
Instance Tuning Using Performance Views
Instance Tuning Steps… 10-1
Define the Problem… 10-2
Examine the Host System… 10-2
CPU Usage…
Non-Oracle Processes…
Oracle Processes…
Oracle CPU Statistics…
Interpreting CPU Statistics…
Detecting I/O Problems…
Network…
Examine the Oracle Statistics…
Setting the Level of Statistics Collection…
V$STATISTICS_LEVEL…
Wait Events…
Dynamic Performance Views Containing Wait Event Statistics…
System Statistics…
V$ACTIVE_SESSION_HISTORY…
V$SYSSTAT…
V$FILESTAT…
V$ROLLSTAT…
V$ENQUEUE_STAT…
V$LATCH…
Segment-Level Statistics…
Implement and Measure Change…
Interpreting Oracle Statistics…
Examine Load…
Changing Load…
High Rates of Activity…
Using Wait Event Statistics to Drill Down to Bottlenecks…
Table of Wait Events and Potential Causes…
Additional Statistics…
Redo Log Space Requests Statistic…
Read Consistency…
Table Fetch by Continued Row…
Parse-Related Statistics…
Wait Events Statistics…
SQL*Net Events…
SQL*Net message from client…
Network Bottleneck…
Resource Bottleneck on the Client Process…
SQL*Net message from dblink…
SQL*Net more data to client…
buffer busy waits…
Causes…
Actions…
segment header…
data block…
undo header…
undo block…
db file scattered read…
Actions…
Managing Excessive I/O…
Inadequate I/O Distribution…
Finding the SQL Statement executed by Sessions Waiting for I/O…
Finding the Object Requiring I/O…
db file sequential read…
Actions…
direct path read and direct path read temp…
Causes…
Actions…
Sorts to Disk…
Full Table Scans…
Hash Area Size…
direct path write and direct path write temp…
Causes…
Actions…
enqueue (enq:) waits…
Finding Locks and Lock Holders…
Actions…
ST enqueue…
HW enqueue…
TM enqueue…
TX enqueue…
events in wait class other…
free buffer waits…
Causes…
Actions…
Writes…
Cache is Too Small…
Cache Is Too Big for One DBWR…
Consider Multiple Database Writer (DBWR) Processes or I/O Slaves…
DB_WRITER_PROCESSES…
DBWR_IO_SLAVES…
Choosing Between Multiple DBWR Processes and I/O Slaves…
latch events…
Actions…
Example: Find Latches Currently Waited For…
Shared Pool and Library Cache Latch Contention…
Unshared SQL…
Reparsed Sharable SQL…
By Session…
cache buffers lru chain…
cache buffers chains…
row cache objects…
log file parallel write…
library cache pin…
library cache lock…
log buffer space…
log file switch…
Actions…
log file sync…
rdbms ipc reply…
Idle Wait Events…
Part IV
SQL Tuning Overview
Introduction to SQL Tuning…
Goals for Tuning…
Reduce the Workload…
Balance the Workload…
Parallelize the Workload…
Identifying High-Load SQL…
Identifying Resource-Intensive SQL…
Tuning a Specific Program…
Tuning an Application / Reducing Load…
Gathering Data on the SQL Identified…
Information to Gather During Tuning…
Automatic SQL Tuning Features…
Developing Efficient SQL Statements…
Verifying Optimizer Statistics…
Reviewing the Execution Plan…
Restructuring the SQL Statements…
Compose Predicates Using AND and =…
Avoid Transformed Columns in the WHERE Clause…
Write Separate SQL Statements for Specific Tasks…
Use of EXISTS versus IN for Subqueries…
Example 1: Using IN – Selective Filters in the Subquery…
Example 2: Using EXISTS – Selective Predicate in the Parent…
Controlling the Access Path and Join Order with Hints…
Use Caution When Managing Views…
Use Caution When Joining Complex Views…
Do Not Recycle Views…
Use Caution When Unnesting Subqueries…
Use Caution When Performing Outer Joins to Views…
Store Intermediate Results…
Restructuring the Indexes…
Modifying or Disabling Triggers and Constraints…
Restructuring the Data…
Maintaining Execution Plans Over Time…
Visiting Data as Few Times as Possible…
Combine Multiples Scans with CASE Statements…
Use DML with RETURNING Clause…
Modify All the Data Needed in One Statement…
Optimizing SQL Statements
Automatic SQL Tuning
Automatic SQL Tuning Overview…
Query Optimizer Modes…
Normal mode…
Tuning mode…
Types of Tuning Analysis…
Statistics Analysis…
SQL Profiling…
Access Path Analysis…
SQL Structure Analysis…
SQL Tuning Advisor…
Input Sources…
Tuning Options…
Advisor Output…
Using SQL Tuning Advisor APIs…
Creating a SQL Tuning Task…
Executing a SQL Tuning Task…
Checking the Status of a SQL Tuning Task…
Checking the Progress of the SQL Tuning Advisor…
Displaying the Results of a SQL Tuning Task…
Additional Operations on a SQL Tuning Task…
SQL Tuning Sets…
Creating a SQL Tuning Set…
Loading a SQL Tuning Set…
Displaying the Contents of a SQL Tuning Set…
Modifying a SQL Tuning Set…
Transporting a SQL Tuning Set…
Dropping a SQL Tuning Set…
Additional Operations on SQL Tuning Sets…
SQL Profiles…
Accepting a SQL Profile…
Altering a SQL Profile…
Dropping a SQL Profile…
SQL Tuning Information Views…
The Query Optimizer
Optimizer Operations…
Choosing an Optimizer Goal…
OPTIMIZER_MODE Initialization Parameter…
Optimizer SQL Hints for Changing the Query Optimizer Goal…
Query Optimizer Statistics in the Data Dictionary…
Enabling and Controlling Query Optimizer Features…
Enabling Query Optimizer Features…
Controlling the Behavior of the Query Optimizer…
Understanding the Query Optimizer…
Components of the Query Optimizer…
Transforming Queries…
View Merging…
Predicate Pushing…
Subquery Unnesting…
Query Rewrite with Materialized Views…
OR-expansion…
Peeking of User-Defined Bind Variables…
Estimating…
Selectivity…
Cardinality…
Cost…
Generating Plans…
Reading and Understanding Execution Plans…
Overview of EXPLAIN PLAN…
Steps in the Execution Plan…
Understanding Access Paths for the Query Optimizer…
Full Table Scans…
Why a Full Table Scan Is Faster for Accessing Large Amounts of Data…
When the Optimizer Uses Full Table Scans…
Lack of Index…
Large Amount of Data…
Small Table…
High Degree of Parallelism…
Full Table Scan Hints…
Parallel Query Execution…
Rowid Scans…
When the Optimizer Uses Rowids…
Index Scans…
Assessing I/O for Blocks, not Rows…
Index Unique Scans…
When the Optimizer Uses Index Unique Scans…
Index Unique Scan Hints…
Index Range Scans…
When the Optimizer Uses Index Range Scans…
Index Range Scan Hints…
Index Range Scans Descending…
When the Optimizer Uses Index Range Scans Descending…
Index Range Scan Descending Hints…
Index Skip Scans…
Full Scans…
Fast Full Index Scans…
Fast Full Index Scan Hints…
Index Joins…
Index Join Hints…
Bitmap Indexes…
Cluster Access…
Hash Access…
Sample Table Scans…
How the Query Optimizer Chooses an Access Path…
Understanding Joins…
How the Query Optimizer Executes Join Statements…
How the Query Optimizer Chooses Execution Plans for Joins…
Nested Loop Joins…
Nested Loop Example…
Outer loop…
Inner loop…
When the Optimizer Uses Nested Loop Joins…
Nested Loop Join Hints…
Nesting Nested Loops…
Hash Joins…
When the Optimizer Uses Hash Joins…
Hash Join Hints…
Sort Merge Joins…
When the Optimizer Uses Sort Merge Joins…
Sort Merge Join Hints…
Cartesian Joins…
When the Optimizer Uses Cartesian Joins…
Cartesian Join Hints…
Outer Joins…
Nested Loop Outer Joins…
Hash Join Outer Joins…
Sort Merge Outer Joins…
Full Outer Joins…
Managing Optimizer Statistics
Understanding Statistics…
Automatic Statistics Gathering…
GATHER_STATS_JOB…
Enabling Automatic Statistics Gathering…
Considerations When Gathering Statistics…
When to Use Manual Statistics…
Restoring Previous Versions of Statistics…
Locking Statistics…
Manual Statistics Gathering…
Gathering Statistics with DBMS_STATS Procedures…
Statistics Gathering Using Sampling…
Parallel Statistics Gathering…
Statistics on Partitioned Objects…
Column Statistics and Histograms…
Determining Stale Statistics…
User-defined Statistics…
When to Gather Statistics…
System Statistics…
Workload Statistics…
Gathering Workload Statistics…
Multiblock Read Count…
Noworkload Statistics…
Gathering Noworkload Statistics…
Managing Statistics…
Restoring Previous Versions of Statistics…
Exporting and Importing Statistics…
Restoring Statistics Versus Importing or Exporting Statistics…
Locking Statistics for a Table or Schema…
Setting Statistics…
Estimating Statistics with Dynamic Sampling…
How Dynamic Sampling Works…
When to Use Dynamic Sampling…
How to Use Dynamic Sampling to Improve Performance…
Dynamic Sampling Levels…
Handling Missing Statistics…
Viewing Statistics…
Statistics on Tables, Indexes and Columns…
Viewing Histograms…
Height-Balanced Histograms…
Frequency Histograms…
Using Indexes and Clusters
Understanding Index Performance…
Tuning the Logical Structure…
Index Tuning using the SQLAccess Advisor…
Choosing Columns and Expressions to Index…
Choosing Composite Indexes…
Choosing Keys for Composite Indexes…
Ordering Keys for Composite Indexes…
Writing Statements That Use Indexes…
Writing Statements That Avoid Using Indexes…
Re-creating Indexes…
Compacting Indexes…
Using Nonunique Indexes to Enforce Uniqueness…
Using Enabled Novalidated Constraints…
Using Function-based Indexes for Performance…
Using Partitioned Indexes for Performance…
Using Index-Organized Tables for Performance…
Using Bitmap Indexes for Performance…
Using Bitmap Join Indexes for Performance…
Using Domain Indexes for Performance…
Using Clusters for Performance…
Using Hash Clusters for Performance…
Using Optimizer Hints
Understanding Optimizer Hints… 16-1
Types of Hints…
Hints by Category…
Hints for Optimization Approaches and Goals…
Hints for Access Paths…
Hints for Query Transformations…
Hints for Join Orders…
Hints for Join Operations…
Hints for Parallel Execution…
Additional Hints…
Specifying Hints…
Specifying a Full Set of Hints…
Specifying a Query Block in a Hint…
Specifying Global Table Hints…
Specifying Complex Index Hints…
Using Hints with Views…
Hints and Complex Views…
Hints and Mergeable Views…
Hints and Nonmergeable Views…
SQL Access Advisor
Overview of the SQL Access Advisor in the DBMS_ADVISOR Package…
Overview of Using the SQL Access Advisor…
SQL Access Advisor Repository…
Using the SQL Access Advisor…
Steps for Using the SQL Access Advisor…
Privileges Needed to Use the SQL Access Advisor…
Setting Up Tasks and Templates…
Creating Tasks…
Using Templates…
Creating Templates…
Managing Workloads…
Workload Objects…
Using Workloads…
Linking Tasks and Workloads…
Defining Workload Contents…
SQL Tuning Sets…
Loading User-Defined Workloads…
Loading SQL Cache Workloads…
Using Hypothetical Workloads…
Using Summary Advisor Oracle Database 9i Workloads…
SQL Access Advisor Workload Parameters…
Adding SQL Statements to a Workload…
Deleting SQL Statements from a Workload…
Changing SQL Statements in Workloads…
Maintaining Workloads…
Setting Workload Attributes…
Resetting Workloads…
Removing a Link Between a Workload and a Task…
Removing Workloads…
Working with Recommendations…
Recommendation Options…
Evaluation Mode…
Generating Recommendations…
EXECUTE_TASK Procedure…
Viewing Recommendations…
SQL Workload Journal…
Stopping the Recommendation Process…
Interrupting Tasks…
Canceling Tasks…
Marking Recommendations…
Modifying Recommendations…
Generating SQL Scripts…
When Recommendations are no Longer Required…
Performing a Quick Tune…
Managing Tasks…
Updating Task Attributes…
Deleting Tasks…
Setting the DAYS_TO_EXPIRE Parameter…
Using SQL Access Advisor Constants…
Examples of Using the SQL Access Advisor…
Recommendations From a User-Defined Workload…
Generate Recommendations Using a Task Template…
Filter a Workload from the SQL Cache…
Evaluate Current Usage of Indexes and Materialized Views…
Tuning Materialized Views for Fast Refresh and Query Rewrite…
DBMS_ADVISOR.TUNE_MVIEW Procedure…
TUNE_MVIEW Syntax and Operations…
Accessing TUNE_MVIEW Output Results…
USER_TUNE_MVIEW and DBA_TUNE_MVIEW Views…
Script Generation DBMS_ADVISOR Function and Procedure…
Fast Refreshable with Optimized Sub-Materialized View…
Using Plan Stability
Using Plan Stability to Preserve Execution Plans…
Using Hints with Plan Stability…
How Outlines Use Hints…
Storing Outlines…
Enabling Plan Stability…
Using Supplied Packages to Manage Stored Outlines…
Creating Outlines…
Using Category Names for Stored Outlines…
Using Stored Outlines…
Viewing Outline Data…
Moving Outline Tables…
Using Plan Stability with Query Optimizer Upgrades…
Moving from RBO to the Query Optimizer…
Moving to a New Oracle Release under the Query Optimizer…
Upgrading with a Test System…
Using EXPLAIN PLAN
Understanding EXPLAIN PLAN…
How Execution Plans Can Change…
Different Schemas…
Different Costs…
Minimizing Throw-Away…
Looking Beyond Execution Plans…
Using V$SQL_PLAN Views…
EXPLAIN PLAN Restrictions…
The PLAN_TABLE Output Table…
Running EXPLAIN PLAN…
Identifying Statements for EXPLAIN PLAN…
Specifying Different Tables for EXPLAIN PLAN…
Displaying PLAN_TABLE Output…
Customizing PLAN_TABLE Output…
Reading EXPLAIN PLAN Output…
Viewing Parallel Execution with EXPLAIN PLAN…
Viewing Parallel Queries with EXPLAIN PLAN…
Viewing Bitmap Indexes with EXPLAIN PLAN…
Viewing Partitioned Objects with EXPLAIN PLAN…
Examples of Displaying Range and Hash Partitioning with EXPLAIN PLAN…
Plans for Hash Partitioning…
Examples of Pruning Information with Composite Partitioned Objects…
Examples of Partial Partition-wise Joins…
Examples of Full Partition-wise Joins…
Examples of INLIST ITERATOR and EXPLAIN PLAN…
When the IN-List Column is an Index Column…
When the IN-List Column is an Index and a Partition Column…
When the IN-List Column is a Partition Column…
Example of Domain Indexes and EXPLAIN PLAN…
PLAN_TABLE Columns…
Using Application Tracing Tools
End to End Application Tracing…
Enabling and Disabling Statistic Gathering for End to End Tracing…
Statistic Gathering for Client Identifier…
Statistic Gathering for Service, Module, and Action…
Viewing Gathered Statistics for End to End Application Tracing…
Enabling and Disabling for End to End Tracing…
Tracing for Client Identifier…
Tracing for Service, Module, and Action…
Tracing for Session…
Tracing for Entire Instance or Database…
Viewing Enabled Traces for End to End Tracing…
Using the trcsess Utility…
Syntax for trcsess…
Sample Output of trcsess…
Understanding SQL Trace and TKPROF…
Understanding the SQL Trace Facility…
Understanding TKPROF…
Using the SQL Trace Facility and TKPROF…
Step 1: Setting Initialization Parameters for Trace File Management…
Step 2: Enabling the SQL Trace Facility…
Step 3: Formatting Trace Files with TKPROF…
Sample TKPROF Output…
Syntax of TKPROF…
Examples of TKPROF Statement…
TKPROF Example 1…
TKPROF Example 2…
Step 4: Interpreting TKPROF Output…
Tabular Statistics in TKPROF…
Row Source Operations…
Wait Event Information…
Interpreting the Resolution of Statistics…
Understanding Recursive Calls…
Library Cache Misses in TKPROF…
Statement Truncation in SQL Trace…
Identification of User Issuing the SQL Statement in TKPROF…
Execution Plan in TKPROF…
Deciding Which Statements to Tune…
Step 5: Storing SQL Trace Facility Statistics…
Generating the TKPROF Output SQL Script…
Editing the TKPROF Output SQL Script…
Querying the Output Table…
Avoiding Pitfalls in TKPROF Interpretation…
Avoiding the Argument Trap…
Avoiding the Read Consistency Trap…
Avoiding the Schema Trap…
Avoiding the Time Trap…
Avoiding the Trigger Trap…
Sample TKPROF Output…
Sample TKPROF Header…
Sample TKPROF Body…
Sample TKPROF Summary…
Part V
Real Application Testing
Database Replay
Overview of Database Replay…
Workload Capture…
Workload Preprocessing…
Workload Replay…
Analysis and Reporting…
Capturing a Database Workload…
Enabling and Disabling Workload Capture…
Prerequisites for Capturing a Database Workload…
Workload Capture Options…
Restarting the Database…
Defining the Workload Filters…
Setting Up the Capture Directory…
Workload Capture Restrictions…
Capturing a Database Workload Using Enterprise Manager…
Monitoring Workload Capture Using Enterprise Manager…
Monitoring an Active Workload Capture…
Stopping an Active Workload Capture…
Managing a Completed Workload Capture…
Capturing a Database Workload Using APIs…
Adding and Removing Workload Filters…
Starting a Workload Capture…
Stopping a Workload Capture…
Exporting AWR Data for Workload Capture…
Monitoring Workload Capture Using Views…
Analyzing Workload Capture…
Generating a Workload Capture Report Using Enterprise Manager…
Generating a Workload Capture Report Using APIs…
Using a Workload Capture Report…
SQL Performance Analyzer
Overview of SQL Performance Analyzer… 22-1
Capturing the SQL Workload… 22-3
Glossary
Index

Download Oracle Database Performance Tuning Guide pdf from download.oracle.com, 474 pages, 6856.75KB.
Related Books

Leave a Reply