Математика

Физика

Химия

Биология

Техника и    технологии

Expert Oracle Database Architecture 9i and 10g Programming Techniques and Solutions - Thomas Kyte 2005 705 Expert Oracle Database Architecture 9i and 10g Programming Techniques and Solutions - Thomas Kyte 2005 705 Expert Oracle Database Archi
Expert Oracle Database Architecture 9i and 10g Programming Techniques and Solutions - Thomas Kyte 2005 705



Thomas Kyte

Contents
Foreword . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
About the Author . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xiv
About the Technical Reviewers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvi
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Setting Up Your Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxv
¦CHAPTER 1 Developing Successful Oracle Applications . . . . . . . . . . . . . . . 1
My Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
The Black Box Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
How (and How Not) to Develop Database Applications . . . . . . . . . . . . . . . . 9
Understanding Oracle Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Understanding Concurrency Control . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Multi-Versioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Database Independence? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
“How Do I Make It Run Faster?” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
The DBA–Developer Relationship . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
¦CHAPTER 2 Architecture Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Defining Database and Instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
The SGA and Background Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Connecting to Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Dedicated Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Shared Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Mechanics of Connecting over TCP/IP . . . . . . . . . . . . . . . . . . . . . . . . 60
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
iii
¦CHAPTER 3 Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Parameter Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
What Are Parameters? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Legacy init.ora Parameter Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Server Parameter Files (SPFILEs) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Parameter File Wrap-Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Trace Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Requested Trace Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Trace Files Generated in Response to Internal Errors . . . . . . . . . . . . 83
Trace File Wrap-Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Alert File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Data Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
A Brief Review of File System Mechanisms . . . . . . . . . . . . . . . . . . . . 89
The Storage Hierarchy in an Oracle Database . . . . . . . . . . . . . . . . . . 90
Dictionary-Managed and Locally-Managed Tablespaces . . . . . . . . 94
Temp Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Control Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Redo Log Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Online Redo Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Archived Redo Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Password Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Change Tracking File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Flashback Log Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Flashback Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Flash Recovery Area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
DMP Files (EXP/IMP Files) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Data Pump Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Flat Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
¦CHAPTER 4 Memory Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
The Process Global Area and User Global Area . . . . . . . . . . . . . . . . . . . . . 115
Manual PGA Memory Management . . . . . . . . . . . . . . . . . . . . . . . . . 116
Automatic PGA Memory Management . . . . . . . . . . . . . . . . . . . . . . . 123
Choosing Between Manual and Auto Memory Management . . . . 133
PGA and UGA Wrap-Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
The System Global Area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Fixed SGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Redo Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
iv ¦CONTENTS
Block Buffer Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Shared Pool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Large Pool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Java Pool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Streams Pool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Automatic SGA Memory Management . . . . . . . . . . . . . . . . . . . . . . . 152
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
¦CHAPTER 5 Oracle Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Server Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Dedicated Server Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Shared Server Connections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Connections vs. Sessions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Dedicated Server vs. Shared Server . . . . . . . . . . . . . . . . . . . . . . . . . 165
Dedicated/Shared Server Wrap-Up . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Background Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Focused Background Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Utility Background Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Slave Processes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
I/O Slaves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Parallel Query Slaves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
¦CHAPTER 6 Locking and Latching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
What Are Locks? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Locking Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Lost Updates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Pessimistic Locking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Optimistic Locking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Optimistic or Pessimistic Locking? . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Blocking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Deadlocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Lock Escalation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Lock Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
DML Locks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
DDL Locks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Latches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Manual Locking and User-Defined Locks . . . . . . . . . . . . . . . . . . . . . 229
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
¦CONTENTS v
¦CHAPTER 7 Concurrency and Multi-Versioning . . . . . . . . . . . . . . . . . . . . . . . 231
What Are Concurrency Controls? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Transaction Isolation Levels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
READ UNCOMMITTED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
READ COMMITTED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
REPEATABLE READ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
SERIALIZABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
READ ONLY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Implications of Multi-Version Read Consistency . . . . . . . . . . . . . . . . . . . . 242
A Common Data Warehousing Technique That Fails . . . . . . . . . . . 242
An Explanation for Higher Than Expected I/O on Hot Tables . . . . . 244
Write Consistency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Consistent Reads and Current Reads . . . . . . . . . . . . . . . . . . . . . . . . 247
Seeing a Restart . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Why Is a Restart Important to Us? . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
¦CHAPTER 8 Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Transaction Control Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Atomicity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Statement-Level Atomicity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Procedure-Level Atomicity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Transaction-Level Atomicity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Integrity Constraints and Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
IMMEDIATE Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
DEFERRABLE Constraints and Cascading Updates . . . . . . . . . . . . . 263
Bad Transaction Habits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
Committing in a Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Using Autocommit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Distributed Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Autonomous Transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
How Autonomous Transactions Work . . . . . . . . . . . . . . . . . . . . . . . . 275
When to Use Autonomous Transactions . . . . . . . . . . . . . . . . . . . . . . 277
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
vi ¦CONTENTS
¦CHAPTER 9 Redo and Undo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
What Is Redo? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
What Is Undo? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
How Redo and Undo Work Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
Example INSERT-UPDATE-DELETE Scenario . . . . . . . . . . . . . . . . . . 287
Commit and Rollback Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
What Does a COMMIT Do? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292
What Does a ROLLBACK Do? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
Investigating Redo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Measuring Redo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Redo Generation and BEFORE/AFTER Triggers . . . . . . . . . . . . . . . . 302
Can I Turn Off Redo Log Generation? . . . . . . . . . . . . . . . . . . . . . . . . 308
Why Can’t I Allocate a New Log? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
Block Cleanout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
Log Contention . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Temporary Tables and Redo/Undo . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
Investigating Undo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
What Generates the Most and Least Undo? . . . . . . . . . . . . . . . . . . . 323
ORA-01555: snapshot too old Error . . . . . . . . . . . . . . . . . . . . . . . . . . 325
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
¦CHAPTER 10 Database Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Types of Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Segment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Segment Space Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
High-Water Mark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
FREELISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344
PCTFREE and PCTUSED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
LOGGING and NOLOGGING . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
INITRANS and MAXTRANS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
Heap Organized Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
Index Organized Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Index Organized Tables Wrap-Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Index Clustered Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
Index Clustered Tables Wrap-Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
Hash Clustered Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
Hash Clustered Tables Wrap-Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
Sorted Hash Clustered Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
¦CONTENTS vii
Nested Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390
Nested Tables Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
Nested Table Storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
Nested Tables Wrap-Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
Temporary Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
Temporary Tables Wrap-Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
Object Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
Object Tables Wrap-Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
¦CHAPTER 11 Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
An Overview of Oracle Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
B*Tree Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
Index Key Compression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
Reverse Key Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
Descending Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435
When Should You Use a B*Tree Index? . . . . . . . . . . . . . . . . . . . . . . . 437
B*Trees Wrap-Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
Bitmap Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448
When Should You Use a Bitmap Index? . . . . . . . . . . . . . . . . . . . . . . 449
Bitmap Join Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453
Bitmap Indexes Wrap-Up . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
Function-Based Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
Important Implementation Details . . . . . . . . . . . . . . . . . . . . . . . . . . . 455
A Simple Function-Based Index Example . . . . . . . . . . . . . . . . . . . . . 456
Indexing Only Some of the Rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
Implementing Selective Uniqueness . . . . . . . . . . . . . . . . . . . . . . . . . 466
Caveat on CASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
Caveat Regarding ORA-01743 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
Function-Based Indexes Wrap-Up . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Application Domain Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
Frequently Asked Questions and Myths About Indexes . . . . . . . . . . . . . . 471
Do Indexes Work on Views? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
Do Nulls and Indexes Work Together? . . . . . . . . . . . . . . . . . . . . . . . . 471
Should Foreign Keys Be Indexed? . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
Why Isn’t My Index Getting Used? . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
Myth: Space Is Never Reused in an Index . . . . . . . . . . . . . . . . . . . . 482
Myth: Most Discriminating Elements Should Be First . . . . . . . . . . 485
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
viii ¦CONTENTS
¦CHAPTER 12 Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
An Overview of Oracle Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489
Character and Binary String Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
NLS Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
Character Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
Binary Strings: RAW Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 502
Number Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 504
NUMBER Type Syntax and Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
BINARY_FLOAT/BINARY_DOUBLE Type Syntax and Usage . . . . . . 510
Non-Native Number Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
Performance Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
LONG Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
Restrictions on LONG and LONG RAW Types . . . . . . . . . . . . . . . . . . 513
Coping with Legacy LONG Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515
DATE, TIMESTAMP, and INTERVAL Types . . . . . . . . . . . . . . . . . . . . . . . . . . 520
Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
DATE Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
TIMESTAMP Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
INTERVAL Type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
LOB Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540
Internal LOBs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541
BFILEs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
ROWID/UROWID Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
¦CHAPTER 13 Partitioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557
Partitioning Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
Increased Availability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
Reduced Administrative Burden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
Enhanced Statement Performance . . . . . . . . . . . . . . . . . . . . . . . . . . 565
Table Partitioning Schemes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
Range Partitioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
Hash Partitioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570
List Partitioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
Composite Partitioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
Row Movement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
Table Partitioning Schemes Wrap-Up . . . . . . . . . . . . . . . . . . . . . . . . 581
¦CONTENTS ix
Partitioning Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
Local Indexes vs. Global Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
Local Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584
Global Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590
Partitioning and Performance, Revisited . . . . . . . . . . . . . . . . . . . . . . . . . . . 606
Auditing and Segment Space Compression . . . . . . . . . . . . . . . . . . . . . . . . 612
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614
¦CHAPTER 14 Parallel Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615
When to Use Parallel Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616
A Parallel Processing Analogy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
Parallel Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
Parallel DML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624
Parallel DDL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
Parallel DDL and Data Loading Using External Tables . . . . . . . . . . 628
Parallel DDL and Extent Trimming . . . . . . . . . . . . . . . . . . . . . . . . . . . 630
Parallel Recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639
Procedural Parallelism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639
Parallel Pipelined Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640
Do-It-Yourself Parallelism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648
¦CHAPTER 15 Data Loading and Unloading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649
SQL*Loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649
Loading Data with SQLLDR FAQs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 653
SQLLDR Caveats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 679
SQLLDR Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680
External Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 680
Setting Up External Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681
Dealing with Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687
Using an External Table to Load Different Files . . . . . . . . . . . . . . . . 690
Multiuser Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691
External Tables Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692
Flat File Unload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692
Data Pump Unload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703

Цена: 200руб.

Назад

Заказ

На главную страницу