Table of Contents
- List of Tables
- Title and Copyright Information
- Preface
- Changes in Oracle Database Release 19c
-
Part I Database Development Fundamentals
- 1 Design Basics
- 2 Connection Strategies for Database Applications
-
3
Performance and Scalability
- 3.1 Performance Strategies
- 3.2 Tools for Performance
- 3.3 Monitoring Database Performance
- 3.4 Testing for Performance
-
3.5
Using Client Result Cache
- 3.5.1 About Client Result Cache
- 3.5.2 Benefits of Client Result Cache
- 3.5.3 Guidelines for Using Client Result Cache
- 3.5.4 Client Result Cache Consistency
- 3.5.5 Deployment-Time Settings for Client Result Cache
- 3.5.6 Client Result Cache Statistics
- 3.5.7 Validation of Client Result Cache
- 3.5.8 Client Result Cache and Server Result Cache
- 3.5.9 Client Result Cache Demo Files
- 3.5.10 Client Result Cache Compatibility with Previous Releases
- 3.6 Statement Caching
- 3.7 OCI Client Statement Cache Auto-Tuning
- 3.8 Client-Side Deployment Parameters
- 3.9 Using Query Change Notification
-
3.10
Using Database Resident Connection Pool
- 3.10.1 About Database Resident Connection Pool
- 3.10.2 Configuring DRCP
- 3.10.3 Sharing Proxy Sessions
- 3.10.4 Using JDBC with DRCP
- 3.10.5 Using OCI Session Pool APIs with DRCP
- 3.10.6 Session Purity and Connection Class
- 3.10.7 Starting Database Resident Connection Pool
- 3.10.8 Enabling DRCP
- 3.10.9 Benefiting from the Scalability of DRCP in an OCI Application
- 3.10.10 Benefiting from the Scalability of DRCP in a Java Application
- 3.10.11 Best Practices for Using DRCP
- 3.10.12 Compatibility and Migration
- 3.10.13 Using DRCP with Oracle Database Native Network Encryption
- 3.10.14 DRCP Restrictions
- 3.10.15 Using DRCP with Custom Pools
- 3.10.16 Explicitly Marking Sessions Stateful or Stateless
- 3.10.17 Using DRCP with Oracle Real Application Clusters
- 3.10.18 Using DRCP with Pluggable Databases
- 3.10.19 DRCP with Data Guard
- 3.11 Memoptimize Pool
- 3.12 Oracle RAC Sharding
- 4 Designing Applications for Oracle Real-World Performance
-
5
Security
- 5.1 Enabling User Access with Grants, Roles, and Least Privilege
- 5.2 Automating Database Logins
- 5.3 Controlling User Access with Fine-Grained Access Control
- 5.4 Using Invoker's and Definer's Rights for Procedures and Functions
- 5.5 Managing External Procedures for Your Applications
- 5.6 Auditing User Activity
- 6 High Availability
- 7 Advanced PL/SQL Features
-
Part II SQL for Application Developers
-
8
SQL Processing for Application Developers
- 8.1 Description of SQL Statement Processing
- 8.2 Grouping Operations into Transactions
- 8.3 Ensuring Repeatable Reads with Read-Only Transactions
- 8.4 Locking Tables Explicitly
- 8.5 Using Oracle Lock Management Services (User Locks)
- 8.6 Using Serializable Transactions for Concurrency Control
- 8.7 Nonblocking and Blocking DDL Statements
- 8.8 Autonomous Transactions
- 8.9 Resuming Execution After Storage Allocation Errors
-
9
Using SQL Data Types in Database Applications
- 9.1 Using the Correct and Most Specific Data Type
- 9.2 Representing Character Data
-
9.3
Representing Numeric Data
- 9.3.1 Floating-Point Number Components
- 9.3.2 Floating-Point Number Formats
- 9.3.3 Representing Special Values with Native Floating-Point Data Types
- 9.3.4 Comparing Native Floating-Point Values
- 9.3.5 Arithmetic Operations with Native Floating-Point Data Types
- 9.3.6 Conversion Functions for Native Floating-Point Data Types
- 9.3.7 Client Interfaces for Native Floating-Point Data Types
- 9.4 Representing Date and Time Data
- 9.5 Representing Specialized Data
- 9.6 Identifying Rows by Address
- 9.7 Displaying Metadata for SQL Operators and Functions
- 10 Using Regular Expressions in Database Applications
-
11
Using Indexes in Database Applications
- 11.1 Guidelines for Managing Indexes
- 11.2 Managing Indexes
- 11.3 When to Use Domain Indexes
-
11.4
When to Use Function-Based Indexes
- 11.4.1 Advantages of Function-Based Indexes
- 11.4.2 Disadvantages of Function-Based Indexes
- 11.4.3 Example: Function-Based Index for Precomputing Arithmetic Expression
- 11.4.4 Example: Function-Based Indexes on Object Column
- 11.4.5 Example: Function-Based Index for Faster Case-Insensitive Searches
- 11.4.6 Example: Function-Based Index for Language-Dependent Sorting
-
12
Maintaining Data Integrity in Database Applications
- 12.1 Enforcing Business Rules with Constraints
- 12.2 Enforcing Business Rules with Both Constraints and Application Code
- 12.3 Creating Indexes for Use with Constraints
- 12.4 When to Use NOT NULL Constraints
- 12.5 When to Use Default Column Values
- 12.6 Choosing a Primary Key for a Table (PRIMARY KEY Constraint)
- 12.7 When to Use UNIQUE Constraints
- 12.8 Enforcing Referential Integrity with FOREIGN KEY Constraints
- 12.9 Minimizing Space and Time Overhead for Indexes Associated with Constraints
- 12.10 Guidelines for Indexing Foreign Keys
- 12.11 Referential Integrity in a Distributed Database
- 12.12 When to Use CHECK Constraints
- 12.13 Examples of Defining Constraints
- 12.14 Enabling and Disabling Constraints
- 12.15 Modifying Constraints
- 12.16 Renaming Constraints
- 12.17 Dropping Constraints
- 12.18 Managing FOREIGN KEY Constraints
- 12.19 Viewing Information About Constraints
-
8
SQL Processing for Application Developers
-
Part III PL/SQL for Application Developers
-
13
Coding PL/SQL Subprograms and Packages
- 13.1 Overview of PL/SQL Subprograms
- 13.2 Overview of PL/SQL Packages
- 13.3 Overview of PL/SQL Units
-
13.4
Creating PL/SQL Subprograms and Packages
- 13.4.1 Privileges Needed to Create Subprograms and Packages
- 13.4.2 Creating Subprograms and Packages
- 13.4.3 PL/SQL Object Size Limits
- 13.4.4 PL/SQL Data Types
- 13.4.5 Returning Result Sets to Clients
- 13.4.6 Returning Large Amounts of Data from a Function
- 13.4.7 PL/SQL Function Result Cache
- 13.4.8 Overview of Bulk Binding
- 13.4.9 PL/SQL Dynamic SQL
- 13.5 Altering PL/SQL Subprograms and Packages
- 13.6 Deprecating Packages, Subprograms, and Types
- 13.7 Dropping PL/SQL Subprograms and Packages
- 13.8 Compiling PL/SQL Units for Native Execution
- 13.9 Invoking Stored PL/SQL Subprograms
-
13.10
Invoking Stored PL/SQL Functions from SQL Statements
- 13.10.1 Why Invoke PL/SQL Functions from SQL Statements?
- 13.10.2 Where PL/SQL Functions Can Appear in SQL Statements
- 13.10.3 When PL/SQL Functions Can Appear in SQL Expressions
- 13.10.4 Controlling Side Effects of PL/SQL Functions Invoked from SQL Statements
- 13.11 Analyzing and Debugging Stored Subprograms
- 13.12 Package Invalidations and Session State
- 13.13 Example: Raising an ORA-04068 Error
- 13.14 Example: Trapping ORA-04068
-
14
Using PL/Scope
- 14.1 Overview of PL/Scope
- 14.2 Privileges Required for Using PL/Scope
- 14.3 Specifying Identifier and Statement Collection
- 14.4 How Much Space is PL/Scope Data Using?
- 14.5 Viewing PL/Scope Data
- 14.6 Overview of Data Dictionary Views Useful to Manage PL/SQL Code
- 14.7 Sample PL/Scope Session
-
15
Using the PL/SQL Hierarchical Profiler
- 15.1 Overview of PL/SQL Hierarchical Profiler
- 15.2 Collecting Profile Data
- 15.3 Understanding Raw Profiler Output
- 15.4 Analyzing Profile Data
- 15.5 plshprof Utility
- 16 Using PL/SQL Basic Block Coverage to Maintain Quality
-
17
Developing PL/SQL Web Applications
- 17.1 Overview of PL/SQL Web Applications
- 17.2 Implementing PL/SQL Web Applications
- 17.3 Using mod_plsql Gateway to Map Client Requests to a PL/SQL Web Application
-
17.4
Using Embedded PL/SQL Gateway
- 17.4.1 How Embedded PL/SQL Gateway Processes Client Requests
- 17.4.2 Installing Embedded PL/SQL Gateway
-
17.4.3
Configuring Embedded PL/SQL Gateway
- 17.4.3.1 Configuring Embedded PL/SQL Gateway: Overview
-
17.4.3.2
Configuring User Authentication for Embedded PL/SQL Gateway
- 17.4.3.2.1 Configuring Static Authentication with DBMS_EPG
- 17.4.3.2.2 Configuring Dynamic Authentication with DBMS_EPG
- 17.4.3.2.3 Configuring Anonymous Authentication with DBMS_EPG
- 17.4.3.2.4 Determining the Authentication Mode of a DAD
- 17.4.3.2.5 Examples: Creating and Configuring DADs
- 17.4.3.2.6 Example: Determining the Authentication Mode for a DAD
- 17.4.3.2.7 Example: Determining the Authentication Mode for All DADs
- 17.4.3.2.8 Example: Showing DAD Authorizations that Are Not in Effect
- 17.4.3.2.9 Examining Embedded PL/SQL Gateway Configuration
- 17.4.4 Invoking PL/SQL Stored Subprograms Through Embedded PL/SQL Gateway
- 17.4.5 Securing Application Access with Embedded PL/SQL Gateway
- 17.4.6 Restrictions in Embedded PL/SQL Gateway
- 17.4.7 Using Embedded PL/SQL Gateway: Scenario
- 17.5 Generating HTML Output with PL/SQL
-
17.6
Passing Parameters to PL/SQL Web Applications
- 17.6.1 Passing List and Dropdown-List Parameters from an HTML Form
- 17.6.2 Passing Option and Check Box Parameters from an HTML Form
- 17.6.3 Passing Entry-Field Parameters from an HTML Form
- 17.6.4 Passing Hidden Parameters from an HTML Form
- 17.6.5 Uploading a File from an HTML Form
- 17.6.6 Submitting a Completed HTML Form
- 17.6.7 Handling Missing Input from an HTML Form
- 17.6.8 Maintaining State Information Between Web Pages
- 17.7 Performing Network Operations in PL/SQL Subprograms
-
18
Using Continuous Query Notification (CQN)
- 18.1 About Object Change Notification (OCN)
- 18.2 About Query Result Change Notification (QRCN)
- 18.3 Events that Generate Notifications
- 18.4 Notification Contents
- 18.5 Good Candidates for CQN
- 18.6 Creating CQN Registrations
-
18.7
Using PL/SQL to Create CQN Registrations
- 18.7.1 PL/SQL CQN Registration Interface
-
18.7.2
CQN Registration Options
- 18.7.2.1 Notification Type Option
- 18.7.2.2 QRCN Mode (QRCN Notification Type Only)
- 18.7.2.3 ROWID Option
- 18.7.2.4 Operations Filter Option (OCN Notification Type Only)
- 18.7.2.5 Transaction Lag Option (OCN Notification Type Only)
- 18.7.2.6 Notification Grouping Options
- 18.7.2.7 Reliable Option
- 18.7.2.8 Purge-on-Notify and Timeout Options
- 18.7.3 Prerequisites for Creating CQN Registrations
- 18.7.4 Queries that Can Be Registered for Object Change Notification (OCN)
- 18.7.5 Queries that Can Be Registered for Query Result Change Notification (QRCN)
- 18.7.6 Using PL/SQL to Register Queries for CQN
- 18.7.7 Best Practices for CQN Registrations
- 18.7.8 Troubleshooting CQN Registrations
- 18.7.9 Deleting Registrations
- 18.7.10 Configuring CQN: Scenario
-
18.8
Using OCI to Create CQN Registrations
- 18.8.1 Using OCI for Query Result Set Notifications
- 18.8.2 Using OCI to Register a Continuous Query Notification
- 18.8.3 Using OCI for Client Initiated CQN Registrations
- 18.8.4 Using OCI Subscription Handle Attributes for Continuous Query Notification
- 18.8.5 OCI_ATTR_CQ_QUERYID Attribute
- 18.8.6 Using OCI Continuous Query Notification Descriptors
- 18.8.7 Demonstrating Continuous Query Notification in an OCI Sample Program
- 18.9 Querying CQN Registrations
- 18.10 Interpreting Notifications
-
13
Coding PL/SQL Subprograms and Packages
-
Part IV Advanced Topics for Application Developers
-
19
Using Oracle Flashback Technology
- 19.1 Overview of Oracle Flashback Technology
- 19.2 Configuring Your Database for Oracle Flashback Technology
- 19.3 Using Oracle Flashback Query (SELECT AS OF)
- 19.4 Using Oracle Flashback Version Query
- 19.5 Using Oracle Flashback Transaction Query
- 19.6 Using Oracle Flashback Transaction Query with Oracle Flashback Version Query
- 19.7 Using DBMS_FLASHBACK Package
- 19.8 Using Flashback Transaction
-
19.9
Using Flashback Data Archive
- 19.9.1 Creating a Flashback Data Archive
- 19.9.2 Altering a Flashback Data Archive
- 19.9.3 Dropping a Flashback Data Archive
- 19.9.4 Specifying the Default Flashback Data Archive
- 19.9.5 Enabling and Disabling Flashback Data Archive
- 19.9.6 DDL Statements on Tables Enabled for Flashback Data Archive
- 19.9.7 Viewing Flashback Data Archive Data
-
19.9.8
Flashback Data Archive Scenarios
- 19.9.8.1 Scenario: Using Flashback Data Archive to Enforce Digital Shredding
- 19.9.8.2 Scenario: Using Flashback Data Archive to Access Historical Data
- 19.9.8.3 Scenario: Using Flashback Data Archive to Generate Reports
- 19.9.8.4 Scenario: Using Flashback Data Archive for Auditing
- 19.9.8.5 Scenario: Using Flashback Data Archive to Recover Data
- 19.10 General Guidelines for Oracle Flashback Technology
- 19.11 Performance Guidelines for Oracle Flashback Technology
- 19.12 Multitenant Container Database Restrictions for Oracle Flashback Technology
-
20
Choosing a Programming Environment
- 20.1 Overview of Application Architecture
- 20.2 Overview of the Program Interface
- 20.3 Overview of PL/SQL
- 20.4 Overview of Oracle Database Java Support
- 20.5 Choosing PL/SQL or Java
- 20.6 Overview of Precompilers
- 20.7 Overview of OCI and OCCI
- 20.8 Comparison of Precompilers and OCI
- 20.9 Overview of Oracle Data Provider for .NET (ODP.NET)
- 20.10 Overview of OraOLEDB
-
21
Developing Applications with Multiple Programming Languages
- 21.1 Overview of Multilanguage Programs
- 21.2 What Is an External Procedure?
- 21.3 Overview of Call Specification for External Procedures
- 21.4 Loading External Procedures
- 21.5 Publishing External Procedures
- 21.6 Publishing Java Class Methods
- 21.7 Publishing External C Procedures
-
21.8
Locations of Call Specifications
- 21.8.1 Example: Locating a Call Specification in a PL/SQL Package
- 21.8.2 Example: Locating a Call Specification in a PL/SQL Package Body
- 21.8.3 Example: Locating a Call Specification in an ADT Specification
- 21.8.4 Example: Locating a Call Specification in an ADT Body
- 21.8.5 Example: Java with AUTHID
- 21.8.6 Example: C with Optional AUTHID
- 21.8.7 Example: Mixing Call Specifications in a Package
- 21.9 Passing Parameters to External C Procedures with Call Specifications
- 21.10 Running External Procedures with CALL Statements
- 21.11 Handling Errors and Exceptions in Multilanguage Programs
- 21.12 Using Service Routines with External C Procedures
-
21.13
Doing Callbacks with External C Procedures
- 21.13.1 OCIExtProcGetEnv
- 21.13.2 Object Support for OCI Callbacks
- 21.13.3 Restrictions on Callbacks
- 21.13.4 Debugging External C Procedures
- 21.13.5 Example: Calling an External C Procedure
- 21.13.6 Global Variables in External C Procedures
- 21.13.7 Static Variables in External C Procedures
- 21.13.8 Restrictions on External C Procedures
-
22
Developing Applications with Oracle XA
- 22.1 X/Open Distributed Transaction Processing (DTP)
- 22.2 Oracle XA Library Subprograms
-
22.3
Developing and Installing XA Applications
- 22.3.1 DBA or System Administrator Responsibilities
- 22.3.2 Application Developer Responsibilities
- 22.3.3 Defining the xa_open String
- 22.3.4 Using Oracle XA with Precompilers
- 22.3.5 Using Oracle XA with OCI
- 22.3.6 Managing Transaction Control with Oracle XA
- 22.3.7 Examples of Precompiler Applications
- 22.3.8 Migrating Precompiler or OCI Applications to TPM Applications
- 22.3.9 Managing Oracle XA Library Thread Safety
- 22.3.10 Using the DBMS_XA Package
- 22.4 Troubleshooting XA Applications
- 22.5 Oracle XA Issues and Restrictions
- 23 Developing Applications with the Publish-Subscribe Model
-
24
Using the Oracle ODBC Driver
- 24.1 About Oracle ODBC Driver
- 24.2 For All Users
- 24.3 For Advanced Users
-
24.4
For Programmers
- 24.4.1 Format of the Connection String
- 24.4.2 SQLDriverConnect Implementation
- 24.4.3 Reducing Lock Timeout in a Program
- 24.4.4 Linking with odbc32.lib (Windows) or libodbc.so (UNIX)
- 24.4.5 Information About rowids
- 24.4.6 Rowids in a WHERE Clause
- 24.4.7 Enabling Result Sets
- 24.4.8 Enabling EXEC Syntax
- 24.4.9 Enabling Event Notification for Connection Failures in an Oracle RAC Environment
- 24.4.10 Using Implicit Results Feature Through ODBC
- 24.4.11 About Supporting Oracle TIMESTAMP WITH TIME ZONE and TIMESTAMP WITH LOCAL TIME ZONE Column Type in ODBC
- 24.4.12 About the Effect of Setting ORA_SDTZ in Oracle Clients (OCI, SQL*Plus, Oracle ODBC Driver, and Others)
- 24.4.13 Supported Functionality
- 24.4.14 Unicode Support
- 24.4.15 Performance and Tuning
-
25
Using the Identity Code Package
- 25.1 Identity Concepts
- 25.2 What Is the Identity Code Package?
-
25.3
Using the Identity Code Package
-
25.3.1
Storing RFID Tags in Oracle Database Using MGD_ID ADT
- 25.3.1.1 Creating a Table with MGD_ID Column Type and Storing EPC Tag Encodings in the Column
-
25.3.1.2
Constructing MGD_ID Objects to Represent RFID Tags
- 25.3.1.2.1 Constructing an MGD_ID Object (SGTIN-64) Passing in the Category ID and a List of Components
- 25.3.1.2.2 Constructing an MGD_ID object (SGTIN-64) and Passing in the Category ID, the Tag Identifier, and the List of Additional Required Parameters
- 25.3.1.2.3 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
- 25.3.1.2.4 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
- 25.3.1.3 Inserting an MGD_ID Object into a Database Table
- 25.3.1.4 Querying MGD_ID Column Type
- 25.3.2 Building a Function-Based Index Using the Member Functions of the MGD_ID Column Type
- 25.3.3 Using MGD_ID ADT Functions
- 25.3.4 Defining a Category of Identity Codes and Adding Encoding Schemes to an Existing Category
-
25.3.1
Storing RFID Tags in Oracle Database Using MGD_ID ADT
- 25.4 Identity Code Package Types
- 25.5 DBMS_MGD_ID_UTL Package
- 25.6 Identity Code Metadata Tables and Views
-
25.7
Electronic Product Code (EPC) Concepts
- 25.7.1 RFID Technology and EPC v1.1 Coding Schemes
-
25.7.2
Product Code Concepts and Their Current Use
- 25.7.2.1 Electronic Product Code (EPC)
- 25.7.2.2 Global Trade Identification Number (GTIN) and Serializable Global Trade Identification Number (SGTIN)
- 25.7.2.3 Serial Shipping Container Code (SSCC)
- 25.7.2.4 Global Location Number (GLN) and Serializable Global Location Number (SGLN)
- 25.7.2.5 Global Returnable Asset Identifier (GRAI)
- 25.7.2.6 Global Individual Asset Identifier (GIAI)
- 25.7.2.7 RFID EPC Network
- 25.8 Oracle Database Tag Data Translation Schema
-
26
Understanding Schema Object Dependency
- 26.1 Overview of Schema Object Dependency
- 26.2 Querying Object Dependencies
- 26.3 Object Status
- 26.4 Invalidation of Dependent Objects
- 26.5 Guidelines for Reducing Invalidation
- 26.6 Object Revalidation
- 26.7 Name Resolution in Schema Scope
- 26.8 Local Dependency Management
- 26.9 Remote Dependency Management
- 26.10 Remote Procedure Call (RPC) Dependency Management
- 26.11 Shared SQL Dependency Management
-
27
Using Edition-Based Redefinition
- 27.1 Overview of Edition-Based Redefinition
-
27.2
Editions
-
27.2.1
Editioned and Noneditioned Objects
- 27.2.1.1 Name Resolution for Editioned and Noneditioned Objects
- 27.2.1.2 Noneditioned Objects That Can Depend on Editioned Objects
- 27.2.1.3 Editionable and Noneditionable Schema Object Types
- 27.2.1.4 Enabling Editions for a User
- 27.2.1.5 EDITIONABLE and NONEDITIONABLE Properties
- 27.2.1.6 Rules for Editioned Objects
- 27.2.2 Creating an Edition
- 27.2.3 Editioned Objects and Copy-on-Change
- 27.2.4 Making an Edition Available to Some Users
- 27.2.5 Making an Edition Available to All Users
- 27.2.6 Current Edition and Session Edition
- 27.2.7 Retiring an Edition
- 27.2.8 Dropping an Edition
-
27.2.1
Editioned and Noneditioned Objects
- 27.3 Editioning Views
-
27.4
Crossedition Triggers
- 27.4.1 Forward Crossedition Triggers
- 27.4.2 Reverse Crossedition Triggers
- 27.4.3 Crossedition Trigger Interaction with Editions
- 27.4.4 Creating a Crossedition Trigger
- 27.4.5 Transforming Data from Pre- to Post-Upgrade Representation
- 27.4.6 Dropping the Crossedition Triggers
- 27.5 Displaying Information About EBR Features
-
27.6
Using EBR to Upgrade an Application
- 27.6.1 Preparing Your Application to Use Editioning Views
- 27.6.2 Procedure for EBR Using Only Editions
- 27.6.3 Procedure for EBR Using Editioning Views
- 27.6.4 Procedure for EBR Using Crossedition Triggers
- 27.6.5 Rolling Back the Application Upgrade
- 27.6.6 Reclaiming Space Occupied by Unused Table Columns
-
27.6.7
Example: Using EBR to Upgrade an Application
- 27.6.7.1 Existing Application
- 27.6.7.2 Preparing the Application to Use Editioning Views
-
27.6.7.3
Using EBR to Upgrade the Example Application
- 27.6.7.3.1 Example: Creating an Edition in Which to Upgrade the Example Application
- 27.6.7.3.2 Example: Changing the Table and Replacing the Editioning View
- 27.6.7.3.3 Example: Creating and Enabling the Crossedition Triggers
- 27.6.7.3.4 Example: Applying the Transforms
- 27.6.7.3.5 Example: Viewing Data in the Changed Table
-
28
Using Transaction Guard
- 28.1 Problem That Transaction Guard Solves
- 28.2 Solution That Transaction Guard Provides
- 28.3 Transaction Guard Concepts and Scope
- 28.4 Database Configuration for Transaction Guard
-
28.5
Developing Applications That Use Transaction Guard
- 28.5.1 Typical Transaction Guard Usage
- 28.5.2 Details for Using the LTXID
- 28.5.3 Transaction Guard and Transparent Application Failover
- 28.5.4 Using Transaction Guard with ODP.NET
- 28.5.5 Connection-Pool LTXID Usage
- 28.5.6 Improved Commit Outcome for XA One Phase Optimizations
- 28.5.7 Additional Requirements for Transaction Guard Development
- 28.6 Transaction Guard and Its Relationship to Application Continuity
-
19
Using Oracle Flashback Technology
- Index