Table of Contents
- List of Tables
- Title and Copyright Information
- Preface
- Changes in Oracle Database Release
-
Part I Database Development Fundamentals
- 1 Design Basics
- 2 Connection Strategies for Database Applications
-
3
Performance and Scalability
- Performance Strategies
- Tools for Performance
- Monitoring Database Performance
- Testing for Performance
-
Using Client Result Cache
- About Client Result Cache
- Benefits of Client Result Cache
- Guidelines for Using Client Result Cache
- Client Result Cache Consistency
- Deployment-Time Settings for Client Result Cache
- Client Result Cache Statistics
- Validation of Client Result Cache
- Client Result Cache and Server Result Cache
- Client Result Cache Demo Files
- Client Result Cache Compatibility with Previous Releases
- Statement Caching
- OCI Client Statement Cache Auto-Tuning
- Client-Side Deployment Parameters
- Using Query Change Notification
-
Using Database Resident Connection Pool
- About Database Resident Connection Pool
- Configuring DRCP
- Sharing Proxy Sessions
- Using JDBC with DRCP
- Using OCI Session Pool APIs with DRCP
- Session Purity and Connection Class
- Starting Database Resident Connection Pool
- Enabling DRCP
- Benefiting from the Scalability of DRCP in an OCI Application
- Benefiting from the Scalability of DRCP in a Java Application
- Best Practices for Using DRCP
- Compatibility and Migration
- DRCP Restrictions
- Using DRCP with Custom Pools
- Explicitly Marking Sessions Stateful or Stateless
- Using DRCP with Oracle Real Application Clusters
- Using DRCP with Pluggable Databases
- DRCP with Data Guard
- Memoptimize Pool
- Oracle RAC Sharding
- 4 Designing Applications for Oracle Real-World Performance
- 5 Security
- 6 High Availability
- 7 Advanced PL/SQL Features
-
Part II SQL for Application Developers
-
8
SQL Processing for Application Developers
- Description of SQL Statement Processing
- Grouping Operations into Transactions
- Ensuring Repeatable Reads with Read-Only Transactions
- Locking Tables Explicitly
- Using Oracle Lock Management Services (User Locks)
- Using Serializable Transactions for Concurrency Control
- Nonblocking and Blocking DDL Statements
- Autonomous Transactions
- Resuming Execution After Storage Allocation Errors
-
9
Using SQL Data Types in Database Applications
- Using the Correct and Most Specific Data Type
- Representing Character Data
-
Representing Numeric Data
- Floating-Point Number Components
- Floating-Point Number Formats
- Representing Special Values with Native Floating-Point Data Types
- Comparing Native Floating-Point Values
- Arithmetic Operations with Native Floating-Point Data Types
- Conversion Functions for Native Floating-Point Data Types
- Client Interfaces for Native Floating-Point Data Types
- Representing Date and Time Data
- Representing Specialized Data
- Identifying Rows by Address
- Displaying Metadata for SQL Operators and Functions
- 10 Using Regular Expressions in Database Applications
-
11
Using Indexes in Database Applications
- Guidelines for Managing Indexes
- Managing Indexes
- When to Use Domain Indexes
-
When to Use Function-Based Indexes
- Advantages of Function-Based Indexes
- Disadvantages of Function-Based Indexes
- Example: Function-Based Index for Precomputing Arithmetic Expression
- Example: Function-Based Indexes on Object Column
- Example: Function-Based Index for Faster Case-Insensitive Searches
- Example: Function-Based Index for Language-Dependent Sorting
-
12
Maintaining Data Integrity in Database Applications
- Enforcing Business Rules with Constraints
- Enforcing Business Rules with Both Constraints and Application Code
- Creating Indexes for Use with Constraints
- When to Use NOT NULL Constraints
- When to Use Default Column Values
- Choosing a Primary Key for a Table (PRIMARY KEY Constraint)
- When to Use UNIQUE Constraints
- Enforcing Referential Integrity with FOREIGN KEY Constraints
- Minimizing Space and Time Overhead for Indexes Associated with Constraints
- Guidelines for Indexing Foreign Keys
- Referential Integrity in a Distributed Database
- When to Use CHECK Constraints
- Examples of Defining Constraints
- Enabling and Disabling Constraints
- Modifying Constraints
- Renaming Constraints
- Dropping Constraints
- Managing FOREIGN KEY Constraints
- Viewing Information About Constraints
-
8
SQL Processing for Application Developers
-
Part III PL/SQL for Application Developers
-
13
Coding PL/SQL Subprograms and Packages
- Overview of PL/SQL Subprograms
- Overview of PL/SQL Packages
- Overview of PL/SQL Units
- Creating PL/SQL Subprograms and Packages
- Altering PL/SQL Subprograms and Packages
- Deprecating Packages, Subprograms, and Types
- Dropping PL/SQL Subprograms and Packages
- Compiling PL/SQL Units for Native Execution
- Invoking Stored PL/SQL Subprograms
- Invoking Stored PL/SQL Functions from SQL Statements
- Analyzing and Debugging Stored Subprograms
- Package Invalidations and Session State
- Example: Raising an ORA-04068 Error
- Example: Trapping ORA-04068
-
14
Using PL/Scope
- Overview of PL/Scope
- Privileges Required for Using PL/Scope
- Specifying Identifier and Statement Collection
- How Much Space is PL/Scope Data Using?
- Viewing PL/Scope Data
- Overview of Data Dictionary Views Useful to Manage PL/SQL Code
- Sample PL/Scope Session
- 15 Using the PL/SQL Hierarchical Profiler
- 16 Using PL/SQL Basic Block Coverage to Maintain Quality
-
17
Developing PL/SQL Web Applications
- Overview of PL/SQL Web Applications
- Implementing PL/SQL Web Applications
- Using mod_plsql Gateway to Map Client Requests to a PL/SQL Web Application
-
Using Embedded PL/SQL Gateway
- How Embedded PL/SQL Gateway Processes Client Requests
- Installing Embedded PL/SQL Gateway
-
Configuring Embedded PL/SQL Gateway
- Configuring Embedded PL/SQL Gateway: Overview
-
Configuring User Authentication for Embedded PL/SQL Gateway
- Configuring Static Authentication with DBMS_EPG
- Configuring Dynamic Authentication with DBMS_EPG
- Configuring Anonymous Authentication with DBMS_EPG
- Determining the Authentication Mode of a DAD
- Examples: Creating and Configuring DADs
- Example: Determining the Authentication Mode for a DAD
- Example: Determining the Authentication Mode for All DADs
- Example: Showing DAD Authorizations that Are Not in Effect
- Examining Embedded PL/SQL Gateway Configuration
- Invoking PL/SQL Stored Subprograms Through Embedded PL/SQL Gateway
- Securing Application Access with Embedded PL/SQL Gateway
- Restrictions in Embedded PL/SQL Gateway
- Using Embedded PL/SQL Gateway: Scenario
- Generating HTML Output with PL/SQL
-
Passing Parameters to PL/SQL Web Applications
- Passing List and Dropdown-List Parameters from an HTML Form
- Passing Option and Check Box Parameters from an HTML Form
- Passing Entry-Field Parameters from an HTML Form
- Passing Hidden Parameters from an HTML Form
- Uploading a File from an HTML Form
- Submitting a Completed HTML Form
- Handling Missing Input from an HTML Form
- Maintaining State Information Between Web Pages
- Performing Network Operations in PL/SQL Subprograms
-
18
Using Continuous Query Notification (CQN)
- About Object Change Notification (OCN)
- About Query Result Change Notification (QRCN)
- Events that Generate Notifications
- Notification Contents
- Good Candidates for CQN
- Creating CQN Registrations
-
Using PL/SQL to Create CQN Registrations
- PL/SQL CQN Registration Interface
- CQN Registration Options
- Prerequisites for Creating CQN Registrations
- Queries that Can Be Registered for Object Change Notification (OCN)
- Queries that Can Be Registered for Query Result Change Notification (QRCN)
- Using PL/SQL to Register Queries for CQN
- Best Practices for CQN Registrations
- Troubleshooting CQN Registrations
- Deleting Registrations
- Configuring CQN: Scenario
-
Using OCI to Create CQN Registrations
- Using OCI for Query Result Set Notifications
- Using OCI to Register a Continuous Query Notification
- Using OCI Subscription Handle Attributes for Continuous Query Notification
- OCI_ATTR_CQ_QUERYID Attribute
- Using OCI Continuous Query Notification Descriptors
- Demonstrating Continuous Query Notification in an OCI Sample Program
- Querying CQN Registrations
- Interpreting Notifications
-
13
Coding PL/SQL Subprograms and Packages
-
Part IV Advanced Topics for Application Developers
-
19
Using Oracle Flashback Technology
- Overview of Oracle Flashback Technology
- Configuring Your Database for Oracle Flashback Technology
- Using Oracle Flashback Query (SELECT AS OF)
- Using Oracle Flashback Version Query
- Using Oracle Flashback Transaction Query
- Using Oracle Flashback Transaction Query with Oracle Flashback Version Query
- Using DBMS_FLASHBACK Package
- Using Flashback Transaction
-
Using Flashback Data Archive
- Creating a Flashback Data Archive
- Altering a Flashback Data Archive
- Dropping a Flashback Data Archive
- Specifying the Default Flashback Data Archive
- Enabling and Disabling Flashback Data Archive
- DDL Statements on Tables Enabled for Flashback Data Archive
- Viewing Flashback Data Archive Data
- Flashback Data Archive Scenarios
- General Guidelines for Oracle Flashback Technology
- Performance Guidelines for Oracle Flashback Technology
- Multitenant Container Database Restrictions for Oracle Flashback Technology
-
20
Choosing a Programming Environment
- Overview of Application Architecture
- Overview of the Program Interface
- Overview of PL/SQL
- Overview of Oracle Database Java Support
- Choosing PL/SQL or Java
- Overview of Precompilers
- Overview of OCI and OCCI
- Comparison of Precompilers and OCI
- Overview of Oracle Data Provider for .NET (ODP.NET)
- Overview of OraOLEDB
-
21
Developing Applications with Multiple Programming Languages
- Overview of Multilanguage Programs
- What Is an External Procedure?
- Overview of Call Specification for External Procedures
- Loading External Procedures
- Publishing External Procedures
- Publishing Java Class Methods
- Publishing External C Procedures
-
Locations of Call Specifications
- Example: Locating a Call Specification in a PL/SQL Package
- Example: Locating a Call Specification in a PL/SQL Package Body
- Example: Locating a Call Specification in an ADT Specification
- Example: Locating a Call Specification in an ADT Body
- Example: Java with AUTHID
- Example: C with Optional AUTHID
- Example: Mixing Call Specifications in a Package
- Passing Parameters to External C Procedures with Call Specifications
- Running External Procedures with CALL Statements
- Handling Errors and Exceptions in Multilanguage Programs
- Using Service Routines with External C Procedures
- Doing Callbacks with External C Procedures
-
22
Developing Applications with Oracle XA
- X/Open Distributed Transaction Processing (DTP)
- Oracle XA Library Subprograms
-
Developing and Installing XA Applications
- DBA or System Administrator Responsibilities
- Application Developer Responsibilities
- Defining the xa_open String
- Using Oracle XA with Precompilers
- Using Oracle XA with OCI
- Managing Transaction Control with Oracle XA
- Examples of Precompiler Applications
- Migrating Precompiler or OCI Applications to TPM Applications
- Managing Oracle XA Library Thread Safety
- Using the DBMS_XA Package
- Troubleshooting XA Applications
- Oracle XA Issues and Restrictions
- 23 Developing Applications with the Publish-Subscribe Model
-
24
Using the Oracle ODBC Driver
- About Oracle ODBC Driver
- For All Users
- For Advanced Users
-
For Programmers
- Format of the Connection String
- SQLDriverConnect Implementation
- Reducing Lock Timeout in a Program
- Linking with odbc32.lib (Windows) or libodbc.so (UNIX)
- Information About rowids
- Rowids in a WHERE Clause
- Enabling Result Sets
- Enabling EXEC Syntax
- Enabling Event Notification for Connection Failures in an Oracle RAC Environment
- Using Implicit Results Feature Through ODBC
- About Supporting Oracle TIMESTAMP WITH TIME ZONE and TIMESTAMP WITH LOCAL TIME ZONE Column Type in ODBC
- About the Effect of Setting ORA_SDTZ in Oracle Clients (OCI, SQL*Plus, Oracle ODBC Driver, and Others)
- Supported Functionality
- Unicode Support
- Performance and Tuning
-
25
Using the Identity Code Package
- Identity Concepts
- What Is the Identity Code Package?
-
Using the Identity Code Package
-
Storing RFID Tags in Oracle Database Using MGD_ID ADT
- Creating a Table with MGD_ID Column Type and Storing EPC Tag Encodings in the Column
-
Constructing MGD_ID Objects to Represent RFID Tags
- Constructing an MGD_ID Object (SGTIN-64) Passing in the Category ID and a List of Components
- Constructing an MGD_ID object (SGTIN-64) and Passing in the Category ID, the Tag Identifier, and the List of Additional Required Parameters
- Constructing an MGD_ID object (SGTIN-64) and Passing in the Category Name, Category Version (if null, then the latest version is used), and a List of Components
- Constructing an MGD_ID object (SGTIN-64) and Passing in the Category Name and Category Version, the Tag Identifier, and the List of Additional Required Parameters
- Inserting an MGD_ID Object into a Database Table
- Querying MGD_ID Column Type
- Building a Function-Based Index Using the Member Functions of the MGD_ID Column Type
- Using MGD_ID ADT Functions
- Defining a Category of Identity Codes and Adding Encoding Schemes to an Existing Category
-
Storing RFID Tags in Oracle Database Using MGD_ID ADT
- Identity Code Package Types
- DBMS_MGD_ID_UTL Package
- Identity Code Metadata Tables and Views
-
Electronic Product Code (EPC) Concepts
- RFID Technology and EPC v1.1 Coding Schemes
-
Product Code Concepts and Their Current Use
- Electronic Product Code (EPC)
- Global Trade Identification Number (GTIN) and Serializable Global Trade Identification Number (SGTIN)
- Serial Shipping Container Code (SSCC)
- Global Location Number (GLN) and Serializable Global Location Number (SGLN)
- Global Returnable Asset Identifier (GRAI)
- Global Individual Asset Identifier (GIAI)
- RFID EPC Network
- Oracle Database Tag Data Translation Schema
-
26
Understanding Schema Object Dependency
- Overview of Schema Object Dependency
- Querying Object Dependencies
- Object Status
- Invalidation of Dependent Objects
- Guidelines for Reducing Invalidation
- Object Revalidation
- Name Resolution in Schema Scope
- Local Dependency Management
- Remote Dependency Management
- Remote Procedure Call (RPC) Dependency Management
- Shared SQL Dependency Management
-
27
Using Edition-Based Redefinition
- Overview of Edition-Based Redefinition
-
Editions
- Editioned and Noneditioned Objects
- Creating an Edition
- Editioned Objects and Copy-on-Change
- Making an Edition Available to Some Users
- Making an Edition Available to All Users
- Current Edition and Session Edition
- Retiring an Edition
- Dropping an Edition
- Editioning Views
- Crossedition Triggers
- Displaying Information About EBR Features
-
Using EBR to Upgrade an Application
- Preparing Your Application to Use Editioning Views
- Procedure for EBR Using Only Editions
- Procedure for EBR Using Editioning Views
- Procedure for EBR Using Crossedition Triggers
- Rolling Back the Application Upgrade
- Reclaiming Space Occupied by Unused Table Columns
- Example: Using EBR to Upgrade an Application
- 28 Using Transaction Guard
-
19
Using Oracle Flashback Technology
- Index