Contents -...
Transcript of Contents -...
ORACLE Series TIGHT / Oracle9i: The Complete Reference / Loney, Koch / 222521-1 / Chapter 1Blind Folio 1:ix
Contents
ACKNOWLEDGMENTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvPREFACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxviiINTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxi
PART ICritical Database Concepts
1 Sharing Knowledge and Success . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3The Cooperative Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5Everyone Has “Data” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6The Familiar Language of Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Tables of Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7Structured Query Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8A Simple Oracle Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9Why It Is Called “Relational” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Some Common, Everyday Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2 The Dangers in a Relational Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15Is It Really as Easy as They Say? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16What Are the Risks? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16The Importance of the New Vision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Changing Environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17Codes, Abbreviations, and Naming Standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Why Are Codes Used Instead of English? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18The Benefit of User Feedback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
How to Reduce the Confusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Normalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20English Names for Tables and Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25English Words for the Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Capitalization in Names and Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Normalizing Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Good Design Has a Human Touch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Understanding the Application Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28Outline of Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
ix
P:\010Comp\Oracle8\521-1\fm.vpFriday, July 19, 2002 11:39:50 AM
Color profile: Generic CMYK printer profileComposite Default screen
Understanding the Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32The Atomic Data Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33The Atomic Business Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33The Business Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Data Entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34Query and Reporting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Toward Object Name Normalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Level-Name Integrity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35Foreign Keys . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Singular Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36Brevity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37Object Name Thesaurus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Intelligent Keys and Column Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37The Commandments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
The Ten Commandments of Humane Design . . . . . . . . . . . . . . . . . . . . . . . . . 38
3 The Basic Parts of Speech in SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41Style . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43Creating the NEWSPAPER Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44Using SQL to select Data from Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44select, from, where, and order by . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48Logic and Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Single-Value Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50LIKE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Simple Tests Against a List of Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56Combining Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Another Use for where: Subqueries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59Single Values from a Subquery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60Lists of Values from a Subquery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Combining Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63Creating a View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Expanding the View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
4 The Basics of Object-Relational Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69Do I Have to Use Objects? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70Why Should I Use Objects? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70Everybody Has Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Abstract Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Nested Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Varying Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Large Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73Object Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73Naming Conventions for Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
A Common Object Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74The Structure of a Simple Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75Inserting Records into CUSTOMER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78Selecting from Abstract Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
x Oracle9i: The Complete Reference
ORACLE Series TIGHT / Oracle9i: The Complete Reference / Loney, Koch / 222521-1 / Front MatterBlind Folio FM:x
P:\010Comp\Oracle8\521-1\fm.vpFriday, July 19, 2002 11:39:50 AM
Color profile: Generic CMYK printer profileComposite Default screen
Object-Oriented Analysis and Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81Going Forward . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
5 Introduction to Web-Enabled Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83Where Does SQL Fit In? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86Where Does Java Fit In? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86Where Does Oracle Portal Fit In? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
PART IISQL and SQL*PLUS
6 Basic SQL*PLUS Reports and Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91Building a Simple Report . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
remark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97set headsep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97ttitle and btitle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97column . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98break on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99compute avg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99set linesize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100set pagesize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101set newpage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101spool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101/* */ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103Some Clarification on Column Headings . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Other Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104Command Line Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104set pause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107save . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107store . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108Editing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109Adding SQLPLUS Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Checking the SQLPLUS Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110Building Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
7 Getting Text Information and Changing It . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114What Is a String? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115Concatenation ( || ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117How to Cut and Paste Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
RPAD and LPAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119LTRIM, RTRIM, and TRIM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120Combining Two Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121Using the TRIM Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123Adding One More Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124LOWER, UPPER, and INITCAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Contents xi
ORACLE Series TIGHT / Oracle9i: The Complete Reference / Loney, Koch / 222521-1 / Front MatterBlind Folio FM:xi
P:\010Comp\Oracle8\521-1\fm.vpFriday, July 19, 2002 11:39:50 AM
Color profile: Generic CMYK printer profileComposite Default screen
LENGTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126SUBSTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126INSTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130ASCII and CHR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
order by and where with String Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135SOUNDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137National Language Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
8 Playing the Numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141The Three Classes of Number Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142Single-Value Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Addition, Subtraction, Multiplication, and Division (+, -, *, and /) . . . . . . . . . 146NULL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146NVL: NULL-Value Substitution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147ABS: Absolute Value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148CEIL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148FLOOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148MOD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149POWER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149SQRT: Square Root . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149EXP, LN, and LOG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150ROUND and TRUNC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150SIGN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152SIN, SINH, COS, COSH, TAN, TANH, ACOS, ATAN, ATAN2, and ASIN . . . 152
Group-Value Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152NULLs in Group-Value Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153Examples of Single- and Group-Value Functions . . . . . . . . . . . . . . . . . . . . . . 154AVG, COUNT, MAX, MIN, and SUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155Combining Group-Value and Single-Value Functions . . . . . . . . . . . . . . . . . . . 155STDDEV and VARIANCE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157DISTINCT in Group Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
List Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159Finding Rows with MAX or MIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160Precedence and Parentheses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
9 Dates: Then, Now, and the Difference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165Date Arithmetic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
SYSDATE, CURRENT_DATE, and SYSTIMESTAMP . . . . . . . . . . . . . . . . . . . . . 166The Difference Between Two Dates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167Adding Months . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170Subtracting Months . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171GREATEST and LEAST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171NEXT_DAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172LAST_DAY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174MONTHS_BETWEEN Two Dates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174Combining Date Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
xii Oracle9i: The Complete Reference
ORACLE Series TIGHT / Oracle9i: The Complete Reference / Loney, Koch / 222521-1 / Front MatterBlind Folio FM:xii
P:\010Comp\Oracle8\521-1\fm.vpFriday, July 19, 2002 11:39:51 AM
Color profile: Generic CMYK printer profileComposite Default screen
ROUND and TRUNC in Date Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176TO_DATE and TO_CHAR Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
The Most Common TO_CHAR Error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184NEW_TIME: Switching Time Zones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184TO_DATE Calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Dates in where Clauses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188Dealing with Multiple Centuries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189Using the EXTRACT Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190Using the TIMESTAMP Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
10 Conversion and Transformation Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193Elementary Conversion Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Automatic Conversion of Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198A Warning About Automatic Conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Specialized Conversion Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201Transformation Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
TRANSLATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202DECODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
11 Grouping Things Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205The Use of group by and having . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Adding an order by . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208Order of Execution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Views of Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210Renaming Columns with Aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
The Power of Views of Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213order by in views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214Logic in the having Clause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215order by with Columns and Group Functions . . . . . . . . . . . . . . . . . . . . . . . . . 216Join Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
12 When One Query Depends upon Another . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219Advanced Subqueries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Correlated Subqueries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221Coordinating Logical Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222Using EXISTS and Its Correlated Subquery . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Outer Joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225Pre-Oracle9i Syntax for Outer Joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225Oracle9i Syntax for Outer Joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227Replacing NOT IN with an Outer Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229Replacing NOT IN with NOT EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
NATURAL and INNER Joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231UNION, INTERSECT, and MINUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
IN Subqueries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235Restrictions on UNION, INTERSECT, and MINUS . . . . . . . . . . . . . . . . . . . . . 236
13 Some Complex Possibilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237Complex Groupings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238Using Temporary Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Contents xiii
ORACLE Series TIGHT / Oracle9i: The Complete Reference / Loney, Koch / 222521-1 / Front MatterBlind Folio FM:xiii
P:\010Comp\Oracle8\521-1\fm.vpFriday, July 19, 2002 11:39:51 AM
Color profile: Generic CMYK printer profileComposite Default screen
Using ROLLUP, GROUPING, and CUBE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240Family Trees and connect by . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Excluding Individuals and Branches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248Traveling Toward the Roots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250The Basic Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
14 Building a Report in SQL*PLUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255Advanced Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
break on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256Order of Columns in break on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260break on Row . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260Adding Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261Columns Used with ttitle and btitle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261More on break on and compute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
set termout off and set termout on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270Variables in SQLPLUS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Other Places to Use Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273Numeric Formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273Using mask.sql . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274show all and spooling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275Folding onto New Lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
fold_after and fold_before . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276Additional Reporting Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
15 Changing Data: insert, update, merge, and delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279insert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Inserting a Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281insert with select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281Using the APPEND Hint to Improve insert Performance . . . . . . . . . . . . . . . . . 282
rollback, commit, and autocommit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283Using savepoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284Implicit commit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285Auto rollback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
Multitable Inserts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
update with Embedded select . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292update with NULL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Using the merge Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
16 Advanced Use of Functions and Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297Functions in order by . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298Bar Charts and Graphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298Using TRANSLATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Eliminating Characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301Complex Cut and Paste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302Counting String Occurrences Within Larger Strings . . . . . . . . . . . . . . . . . . . . . . . . . . 307Additional Facts About Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Related set Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
xiv Oracle9i: The Complete Reference
ORACLE Series TIGHT / Oracle9i: The Complete Reference / Loney, Koch / 222521-1 / Front MatterBlind Folio FM:xiv
P:\010Comp\Oracle8\521-1\fm.vpFriday, July 19, 2002 11:39:51 AM
Color profile: Generic CMYK printer profileComposite Default screen
17 DECODE and CASE: if, then, and else in SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311if, then, else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312Replacing Values via DECODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315DECODE within DECODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316Greater Than and Less Than in DECODE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319Using CASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
18 Creating, Dropping, and Altering Tables and Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325Creating a Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Character Width and NUMBER Precision . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327Rounding During Insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329Constraints in create table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331Designating Index Tablespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332Naming Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Dropping Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334Altering Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
The Rules for Adding or Modifying a Column . . . . . . . . . . . . . . . . . . . . . . . . . 337Dropping a Column . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Creating a View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339Stability of a View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340order by in Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341Creating a Read-Only View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Creating a Table from a Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342Creating an Index-Organized Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344Using Partitioned Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Creating a Partitioned Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345List Partitioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348Indexing Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348Managing Partitioned Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349Querying Directly from Partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Online Redefinition of Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
19 By What Authority? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355Users, Roles, and Privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Creating a User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356Password Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357Three Standard Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361Format for the grant Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362Revoking Privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
What Users Can Grant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363Moving to Another User with connect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365create synonym . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368Using Ungranted Privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368Passing on Privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368Creating a Role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370Granting Privileges to a Role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370Granting a Role to Another Role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371Adding a Password to a Role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
Contents xv
ORACLE Series TIGHT / Oracle9i: The Complete Reference / Loney, Koch / 222521-1 / Front MatterBlind Folio FM:xv
P:\010Comp\Oracle8\521-1\fm.vpFriday, July 19, 2002 11:39:51 AM
Color profile: Generic CMYK printer profileComposite Default screen
Removing a Password from a Role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372Enabling and Disabling Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373Revoking Privileges from a Role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374Dropping a Role . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374Granting UPDATE to Specific Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374Revoking Object Privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374Security by User . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375Granting Access to the Public . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
Granting Limited Resources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377Advanced Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
20 Changing the Oracle Surroundings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
Creating an Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381Enforcing Uniqueness . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381Creating a Bitmap Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382When to Create an Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383Variety in Indexed Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383How Many Indexes to Use on a Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384Placing an Index in the Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384Rebuilding an Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385Function-based Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
Tablespaces and the Structure of the Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386create tablespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387Temporary Tablespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
Rollback Segments and System-Managed Undo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388How the Database Uses Rollback Segments . . . . . . . . . . . . . . . . . . . . . . . . . . 389Using Undo Tablespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
Clusters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
21 Using SQL*Loader to Load Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393The Control File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
Loading Variable-Length Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395Starting the Load . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
Logical and Physical Records . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400Control File Syntax Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401Managing Data Loads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402
Repeating Data Loads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403Tuning Data Loads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404
Direct Path Loading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405Additional Oracle9i Enhancements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
22 Accessing Remote Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409Database Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
How a Database Link Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410Using a Database Link for Remote Queries . . . . . . . . . . . . . . . . . . . . . . . . . . 411Using a Database Link for Synonyms and Views . . . . . . . . . . . . . . . . . . . . . . 412Using a Database Link for Remote Updates . . . . . . . . . . . . . . . . . . . . . . . . . . 413Syntax for Database Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414
xvi Oracle9i: The Complete Reference
ORACLE Series TIGHT / Oracle9i: The Complete Reference / Loney, Koch / 222521-1 / Front MatterBlind Folio FM:xvi
P:\010Comp\Oracle8\521-1\fm.vpFriday, July 19, 2002 11:39:52 AM
Color profile: Generic CMYK printer profileComposite Default screen
Using Synonyms for Location Transparency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417Using the User Pseudo-column in Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418Dynamic Links: Using the SQLPLUS copy Command . . . . . . . . . . . . . . . . . . . . . . . . 420Connecting to a Remote Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
23 Using Materialized Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423Functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424Required System Privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424Required Table Privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425Read-Only vs. Updatable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425create materialized view Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
RowID vs. Primary Key–Based Materialized Views . . . . . . . . . . . . . . . . . . . . . 430Underlying Objects Created . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 430Using Materialized Views to Alter Query Execution Paths . . . . . . . . . . . . . . . . 431
Refreshing Materialized Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432What Kind of Refreshes Can Be Performed? . . . . . . . . . . . . . . . . . . . . . . . . . . 432Automatic Refreshes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435Manual Refreshes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
create materialized view log Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443Required System Privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444Local and Remote Objects Created . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444
Altering Materialized Views and Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 444Dropping Materialized Views and Logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
24 Using Oracle Text for Text Searches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447Adding Text to the Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 448Text Queries and Text Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449
Text Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450Available Text Query Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451Searching for an Exact Match of a Word . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451Searching for an Exact Match of Multiple Words . . . . . . . . . . . . . . . . . . . . . . 452Searching for an Exact Match of a Phrase . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456Searches for Words That Are Near Each Other . . . . . . . . . . . . . . . . . . . . . . . . 456Using Wildcards During Searches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457Searching for Words That Share the Same Stem . . . . . . . . . . . . . . . . . . . . . . . 458Searching for Fuzzy Matches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459Searches for Words That Sound Like Other Words . . . . . . . . . . . . . . . . . . . . . 459Using the ABOUT Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461Index Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
Index Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
25 Using External Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465Accessing the External Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466Creating an External Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
External Table Creation Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470Limitations, Benefits, and Potential Uses of External Tables . . . . . . . . . . . . . . . . . . . . 476
26 Using Flashback Queries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479Time-based Flashback Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480
Contents xvii
ORACLE Series TIGHT / Oracle9i: The Complete Reference / Loney, Koch / 222521-1 / Front MatterBlind Folio FM:xvii
P:\010Comp\Oracle8\521-1\fm.vpFriday, July 19, 2002 11:39:52 AM
Color profile: Generic CMYK printer profileComposite Default screen
Saving the Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482Limitations of Time-Based Flashbacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
SCN-based Flashback Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
PART IIIPL/SQL
27 An Introduction to PL/SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489PL/SQL Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490Declarations Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491Executable Commands Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
Conditional Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497CASE Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505
Exception Handling Section . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
28 Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509Required System Privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510Required Table Privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510Types of Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
Row-Level Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511Statement-Level Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511BEFORE and AFTER Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511INSTEAD OF Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511Schema Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512Database-Level Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512
Trigger Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512Combining DML Trigger Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514Setting Inserted Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516Maintaining Duplicated Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 516Customizing Error Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518Calling Procedures Within Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520Naming Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520Creating DDL Event Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520Creating Database Event Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
Enabling and Disabling Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527Replacing Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528Dropping Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528
29 Procedures, Functions, and Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529Required System Privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
Executing Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530Required Table Privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532Procedures vs. Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532Procedures vs. Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532create procedure Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533create function Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
Referencing Remote Tables in Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . 537Debugging Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538Creating Your Own Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 539
xviii Oracle9i: The Complete Reference
ORACLE Series TIGHT / Oracle9i: The Complete Reference / Loney, Koch / 222521-1 / Front MatterBlind Folio FM:xviii
P:\010Comp\Oracle8\521-1\fm.vpFriday, July 19, 2002 11:39:52 AM
Color profile: Generic CMYK printer profileComposite Default screen
Customizing Error Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540Naming Procedures and Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542
create package Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542Initializing Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
Viewing Source Code for Procedural Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545Compiling Procedures, Functions, and Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546Replacing Procedures, Functions, and Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547Dropping Procedures, Functions, and Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547
PART IVObject-Relational Databases
30 Implementing Types, Object Views, and Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551Revisiting Abstract Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
Security for Abstract Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552Indexing Abstract Datatype Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556
Implementing Object Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 557Manipulating Data via Object Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560Using INSTEAD OF Triggers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 561
Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563Syntax for Creating Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564Managing Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
31 Collectors (Nested Tables and Varying Arrays) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567Varying Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568
Creating a Varying Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 568Describing the Varying Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 569Inserting Records into the Varying Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 570Selecting Data from Varying Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
Nested Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574Inserting Records into a Nested Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575Querying Nested Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576
Management Issues for Nested Tables and Varying Arrays . . . . . . . . . . . . . . . . . . . . . 578Managing Large Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579Variability in Collectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579Location of the Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580
32 Using Large Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581Available Datatypes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582Specifying Storage for LOB Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583Manipulating and Selecting LOB Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
Initializing Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585insert with Subqueries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587Updating LOB Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 588Using String Functions to Manipulate LOB Values . . . . . . . . . . . . . . . . . . . . . 588Using DBMS_LOB to Manipulate LOB Values . . . . . . . . . . . . . . . . . . . . . . . . 589Deleting LOBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605
33 Advanced Object-Oriented Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 607Row Objects vs. Column Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608Object Tables and OIDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 608
Contents xix
ORACLE Series TIGHT / Oracle9i: The Complete Reference / Loney, Koch / 222521-1 / Front MatterBlind Folio FM:xix
P:\010Comp\Oracle8\521-1\fm.vpFriday, July 19, 2002 11:39:52 AM
Color profile: Generic CMYK printer profileComposite Default screen
Inserting Rows into Object Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609Selecting Values from Object Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610Updates and Deletes from Object Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611The REF Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611Using the DEREF Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612The VALUE Function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615Invalid References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616
Object Views with REFs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616A Quick Review of Object Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616Object Views Involving References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
Object PL/SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621Objects in the Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623
PART VJava in Oracle
34 An Introduction to Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627Java vs. PL/SQL: An Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629Executable Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630
Conditional Logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635Exception Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637Reserved Words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638
Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639
35 JDBC and SQLJ Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645Getting Started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646
Additional Steps for NT Users . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646Testing Your Connection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
Using the JDBC Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648Using JDBC for Data Manipulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651
SQLJ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655Additional Setup Steps for SQLJ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655Testing Your SQLJ Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656
Using the SQLJ Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657Using SQLJ for Data Manipulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659
36 Java Stored Procedures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663Loading the Class into the Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665How to Access the Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668
Where to Perform Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669
PART VIHitchhiker’s Guides
37 The Hitchhiker’s Guide to the Oracle9i Data Dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . 673A Note About Nomenclature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674
xx Oracle9i: The Complete Reference
ORACLE Series TIGHT / Oracle9i: The Complete Reference / Loney, Koch / 222521-1 / Front MatterBlind Folio FM:xx
P:\010Comp\Oracle8\521-1\fm.vpFriday, July 19, 2002 11:39:53 AM
Color profile: Generic CMYK printer profileComposite Default screen
The Road Maps: DICTIONARY (DICT) and DICT_COLUMNS . . . . . . . . . . . . . . . . . . 675Things You Select from: Tables (and Columns), Views, Synonyms, and Sequences . . 676
Catalog: USER_CATALOG (CAT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676Objects: USER_OBJECTS (OBJ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677Tables: USER_TABLES (TABS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678Columns: USER_TAB_COLUMNS (COLS) . . . . . . . . . . . . . . . . . . . . . . . . . . . 679Views: USER_VIEWS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681Synonyms: USER_SYNONYMS (SYN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684Sequences: USER_SEQUENCES (SEQ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684
Constraints and Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685Constraints: USER_CONSTRAINTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685Constraint Columns: USER_CONS_COLUMNS . . . . . . . . . . . . . . . . . . . . . . . 687Constraint Exceptions: EXCEPTIONS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688Table Comments: USER_TAB_COMMENTS . . . . . . . . . . . . . . . . . . . . . . . . . . 689Column Comments: USER_COL_COMMENTS . . . . . . . . . . . . . . . . . . . . . . . . 690
Indexes and Clusters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690Indexes: USER_INDEXES (IND) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 690Indexed Columns: USER_IND_COLUMNS . . . . . . . . . . . . . . . . . . . . . . . . . . . 692Clusters: USER_CLUSTERS (CLU) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693Cluster Columns: USER_CLU_COLUMNS . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
Abstract Datatypes, ORDBMS-Related Structures, and LOBs . . . . . . . . . . . . . . . . . . . 694Abstract Datatypes: USER_TYPES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695LOBs: USER_LOBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697
Database Links and Materialized Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698Database Links: USER_DB_LINKS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698Materialized Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698Materialized View Logs: USER_MVIEW_LOGS . . . . . . . . . . . . . . . . . . . . . . . 701
Triggers, Procedures, Functions, and Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701Triggers: USER_TRIGGERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701Procedures, Functions, and Packages: USER_SOURCE . . . . . . . . . . . . . . . . . . 702
Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704Space Allocation and Usage, Including Partitions and Subpartitions . . . . . . . . . . . . . 705
Tablespaces: USER_TABLESPACES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705Space Quotas: USER_TS_QUOTAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 706Segments and Extents: USER_SEGMENTS and USER_EXTENTS . . . . . . . . . . . 707Partitions and Subpartitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 708Free Space: USER_FREE_SPACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711
Users and Privileges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711Users: USER_USERS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711Resource Limits: USER_RESOURCE_LIMITS . . . . . . . . . . . . . . . . . . . . . . . . . . 711Table Privileges: USER_TAB_PRIVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712System Privileges: USER_SYS_PRIVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712
Roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713Auditing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714Miscellaneous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716Monitoring: The V$ Dynamic Performance Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . 716
Contents xxi
ORACLE Series TIGHT / Oracle9i: The Complete Reference / Loney, Koch / 222521-1 / Front MatterBlind Folio FM:xxi
P:\010Comp\Oracle8\521-1\fm.vpFriday, July 19, 2002 11:39:53 AM
Color profile: Generic CMYK printer profileComposite Default screen
CHAINED_ROWS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 716PLAN_TABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717Interdependencies: USER_DEPENDENCIES and IDEPTREE . . . . . . . . . . . . . . . 717DBA-Only Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718Oracle Label Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718SQL*Loader Direct Load Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718National Language Support (NLS) Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719Heterogeneous Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719Indextypes and Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719Outlines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719
38 The Hitchhiker’s Guide to the Oracle Optimizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721Which Optimizer? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722Operations That Access Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723
TABLE ACCESS FULL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723TABLE ACCESS BY ROWID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724Related Hints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725
Operations That Use Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725INDEX UNIQUE SCAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726INDEX RANGE SCAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727When Indexes Are Used . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727Combining Output from Multiple Index Scans . . . . . . . . . . . . . . . . . . . . . . . . 731Related Hints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733Additional Tuning Issues for Indexes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733
Operations That Manipulate Data Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734Ordering Rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734Grouping Rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735Operations Using RowNum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736UNION, MINUS, and INTERSECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737Selecting Rows for Update . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741Selecting from Views . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741Selecting from Subqueries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743Additional Tuning Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744
Operations That Perform Joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744How Oracle Handles Joins of More than Two Tables . . . . . . . . . . . . . . . . . . . 745MERGE JOIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745NESTED LOOPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747HASH JOIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749Processing Outer Joins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750Related Hints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750Additional Tuning Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754
Displaying the Execution Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755Using set autotrace on . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755Using explain plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759
Miscellaneous Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763Filtering Rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763Queries That Use connect by Clauses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763
xxii Oracle9i: The Complete Reference
ORACLE Series TIGHT / Oracle9i: The Complete Reference / Loney, Koch / 222521-1 / Front MatterBlind Folio FM:xxii
P:\010Comp\Oracle8\521-1\fm.vpFriday, July 19, 2002 11:39:53 AM
Color profile: Generic CMYK printer profileComposite Default screen
Queries That Use Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765Queries That Use Database Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765Queries That Use Clusters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766Related Hints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766Additional Tuning Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768
39 The Hitchhiker’s Guide to Oracle9iAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769Communication Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772
Communication Services—Powered by Apache . . . . . . . . . . . . . . . . . . . . . . . 772Communication Services—IIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774
Content Management Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775Oracle Internet File System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775
Ultra Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776Business Logic Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776
Oracle Business Components for Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777Oracle PL/SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777Oracle Forms Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777
Presentation Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777Apache JServ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778OracleJSP (JavaServer Pages) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778Oracle PL/SQL Server Pages (PSP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779Perl Interpreter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779
Business Intelligence Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779Oracle Reports Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779Oracle Discoverer 4i Viewer/Oracle9iAS Discoverer . . . . . . . . . . . . . . . . . . . 780
Portal Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780Oracle Portal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780Portal-to-Go . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7809i Dynamic Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781
Developer’s Toolkits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781Oracle Java Messaging Service (JMS) Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . 781Oracle SQLJ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782Oracle XML Developer’s Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782Oracle LDAP Developer’s Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782
Caching Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783Oracle Database Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783Oracle Web Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784Oracle9iAS Clickstream Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785
System Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786Oracle Enterprise Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786Oracle Advanced Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786
Database Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787iSQL*Plus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787
Starting, Stopping, and Restarting iAS (Apache) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 787
40 The Hitchhiker’s Guide to Database Administration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791Creating a Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792
Using the Oracle Enterprise Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792
Contents xxiii
ORACLE Series TIGHT / Oracle9i: The Complete Reference / Loney, Koch / 222521-1 / Front MatterBlind Folio FM:xxiii
P:\010Comp\Oracle8\521-1\fm.vpFriday, July 19, 2002 11:39:53 AM
Color profile: Generic CMYK printer profileComposite Default screen
Starting and Stopping the Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793Sizing and Managing Memory Areas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794
The Initialization Parameter File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796Allocating and Managing Space for the Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796
Implications of the storage Clause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797Table Segments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 799Index Segments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 800Rollback Segments and System-Managed Undo . . . . . . . . . . . . . . . . . . . . . . . 800Temporary Segments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801Free Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802Sizing Database Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803
Creating and Managing Rollback Segments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807Activating Rollback Segments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807How to Determine the Maximum Size of a Rollback Segment . . . . . . . . . . . . 808Monitoring an Undo Tablespace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809How to Assign Transactions to Specific Rollback Segments . . . . . . . . . . . . . . 809
Performing Backups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 810Export and Import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 810Export . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811Import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817Offline Backups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820Online Backups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822Recovery Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825
Where to Go from Here . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826
41 The Hitchhiker’s Guide to XML in Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827Document Type Definitions, Elements, and Attributes . . . . . . . . . . . . . . . . . . . . . . . . 828XML Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831Using XSU to Select, Insert, Update, and Delete XML values . . . . . . . . . . . . . . . . . . . 834
Insert, Update, and Delete Processing with XSU . . . . . . . . . . . . . . . . . . . . . . . 836XSU and Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 837Customizing the Query Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838
Using XMLType . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839Other Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842
PART VIIAlphabetical Reference
What This Alphabetical Reference Includes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844What This Alphabetical Reference Does Not Include . . . . . . . . . . . . . . . . . . . . . . . . . 844General Format of Entries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 844
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1201
xxiv Oracle9i: The Complete Reference
ORACLE Series TIGHT / Oracle9i: The Complete Reference / Loney, Koch / 222521-1 / Front MatterBlind Folio FM:xxiv
P:\010Comp\Oracle8\521-1\fm.vpFriday, July 19, 2002 11:39:54 AM
Color profile: Generic CMYK printer profileComposite Default screen