Foreword |
|
xix | |
About the Authors |
|
xxiii | |
About the Technical Reviewers |
|
xxix | |
|
|
1 | (16) |
|
|
1 | (2) |
|
|
3 | (2) |
|
|
5 | (6) |
|
Logical Conclusions vs. Historical Observations |
|
|
6 | (2) |
|
|
8 | (1) |
|
|
9 | (2) |
|
|
11 | (2) |
|
|
11 | (1) |
|
|
12 | (1) |
|
|
13 | (1) |
|
|
14 | (1) |
|
BattleAgainstAnyGuess.com |
|
|
15 | (2) |
|
|
17 | (18) |
|
|
17 | (2) |
|
Software as a Service (SAAS) |
|
|
18 | (1) |
|
Platform as a Service (PAAS) |
|
|
18 | (1) |
|
Infrastructure as a Service (IAAS) |
|
|
18 | (1) |
|
Who Are the Cloud Providers? |
|
|
19 | (1) |
|
|
19 | (1) |
|
|
19 | (1) |
|
|
19 | (1) |
|
|
20 | (1) |
|
|
20 | (1) |
|
Running Oracle on Amazon's Cloud |
|
|
20 | (6) |
|
|
21 | (1) |
|
Making the Cloud Concrete |
|
|
21 | (2) |
|
|
23 | (1) |
|
How Do You Work This Thing? |
|
|
23 | (3) |
|
Starting Out: Getting a Suitable Operating System Running |
|
|
26 | (2) |
|
|
28 | (4) |
|
Simple Storage Service (S3) |
|
|
28 | (1) |
|
Elastic Block Storage (EBS) |
|
|
29 | (1) |
|
EBS Performance for Oracle |
|
|
29 | (2) |
|
Attaching and Configuring EBS Storage |
|
|
31 | (1) |
|
|
32 | (1) |
|
Generic AMI and EBS File System |
|
|
32 | (1) |
|
|
33 | (1) |
|
|
33 | (1) |
|
Oracle Backup on EC2: The OSB Cloud Module |
|
|
33 | (1) |
|
|
34 | (1) |
|
Developing a Performance Methodology |
|
|
35 | (38) |
|
|
35 | (2) |
|
|
35 | (1) |
|
Time-Based Performance Analysis |
|
|
36 | (1) |
|
|
36 | (1) |
|
|
37 | (2) |
|
|
38 | (1) |
|
Lightweight Performance Measures |
|
|
39 | (1) |
|
|
39 | (2) |
|
|
39 | (1) |
|
Capturing Resource Utilization and Outlines |
|
|
40 | (1) |
|
New Software and Upgrades |
|
|
41 | (2) |
|
|
41 | (1) |
|
Verify Statistics Collection |
|
|
42 | (1) |
|
Back Up the Optimizer Statistics |
|
|
43 | (1) |
|
Implement Change Incrementally |
|
|
43 | (1) |
|
Post Installation or Upgrade |
|
|
43 | (1) |
|
|
44 | (10) |
|
|
45 | (4) |
|
Examine the Performance Data |
|
|
49 | (3) |
|
|
52 | (1) |
|
Implement and Verify the Solution |
|
|
53 | (1) |
|
|
54 | (13) |
|
Using and Interpreting ADDM |
|
|
55 | (1) |
|
Using and Interpreting the ASH Report |
|
|
56 | (4) |
|
Using and Interpreting the AWR and Statspack Instance Reports |
|
|
60 | (7) |
|
Meaning of Key Statistics |
|
|
67 | (3) |
|
|
67 | (1) |
|
% Activity and Average Active Sessions |
|
|
68 | (1) |
|
|
69 | (1) |
|
|
70 | (1) |
|
|
70 | (1) |
|
|
70 | (1) |
|
|
71 | (1) |
|
|
71 | (1) |
|
Execution Plan Stability and Profiles |
|
|
71 | (1) |
|
|
71 | (2) |
|
|
73 | (38) |
|
When to Get Involved in Application Design |
|
|
74 | (2) |
|
|
74 | (1) |
|
Ask for Periodic Sign-off on Design and Application Milestones |
|
|
75 | (1) |
|
|
75 | (1) |
|
|
76 | (1) |
|
Partnership Between DBAs and Developers |
|
|
76 | (2) |
|
|
77 | (1) |
|
|
77 | (1) |
|
|
77 | (1) |
|
|
78 | (1) |
|
Design-First Methodologies vs. Agile Techniques |
|
|
78 | (5) |
|
|
79 | (1) |
|
Agile Software Development |
|
|
80 | (1) |
|
Pros and Cons of Each Methodology |
|
|
80 | (3) |
|
|
83 | (19) |
|
Choose Your Datatypes Carefully |
|
|
83 | (8) |
|
When Bigger Is Not Better |
|
|
91 | (1) |
|
|
92 | (8) |
|
|
100 | (2) |
|
Other Design Considerations |
|
|
102 | (3) |
|
|
102 | (1) |
|
Flexibility, Security, Speed |
|
|
103 | (1) |
|
The Importance of Having Integrity |
|
|
103 | (2) |
|
Don't Be High Maintenance |
|
|
105 | (1) |
|
The DBA as Database Evangelist |
|
|
105 | (5) |
|
Reading the Documentation and Keeping Current |
|
|
107 | (1) |
|
Knowing, Testing, and Teaching Your Software's Features |
|
|
108 | (2) |
|
Learning from Your Mistakes and Experiences |
|
|
110 | (1) |
|
|
110 | (1) |
|
Constant and Iterative Knowledge Sharing |
|
|
110 | (1) |
|
Running Oracle on Windows |
|
|
111 | (20) |
|
|
111 | (8) |
|
|
112 | (5) |
|
|
117 | (2) |
|
|
119 | (1) |
|
|
119 | (11) |
|
|
119 | (3) |
|
|
122 | (4) |
|
|
126 | (4) |
|
|
130 | (1) |
|
|
131 | (22) |
|
Adopting a Performance Mindset |
|
|
131 | (2) |
|
Defining and Measuring Performance |
|
|
133 | (8) |
|
|
133 | (2) |
|
|
135 | (3) |
|
|
138 | (3) |
|
Interpreting Performance Data |
|
|
141 | (10) |
|
|
141 | (1) |
|
The Presence of Unidentified Data Skew |
|
|
142 | (2) |
|
SQL That Should Be Rewritten |
|
|
144 | (4) |
|
SQL That Unnecessarily Invokes PL/SQL |
|
|
148 | (3) |
|
|
151 | (1) |
|
|
152 | (1) |
|
|
153 | (20) |
|
|
153 | (3) |
|
|
153 | (1) |
|
Execution Plan Preparation |
|
|
154 | (2) |
|
Using the Extensible Optimizer |
|
|
156 | (1) |
|
|
156 | (1) |
|
|
157 | (1) |
|
|
157 | (1) |
|
|
157 | (5) |
|
Creating Some Example Objects |
|
|
157 | (3) |
|
|
160 | (2) |
|
Giving the CBO Better Information |
|
|
162 | (1) |
|
Understanding How It Works |
|
|
162 | (2) |
|
Indicating Default Selectivity and Default Cost |
|
|
164 | (2) |
|
Specifying Defaults (Syntax) |
|
|
165 | (1) |
|
Determining a Default Cost |
|
|
165 | (1) |
|
|
165 | (1) |
|
Influencing the Execution Plans |
|
|
166 | (6) |
|
Influence of the Increased Cost |
|
|
166 | (2) |
|
Influence on the Order of Operations with Default Statistics |
|
|
168 | (2) |
|
Influence on the Order of Operations |
|
|
170 | (2) |
|
|
172 | (1) |
|
Understanding Performance Optimization Methods |
|
|
173 | (124) |
|
Blindly Changing Parameters |
|
|
174 | (1) |
|
Monitoring and Reacting to the BCHR |
|
|
174 | (8) |
|
Monitoring Delta Values of System/Session Stats |
|
|
182 | (2) |
|
|
184 | (6) |
|
Monitoring the Delta Values of System/Session Waits |
|
|
190 | (6) |
|
Monitoring CPU Utilization |
|
|
196 | (7) |
|
|
197 | (1) |
|
Determining the CPU Run Queue |
|
|
198 | (3) |
|
Determining CPU Utilization |
|
|
201 | (2) |
|
Sampling Performance with Low Overhead |
|
|
203 | (9) |
|
Capturing Some Statistics |
|
|
203 | (6) |
|
Decision Tree for Quickly Interpreting the Statistics |
|
|
209 | (3) |
|
Creating Statspack or AWR Reports |
|
|
212 | (3) |
|
Monitoring the Delta Values for SQL Statements |
|
|
215 | (4) |
|
Examining Execution Plans and Plan Statistics |
|
|
219 | (8) |
|
Examining Optimizer Parameters Affecting Plans |
|
|
227 | (3) |
|
Generating 10053 Cost-Based Optimizer Traces |
|
|
230 | (16) |
|
Activating and Deactivating the Optimizer Trace |
|
|
230 | (1) |
|
|
231 | (1) |
|
|
231 | (2) |
|
Optimizer Parameters Used |
|
|
233 | (1) |
|
|
233 | (2) |
|
|
235 | (1) |
|
Base Statistical Information |
|
|
236 | (2) |
|
|
238 | (3) |
|
|
241 | (1) |
|
|
242 | (1) |
|
|
243 | (1) |
|
|
244 | (1) |
|
|
245 | (1) |
|
|
245 | (1) |
|
Generating 10046 Extended Traces |
|
|
246 | (14) |
|
Brief Summary of a Raw 10046 Extended Trace File's Contents |
|
|
247 | (2) |
|
Enabling a 10046 Extended Trace |
|
|
249 | (4) |
|
|
253 | (1) |
|
Sample Trace File Analysis with Oracle 11.1.0.7 |
|
|
253 | (7) |
|
Examining Server Stack Traces |
|
|
260 | (15) |
|
Generating a Trace File on Error |
|
|
260 | (1) |
|
Initiating a Trace with SQLPlus Oradebug |
|
|
261 | (14) |
|
Operating-System-Generated Stack Traces |
|
|
275 | (1) |
|
Reviewing the Enterprise Manager ADDM Findings |
|
|
275 | (4) |
|
Examining Network Packets |
|
|
279 | (4) |
|
Examining Client-Side Traces |
|
|
283 | (3) |
|
|
283 | (2) |
|
|
285 | (1) |
|
|
286 | (1) |
|
Investigating Enqueue Waits |
|
|
286 | (5) |
|
|
291 | (6) |
|
Choosing a Performance Optimization Method |
|
|
297 | (50) |
|
Decision Tree for Performance Monitoring |
|
|
297 | (3) |
|
Performance Problems Not Yet Reported |
|
|
298 | (1) |
|
Problems Reported by End Users |
|
|
298 | (1) |
|
Problems Reported by IT Staff |
|
|
299 | (1) |
|
|
300 | (21) |
|
|
300 | (6) |
|
Problem After Upgrading the Oracle Release Version |
|
|
306 | (7) |
|
Problem After Upgrading the ERP Version |
|
|
313 | (8) |
|
Performance Optimization Issues |
|
|
321 | (1) |
|
|
321 | (7) |
|
|
321 | (1) |
|
|
322 | (1) |
|
Verify That the Trace File Covers Only One Test |
|
|
322 | (1) |
|
Verify That the Trace File Is Complete |
|
|
323 | (2) |
|
Verify That the Issue Is a Database Issue |
|
|
325 | (2) |
|
Determine Whether It Is a Parse or Execution Problem |
|
|
327 | (1) |
|
|
328 | (3) |
|
Majority of Parse Time Spent on the CPU |
|
|
329 | (2) |
|
Majority of Parse Time Spent on Wait Events |
|
|
331 | (1) |
|
High Execution Time or Fetch Time Issues |
|
|
331 | (16) |
|
General Optimizer Settings and Object Statistics |
|
|
331 | (1) |
|
|
332 | (1) |
|
Common Parameters Influencing Optimizer |
|
|
333 | (1) |
|
Statement and Physical Design Issues |
|
|
334 | (1) |
|
|
335 | (2) |
|
Optimizer Not Using (Correct) Index |
|
|
337 | (1) |
|
Pagination (Top N) Queries |
|
|
338 | (1) |
|
Processing Large Result Sets |
|
|
339 | (1) |
|
|
340 | (1) |
|
Parallel Processing Issues |
|
|
341 | (1) |
|
|
342 | (1) |
|
Resolving Shared Pool Abuse |
|
|
343 | (1) |
|
General Guidelines for Investigating Shared Pool Abuse |
|
|
344 | (3) |
|
Managing the Very Large Database |
|
|
347 | (22) |
|
Designing (or Retrofitting) a VLDB |
|
|
348 | (1) |
|
|
349 | (2) |
|
|
351 | (9) |
|
|
353 | (1) |
|
Data Manipulation with Partitioning |
|
|
353 | (4) |
|
|
357 | (1) |
|
|
358 | (2) |
|
Information Life Cycle Management |
|
|
360 | (2) |
|
Backup Optimization and Guaranteed Recovery |
|
|
362 | (2) |
|
|
364 | (1) |
|
Limits of Which to Be Aware |
|
|
365 | (2) |
|
|
365 | (1) |
|
Number of Files in a Database |
|
|
365 | (1) |
|
|
366 | (1) |
|
Parameter READ_ONLY_OPEN_DELAYED |
|
|
367 | (1) |
|
|
367 | (2) |
|
|
369 | (30) |
|
|
369 | (9) |
|
|
370 | (4) |
|
|
374 | (4) |
|
|
378 | (7) |
|
|
385 | (2) |
|
|
387 | (1) |
|
|
387 | (1) |
|
|
387 | (1) |
|
|
388 | (1) |
|
|
388 | (9) |
|
|
394 | (2) |
|
|
396 | (1) |
|
|
397 | (2) |
|
Troubleshooting Latch Contention |
|
|
399 | (42) |
|
Latches and Why We Need Them |
|
|
399 | (1) |
|
Solitaire, Parent, and Child Latches |
|
|
400 | (1) |
|
|
401 | (3) |
|
|
401 | (2) |
|
|
403 | (1) |
|
|
404 | (1) |
|
Identifying and Analyzing Latch Contention |
|
|
404 | (3) |
|
Identify Latches Causing Contention |
|
|
404 | (2) |
|
Review Distribution of Gets |
|
|
406 | (1) |
|
|
406 | (1) |
|
Cache Buffers Chains Latch Contention |
|
|
407 | (12) |
|
Common Causes of CBC Latch Contention |
|
|
409 | (1) |
|
Analyzing CBC Latch Contention |
|
|
410 | (5) |
|
Resolving CBC Latch Contention |
|
|
415 | (4) |
|
Shared Pool Latch Contention |
|
|
419 | (10) |
|
Structures in the Shared Pool |
|
|
419 | (2) |
|
Common Causes of Shared Pool Latch Contention |
|
|
421 | (1) |
|
Analyzing Shared pool Latch Contention |
|
|
422 | (6) |
|
Resolving Shared Pool Latch Contention |
|
|
428 | (1) |
|
Library Cache Latch Contention |
|
|
429 | (5) |
|
Common Causes of Library Cache Latch Contention |
|
|
431 | (1) |
|
Analyzing Library Cache Latch Contention |
|
|
431 | (1) |
|
Library Cache Latches and Mutexes |
|
|
432 | (1) |
|
Resolving Library Cache Latch Contention |
|
|
432 | (2) |
|
Enqueue Hash Chains Latch Contention |
|
|
434 | (5) |
|
Common Causes of Enqueue Hash Chains Latch Contention |
|
|
435 | (1) |
|
Analyzing Enqueue Hash Chains Latch Contention |
|
|
436 | (2) |
|
Resolving Enqueue Hash Chains Latch Contention |
|
|
438 | (1) |
|
Advanced Help for Latch Contention Problems |
|
|
439 | (1) |
|
|
439 | (1) |
|
|
439 | (1) |
|
The _latch_classes and _latch_class_N Parameters |
|
|
439 | (1) |
|
The _latch_wait_posting and _enable_reliable_latch_waits Parameters |
|
|
440 | (1) |
|
|
440 | (1) |
|
Measuring for Robust Performance |
|
|
441 | (26) |
|
|
442 | (1) |
|
Understanding the Properties of Performance |
|
|
443 | (2) |
|
|
443 | (1) |
|
|
443 | (1) |
|
Meeting Expectations Matters |
|
|
444 | (1) |
|
|
444 | (1) |
|
``Tuning'' a Data Warehouse |
|
|
445 | (3) |
|
|
445 | (2) |
|
|
447 | (1) |
|
Exploring What Variance Can Tell Us About a Process |
|
|
448 | (7) |
|
|
449 | (3) |
|
Distribution of Elapsed Time Data |
|
|
452 | (1) |
|
|
452 | (1) |
|
|
453 | (1) |
|
What About Standard Deviation? |
|
|
453 | (1) |
|
Elapsed Time Data Sources |
|
|
454 | (1) |
|
Achieving Robust Performance |
|
|
455 | (10) |
|
|
456 | (1) |
|
|
457 | (2) |
|
|
459 | (4) |
|
Tolerance Ranges and Process Capability |
|
|
463 | (1) |
|
What is ``Too Much'' Variation? |
|
|
464 | (1) |
|
Measuring Variance Within Oracle Sample Sets |
|
|
464 | (1) |
|
|
464 | (1) |
|
|
465 | (2) |
|
|
467 | (40) |
|
|
468 | (1) |
|
|
469 | (6) |
|
Splitting the Task in Two |
|
|
470 | (2) |
|
Dealing with Oracle Database 10g and Prior |
|
|
472 | (3) |
|
|
475 | (7) |
|
Accounts That Can Definitely Be Removed |
|
|
477 | (1) |
|
Accounts That Definitely Have to Remain in the Database |
|
|
478 | (1) |
|
Accounts to Analyze Individually |
|
|
479 | (3) |
|
|
482 | (5) |
|
Account Password Strength |
|
|
487 | (11) |
|
Cracking Passwords with a PL/SQL Password Cracker |
|
|
488 | (2) |
|
Cracking Passwords with a ``Real'' Password Cracker |
|
|
490 | (7) |
|
|
497 | (1) |
|
Roles and Privilege Assessment |
|
|
498 | (2) |
|
|
498 | (1) |
|
Have Accounts Been Shared? |
|
|
499 | (1) |
|
|
500 | (3) |
|
|
503 | (1) |
|
|
504 | (1) |
|
|
505 | (2) |
|
|
507 | (26) |
|
|
508 | (1) |
|
Locating the Database Table |
|
|
509 | (18) |
|
|
510 | (3) |
|
|
513 | (6) |
|
Other Methods to Read Data |
|
|
519 | (6) |
|
|
525 | (2) |
|
|
527 | (3) |
|
Generalizing Across the Database |
|
|
530 | (1) |
|
|
531 | (1) |
|
|
532 | (1) |
Index |
|
533 | |