16
Contents ACKNOWLEDGMENTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxv PREFACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvii INTRODUCTION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxi PART I Critical Database Concepts 1 Sharing Knowledge and Success . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 The Cooperative Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Everyone Has “Data” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 The Familiar Language of Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Tables of Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Structured Query Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 A Simple Oracle Query . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Why It Is Called “Relational” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 Some Common, Everyday Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2 The Dangers in a Relational Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Is It Really as Easy as They Say? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 What Are the Risks? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 The Importance of the New Vision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Changing Environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Codes, Abbreviations, and Naming Standards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Why Are Codes Used Instead of English? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 The Benefit of User Feedback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 How to Reduce the Confusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Normalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 English Names for Tables and Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 English Words for the Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Capitalization in Names and Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Normalizing Names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Good Design Has a Human Touch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Understanding the Application Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Outline of Tasks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 ix

Contents - books.mhprofessional.combooks.mhprofessional.com/downloads/products/0072225211/00722252… · ORACLE Series TIGHT / Oracle9i: ... Related set Commands ... Rollback Segments

  • Upload
    buithu

  • View
    223

  • Download
    0

Embed Size (px)

Citation preview

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