| Introduction | p. 1 |
| Why Read This Book? | p. 2 |
| Who Is This Book for? | p. 2 |
| What's Covered in This Book? | p. 4 |
| What You Need To Use This Book | p. 5 |
| Conventions | p. 5 |
| Customer Support | p. 7 |
| Getting To Know Oracle | p. 11 |
| Oracle Fundamental Terms | p. 11 |
| Using Oracle | p. 14 |
| A Family of Databases | p. 19 |
| Summary | p. 21 |
| SQL*Plus and Basic Querying | p. 23 |
| Introduction To SQL*Plus | p. 24 |
| Quick and simple, Querying the Database | p. 31 |
| What Is SQL? | p. 42 |
| What's in a Table? | p. 44 |
| Data Manipulation Language | p. 46 |
| Other DML Statements | p. 70 |
| COMMIT and ROLLBACK | p. 75 |
| Rollback | p. 78 |
| Summary | p. 79 |
| Creating and Managing Users and Tables | p. 81 |
| Data Definition Language | p. 81 |
| Tablespaces | p. 83 |
| Users | p. 84 |
| Oracle Data Types | p. 90 |
| Creating Tables | p. 106 |
| The Data Dictionary | p. 118 |
| Summary | p. 123 |
| The New 9i Sample Schemas | p. 125 |
| The SCOTT Schema | p. 125 |
| The Oracle 9i Sample Schemas | p. 126 |
| Summary | p. 150 |
| Architecture | p. 153 |
| Why Learn the Architecture? | p. 154 |
| Making Connections | p. 154 |
| Server Processes | p. 159 |
| Files | p. 161 |
| Memory Areas | p. 172 |
| Background Processes | p. 176 |
| Overview of the Architecture | p. 182 |
| Summary | p. 183 |
| Processing Statements in Oracle | p. 189 |
| Classes of SQL Statements | p. 189 |
| How Statements Are Executed | p. 190 |
| A Query from Start To Finish | p. 202 |
| DML from Start To Finish | p. 203 |
| DDL Processing | p. 207 |
| Summary | p. 208 |
| Tables | p. 211 |
| An Introduction To Tables in Oracle | p. 211 |
| Types of Tables | p. 212 |
| Table Properties | p. 231 |
| Alter Table | p. 237 |
| Drop Table | p. 246 |
| Truncate Table | p. 249 |
| Summary | p. 250 |
| Indexes | p. 253 |
| Indexes At Work | p. 253 |
| Indexes in Oracle | p. 254 |
| When Is an Index Useful? | p. 258 |
| The Cost of Indexes | p. 261 |
| Concatenation | p. 275 |
| Indexes and Constraints | p. 287 |
| Reverse Key Indexes | p. 291 |
| Function-based Indexes | p. 294 |
| Bitmap Indexes | p. 300 |
| Bitmap Join Indexes | p. 304 |
| Summary | p. 306 |
| Mastering SQL*Plus | p. 309 |
| Advanced Startup Options | p. 310 |
| Using SQL*Plus Day-to-Day | p. 319 |
| SQL*Plus Commands: A Primer | p. 319 |
| Built-In SQL*Plus HELP | p. 332 |
| Working with the SQL*Plus Buffer | p. 336 |
| Scripts | p. 339 |
| Summary | p. 342 |
| PL/SQL | p. 345 |
| An Overview | p. 345 |
| Block-Based Development | p. 346 |
| Declarations | p. 349 |
| PL/SQL Data Types | p. 356 |
| PL/SQL Collections | p. 358 |
| Cursors | p. 372 |
| Control Statements | p. 385 |
| Error Handling | p. 394 |
| Summary | p. 408 |
| Procedures, Functions, and Packages | p. 411 |
| Advantages and Benefits | p. 411 |
| Procedures | p. 412 |
| Functions | p. 436 |
| Packages | p. 442 |
| Data Dictionary | p. 459 |
| Wrap Utility | p. 461 |
| Summary | p. 463 |
| Transactions and Concurrency | p. 465 |
| What Is a Transaction? | p. 465 |
| Transaction Control Statements | p. 466 |
| ACID Properties of Transactions | p. 475 |
| Concurrency Control | p. 484 |
| Summary | p. 496 |
| Security | p. 499 |
| Overview of Database Security | p. 500 |
| Fine-Grained Access Control | p. 525 |
| Data Security | p. 535 |
| Summary | p. 540 |
| Views | p. 543 |
| Relational Views | p. 544 |
| Inline Views | p. 562 |
| Object Views | p. 565 |
| Materialized Views | p. 568 |
| Summary | p. 577 |
| Triggers | p. 579 |
| Getting Started | p. 580 |
| Types of Triggers | p. 583 |
| Enabling and Disabling Triggers | p. 607 |
| Transactions and Triggers | p. 609 |
| Getting Trigger Information from the Data Dictionary | p. 610 |
| Event Attribute Functions | p. 611 |
| Summary | p. 616 |
| Objects | p. 619 |
| Object-Oriented Concepts | p. 620 |
| What Is an Object Type? | p. 621 |
| Using Object Types | p. 622 |
| Object Tables | p. 653 |
| Summary | p. 659 |
| Advanced Querying | p. 661 |
| Herarchical Queries | p. 661 |
| User-Defined Aggregate Functions | p. 672 |
| Table and Pipelined Functions | p. 677 |
| Using Queries To Write SQL with SQL | p. 684 |
| Analytic Functions | p. 686 |
| Merge | p. 698 |
| Summary | p. 704 |
| Tuning Tools | p. 707 |
| An Approach To Tuning | p. 708 |
| Benchmarking | p. 709 |
| Bind Variables | p. 710 |
| Explain Plan | p. 716 |
| Autotrace | p. 718 |
| Trace Files and Timed_Statistics | p. 725 |
| Summary | p. 739 |
| A SQL Toolkit | p. 741 |
| Scripts | p. 743 |
| Summary | p. 784 |
| Debugging PL/SQL | p. 787 |
| History | p. 787 |
| Requirements | p. 788 |
| Database Design and Setup | p. 789 |
| Package Layout | p. 791 |
| Implementation | p. 793 |
| Using Debug | p. 817 |
| Troubleshooting Debug | p. 817 |
| Debug In-Production Code | p. 818 |
| Summary | p. 821 |
| Finding People | p. 823 |
| History | p. 823 |
| The Application | p. 826 |
| User Interface | p. 846 |
| Summary | p. 853 |
| SQL Function Reference | p. 855 |
| Dual | p. 855 |
| Number Functions | p. 856 |
| Datetime Functions | p. 861 |
| Character Functions | p. 870 |
| Conversion Functions | p. 878 |
| Aggregation Functions | p. 888 |
| Miscellaneous Functions | p. 890 |
| Supplied Packages | p. 901 |
| Data Dictionary | p. 971 |
| DBA_Tables | p. 978 |
| DBA_Jobs | p. 995 |
| DBA_Types | p. 996 |
| DBA_Lobs | p. 1001 |
| DBA_Views | p. 1003 |
| DBA_Source | p. 1008 |
| DBA_Indexes | p. 1013 |
| DBA_Roles | p. 1017 |
| DBA_Directories | p. 1020 |
| Short Names | p. 1023 |
| Installing Sample Schemas | p. 1025 |
| Installing the SCOTT Schema | p. 1025 |
| Installing the Oracle 9/Schemas | p. 1026 |
| Installation Wrap Up | p. 1038 |
| Options and Features | p. 1041 |
| V$ Option | p. 1057 |
| Index | p. 1059 |
| Table of Contents provided by Ingram. All Rights Reserved. |