To access the contents, click the chapter and section titles.

Oracle8 Black Book
(Publisher: The Coriolis Group)
Author(s): Michael R. Ault
ISBN: 1576101878
Publication Date: 01/01/98

Introduction
Acknowledgments

Chapter 1—Oracle And The Object Paradigm
Object-Oriented Terms
Oracle-Specific Object Terms
Other Object Databases
Goals Of Object-Oriented Programming
Characteristics Of An Object-Oriented System
Benefits Of The Object-Oriented Approach
Oracle8 And The Object-Oriented Paradigm

Practical Guide To Task Completion
Migrating To Oracle8
Developing A Type Hierarchy
Defining Type Methods (Behaviors)
Converting Relational Structures To Objects
Loading Data Using SQLLOADER
Moving Data From Load Tables Into Database Object Structures

Chapter 2—Foundations For Object-Oriented Development
Object-Oriented Systems Analysis
Object-Oriented Modeling Frameworks
Object-Oriented Entity Relational Modeling
Project Methods
Interview Techniques
Analyzing Interview Results

Practical Guide To Object-Oriented Development
Techniques For Interviewing (Requirements Capture)
Developing An OOERD From A List Of Objects/Types And Rules

Chapter 3—Simulating Object Orientation With Oracle Triggers
Oracle Triggers And Simulated Encapsulation And Data Hiding
Triggers And Object-Oriented Behavior

Practical Guide to Creating And Using Triggers
Creating A Basic Trigger
Using Conditional Predicates
Creating A CASCADE UPDATE Trigger
Creating An EITHER-OR Trigger
Calling Procedures From Triggers
Using FUNCTIONs In Triggers
Using The INSTEAD OF Trigger

Chapter 4—The Oracle8 Object/Relational Architecture
User-Defined Types (Composite Objects)
Using UDTs
A Comparison With Java
Example Type/Class Definition In Java And Oracle8
Use Of Classes/Types In Java And Oracle8
Object-Related Extensions To PL/SQL
Inheritance And Polymorphism
Pairing Data With Behavior

Practical Guide To User-Defined Types
Creating A Basic Type
Creating A Forward Type
Creating An Object Type
Creating A Nested Table Type
Creating A VARRAY Type
Populating Types
Using Other Built-In Methods For Collections
Creating A REF Request And REF Passing Method Set
Overloading Procedures
Overloading Functions
Overloading Methods
Creating A MAP Or ORDER Method
Using Types In PL/SQL
Using REF, DEREF, And VALUE
Using The DANGLING Clause
Updating And Deleting Type-Based Objects

Chapter 5—Oracle8 Data Storage Features
Table Storage Options
Relational Tables
Object Tables
Partitioned Tables
Index-Only Tables
Nested Tables
Clustered Tables
Index Storage Options
Partitioned Indexes
Bitmapped Indexes
Unique And Non-Unique Indexes
Clustered Indexes
Reverse Key Indexes
Tablespace Options
Control Files
LOB Storage
LOB Storage Clause

Practical Guide To Oracle Storage Structures
Creating Relational Tables
Creating Object Tables
Creating Partitioned Tables
Splitting A Partition
Adding, Modifying, Renaming, Moving, Dropping, And Truncating Partitions
Using The EXCHANGE PARTITION Clause
Maintaining A Partitioned Table’s Indexes
Creating An Index-Only Table
Creating Nested Tables
Creating Clustered Tables
Creating Partitioned Indexes
Creating Bitmapped Indexes
Creating Unique And Non-Unique Indexes
Creating Reverse Key Indexes
Using The Tablespace AUTOEXTEND Option
Using Temporary And Permanent Tablespace
Creating A Table With LOB Attributes
Using BFILE LOB Datatypes

Chapter 6—Using The New Multimedia Datatypes
Internal LOB Multimedia Datatypes
Differences Between LOB And LONG RAW
BLOB Datatypes
CLOB Datatypes
NCLOB Datatypes
External LOB Datatypes
The DBMS_LOB Package
Routines That Can Modify BLOB, CLOB, And NCLOB Values
Routines That Read Or Examine LOB Values
Read-Only Routines Specific To BFILEs
Datatypes
Defining LOB Storage
The Server Image Cartridge And LOBs

Practical Guide to LOB Usage
Creating BLOB And CLOB Datatypes
Using BLOB And CLOB Datatypes
Manipulating Internal LOB Datatypes
Comparing Two LOBs
Reading, Writing, And Appending LOB Values
Searching LOBs
Erasing LOB Values
Confirming LOB Erasure Using COMPARE
Using The TRIM_LOB Procedure
Using The Server Image Cartridge
Adding An Image Type To A Table
Copying An Image Into An Image Type
Setting An Image’s Properties
Using The PROCESS And PROCESSCOPY Methods On Image Types

Chapter 7—PL/SQL Enhancements
Accessing Types And Collections
Object Types And Methods
Accessing External C Or 3GL Procedures
External Procedure Guidelines
Using OCI Calls In Oracle8
OCI Handles
Using The Advanced Queuing Feature Of Oracle8
Use Of Deferred Constraint Checking

Practical Guide To Use Of Oracle8 Collections And PL/SQL Features
Access Of Types And Collections
Using CONSTRUCTOR Methods
Using The THE Keyword
Using REF Values
Example Of An External Procedure Call
Using The OTT Program
Creating A Deferred Constraint
Using A Deferred Constraint

Chapter 8—The New Parallel And Distributed Features Of Oracle8
Parallel Operations
Parallel DML And DDL Operations
Parallel Query Coordinators And Servers
Determining Degree Of Parallelism
Distributed Facilities Enhancements
Snapshot Enhancements To Oracle8
Advanced Replication Support For LOBs
Advanced Replication Support For Partitioned Tables
Advanced Replication Offline Instantiation

Practical Guide To Oracle8 Parallel Features
Enabling Parallel DML
Creating A Table Using The PARALLEL Clause
Setting Up The Parallel Query Initialization Parameters
Using The Parallel Hints
Creating Snapshot Logs And Snapshots

Chapter 9—The Oracle8 Data Dictionary
The Oracle Instance
Oracle Processes
Oracle Memory Structures
The Concept Of ROWIDs In Oracle7 And Oracle8
Oracle7 ROWID Format
The ROWID Concept In Oracle8
The Concept Of Object Identifiers (OIDs) In Oracle8
The Oracle-Provided DBMS_ROWID Package
The ROWID_CREATE Function
The ROWID_INFO Procedure
The ROWID_TYPE Function
The ROWID_OBJECT Function
The ROWID_RELATIVE_FNO Function
The ROWID_BLOCK_NUMBER Function
The ROWID_ROW_NUMBER Function
The ROWID_TO_ABSOLUTE_FNO Function
The ROWID_TO_EXTENDED Function
The ROWID_TO_RESTRICTED Function
The ROWID_VERIFY Function
Oracle Metadata—The K And X$ Structs
Oracle Metadata—The XXX$ Tables
Oracle Metadata—The GV$ And V$ Views And Tables
Oracle Metadata—The DBA, ALL, And USER Views

Practical Guide To The Oracle Data Dictionary
Monitoring The Oracle Processes On NT
Monitoring The Oracle Processes On Unix
Monitoring The MTS Process
Monitoring Average Wait Time For MTS
Monitoring The SGA And Shared Pool
Using The Data Dictionary To Monitor Database Objects

Chapter 10—Tuning Oracle Applications
The Oracle Tuning Process
Application Tuning
Proper Specification Of System Or Business Rules
Proper Logical Design
Normalization
Denormalization
Proper Physical Design
Sizing
Use Of A Test Database
Key Sizing Parameters
Table Placement
Table Striping
Tuning Application Query Statements
Use Of TKPROF To Tune Statements

Practical Guide To Tuning Application Statements
TKPROF Example Tuning Session
Using The Cost-Based Optimizer
Example Of Proper Index Use
Optimizers And ANALYZE
Other Application Tuning Tips
Using Standalone Explain Plan
Using The UTLSIDXS Utility
Using Hints To Force Behavior

Chapter 11—Database Internals Tuning
The Internal Tuning Process
The INIT<sid>.ORA (Initialization File) Parameters
The Undocumented Initialization Parameters (_*)

Practical Guide To—Internal Tuning
Tools For Tuning Memory Contention
Tools For Tuning I/O Contention
Tuning To Prevent Contention
Tools For Additional Tuning Concerns
New Oracle Tuning Options

Chapter 12—The Oracle-Supplied Scripts And Their Uses
Oracle Utility Scripts
A Quick Overview Of The UTL* Scripts
Some Other Scripts Of Interest

Practical Guide To The Oracle Utility Scripts
Using UTLBSTAT/UTLESTAT
UTLESTAT Library Cache Report
UTLESTAT Session Statistics Report
UTLESTAT Average Dirty Buffer Write Queue Report
UTLESTAT Systemwide Wait Events (Non-Background) Report
UTLESTAT Systemwide Wait Events (Background) Report
UTLESTAT Latch Statistics
UTLESTAT No-Wait Gets Latch Report
UTLESTAT Buffer Busy Waits Report
UTLESTAT Rollback Segment Statistics Report
UTLESTAT Initialization Parameter Report
UTLESTAT Data Dictionary Cache Report
UTLESTAT Tablespace I/O Summary Report
UTLESTAT Disk I/O Spread Report
UTLESTAT Time And Version Reports
Using UTLCONST
Using UTLDTREE
Using UTLLOCKT

Chapter 13—Using Java With Oracle8 SQL And PL/SQL
Java, PL/SQL, And SQL
A Comparison With Java
Java And Oracle8’s Use Of Classes/Types
A Closer Look At Java
Scripts And Applets
Overriding Methods In Java
JSQL, JDBC, And Java

Practical Guide To Using Java With SQL And PL/SQL
Creating A Generic Connection Manager Class
Fetching A BLOB From The Database Using Java
Creating A Simple Application Using Oracle8, BLOBs, And Java
Additional Java Reading
Appendix A
Index