Contents
- Audience
- Organization
- Related Documentation
- Conventions
- Documentation Accessibility
- New Application Development Features in Oracle Database 10g Release 1
- New Application Development Features in Oracle9i Release 2
- New Application Development Features in Oracle9i Release 1
- Overview of Developing an Oracle Database Application
- Overview of PL/SQL
- A Simple PL/SQL Example
- Advantages of PL/SQL
- Full Support for SQL
- Tight Integration with Oracle Database
- Better Performance
- Higher Productivity
- Scalability
- Maintainability
- PL/SQL Support for Object-Oriented Programming
- Object Types
- Collections
- Portability
- Security
- Built-In Packages for Application Development
- Built-In Packages for Server Management
- Built-In Packages for Distributed Database Access
- Overview of Java Support Built Into the Database
- Overview of Oracle JVM
- Overview of Oracle Extensions to JDBC
- JDBC Thin Driver
- JDBC OCI Driver
- JDBC Server-Side Internal Driver
- Oracle Database Extensions to JDBC Standards
- Sample JDBC 2.0 Program
- Sample Pre-2.0 JDBC Program
- JDBC in SQLJ Applications
- Overview of Oracle SQLJ
- Benefits of SQLJ
- Comparing SQLJ with JDBC
- SQLJ Stored Procedures in the Server
- Overview of Oracle JPublisher
- Overview of Java Stored Procedures
- Overview of Database Web Services
- Database as a Web Service Provider
- Database as a Web Service Consumer
- Overview of Writing Procedures and Functions in Java
- Overview of Writing Database Triggers in Java
- Why Use Java for Stored Procedures and Triggers?
- Overview of Pro*C/C++
- How You Implement a Pro*C/C++ Application
- Highlights of Pro*C/C++ Features
- Overview of Pro*COBOL
- How You Implement a Pro*COBOL Application
- Highlights of Pro*COBOL Features
- Overview of OCI and OCCI
- Advantages of OCI
- Parts of the OCI
- Procedural and Non-Procedural Elements
- Building an OCI Application
- Overview of Oracle Data Provider for .NET (ODP.NET)
- Using ODP.NET in a Simple Application
- Overview of Oracle Objects for OLE (OO4O)
- OO4O Automation Server
- OO4O Object Model
- OraSession
- OraServer
- OraDatabase
- OraDynaset
- OraField
- OraMetaData and OraMDAttribute
- OraParameters and OraParameter
- OraParamArray
- OraSQLStmt
- OraAQ
- OraAQMsg
- OraAQAgent
- Support for Oracle LOB and Object Datatypes
- OraBLOB and OraCLOB
- OraBFILE
- Oracle Data Control
- Oracle Objects for OLE C++ Class Library
- Additional Sources of Information
- Choosing a Programming Environment
- Choosing Whether to Use OCI or a Precompiler
- Using Built-In Packages and Libraries
- Java Compared to PL/SQL
- PL/SQL Is Optimized for Database Access
- PL/SQL Is Integrated with the Database
- Both Java and PL/SQL Have Object-Oriented Features
- Java Is Used for Open Distributed Applications
- Summary of Oracle Built-In Datatypes
- Representing Character Data
-
- Column Lengths for Single-Byte and Multibyte Character Sets
- Implicit Conversion Between CHAR/VARCHAR2 and NCHAR/NVARCHAR2
- Comparison Semantics
- Representing Numeric Data with Number and Floating-Point Datatypes
- Floating-Point Number System Concepts
- About Floating-Point Formats
- Representing Special Values with Native Floating-Point Formats
- Behavior of Special Values for Native Floating-Point Datatypes
- Rounding of Native Floating-Point Datatypes
- Comparison Operators for Native Floating-Point Datatypes
- Arithmetic Operators for Native Floating-Point Datatypes
- Conversion Functions for Native Floating-Point Datatypes
- Exceptions for Native Floating-Point Datatypes
- Client Interfaces for Native Floating-Point Datatypes
- SQL Native Floating-Point Datatypes
- OCI Native Floating-Point Datatypes SQLT_BFLOAT and SQLT_BDOUBLE
- Native Floating-Point Datatypes Supported in Oracle OBJECT Types
- Pro*C/C++ Support for Native Floating-Point Datatypes
- Storing Data Using the NUMBER Datatype
- Representing Date and Time Data
- Date Format
- Checking If Two DATE Values Refer to the Same Day
- Displaying the Current Date and Time
- Setting SYSDATE to a Constant Value
- Printing a Date with BC/AD Notation
- Time Format
- Performing Date Arithmetic
- Converting Between Datetime Types
- Handling Time Zones
- Importing and Exporting Datetime Types
- Establishing Year 2000 Compliance
- Oracle Server Year 2000 Compliance
- Centuries and the Year 2000
- Examples of The RR Date Format
- Examples of The CC Date Format
- Storing Dates in Character Datatypes
- Viewing Date Settings
- Altering Date Settings
- Troubleshooting Y2K Problems in Applications
- Representing Conditional Expressions as Data
- Representing Geographic Coordinate Data
- Representing Image, Audio, and Video Data
- Representing Searchable Text Data
- Representing Large Amounts of Data
- Using RAW and LONG RAW Datatypes
- Addressing Rows Directly with the ROWID Datatype
-
- Extended ROWID Format
- Different Forms of the ROWID
- ROWID Pseudocolumn
- Internal ROWID
- External Character ROWID
- External Binary ROWID
- ROWID Migration and Compatibility Issues
- Accessing Oracle Database Version 7 from an Oracle9i Client
- Accessing an Oracle9i Database from a Client of Oracle Database Version 7
- Import and Export
- ANSI/ISO, DB2, and SQL/DS Datatypes
- How Oracle Database Converts Datatypes
- Datatype Conversion During Assignments
- Datatype Conversion During Expression Evaluation
- Representing Dynamically Typed Data
- Representing XML Data
- Overview of Integrity Constraints
- When to Enforce Business Rules with Integrity Constraints
- Example of an Integrity Constraint for a Business Rule
- When to Enforce Business Rules in Applications
- Creating Indexes for Use with Constraints
- When to Use NOT NULL Integrity Constraints
- When to Use Default Column Values
- Setting Default Column Values
- Choosing a Table's Primary Key
- When to Use UNIQUE Key Integrity Constraints
- Constraints On Views: for Performance, Not Data Integrity
- Enforcing Referential Integrity with Constraints
- About Nulls and Foreign Keys
- Defining Relationships Between Parent and Child Tables
-
- No Constraints on the Foreign Key
- NOT NULL Constraint on the Foreign Key
- UNIQUE Constraint on the Foreign Key
- UNIQUE and NOT NULL Constraints on the Foreign Key
- Rules for Multiple FOREIGN KEY Constraints
- Deferring Constraint Checks
- Guidelines for Deferring Constraint Checks
- Select Appropriate Data
- Ensure Constraints Are Created Deferrable
- Set All Constraints Deferred
- Check the Commit (Optional)
- Managing Constraints That Have Associated Indexes
- Minimizing Space and Time Overhead for Indexes Associated with Constraints
- Guidelines for Indexing Foreign Keys
- About Referential Integrity in a Distributed Database
- When to Use CHECK Integrity Constraints
- Restrictions on CHECK Constraints
- Designing CHECK Constraints
- Rules for Multiple CHECK Constraints
- Choosing Between CHECK and NOT NULL Integrity Constraints
- Examples of Defining Integrity Constraints
- Example: Defining Integrity Constraints with the CREATE TABLE Command
- Example: Defining Constraints with the ALTER TABLE Command
- Privileges Required to Create Constraints
- Naming Integrity Constraints
- Enabling and Disabling Integrity Constraints
-
- Why Disable Constraints?
- About Exceptions to Integrity Constraints
- Enabling Constraints
- Creating Disabled Constraints
- Enabling and Disabling Existing Integrity Constraints
- Enabling Existing Constraints
- Disabling Existing Constraints
- Tip: Using the Data Dictionary to Find Constraints
- Guidelines for Enabling and Disabling Key Integrity Constraints
- Fixing Constraint Exceptions
- Altering Integrity Constraints
- Renaming Integrity Constraints
- Dropping Integrity Constraints
- Managing FOREIGN KEY Integrity Constraints
- Datatypes and Names for Foreign Key Columns
- Limit on Columns in Composite Foreign Keys
- Foreign Key References Primary Key by Default
- Privileges Required to Create FOREIGN KEY Integrity Constraints
- Choosing How Foreign Keys Enforce Referential Integrity
- Viewing Definitions of Integrity Constraints
- Examples of Defining Integrity Constraints
-
- Example 1: Listing All of Your Accessible Constraints
- Example 2: Distinguishing NOT NULL Constraints from CHECK Constraints
- Example 3: Listing Column Names that Constitute an Integrity Constraint
- Guidelines for Application-Specific Indexes
-
- Create Indexes After Inserting Table Data
- Switch Your Temporary Tablespace to Avoid Space Problems Creating Indexes
- Index the Correct Tables and Columns
- Limit the Number of Indexes for Each Table
- Choose the Order of Columns in Composite Indexes
- Gather Statistics to Make Index Usage More Accurate
- Drop Indexes That Are No Longer Required
- Privileges Required to Create an Index
- Creating Indexes: Basic Examples
- When to Use Domain Indexes
- When to Use Function-Based Indexes
- Advantages of Function-Based Indexes
- Examples of Function-Based Indexes
- Example: Function-Based Index for Case-Insensitive Searches
- Example: Precomputing Arithmetic Expressions with a Function-Based Index
- Example: Function-Based Index for Language-Dependent Sorting
- Restrictions for Function-Based Indexes
- Overview of SQL Statement Execution
- Identifying Extensions to SQL92 (FIPS Flagging)
- Grouping Operations into Transactions
- Improving Transaction Performance
- Committing Transactions
- Rolling Back Transactions
- Defining Transaction Savepoints
- An Example of COMMIT, SAVEPOINT, and ROLLBACK
- Privileges Required for Transaction Management
- Ensuring Repeatable Reads with Read-Only Transactions
- Using Cursors within Applications
- Declaring and Opening Cursors
- Using a Cursor to Execute Statements Again
- Closing Cursors
- Cancelling Cursors
- Locking Data Explicitly
- Choosing a Locking Strategy
- When to Lock with ROW SHARE and ROW EXCLUSIVE Mode
- When to Lock with SHARE Mode
- When to Lock with SHARE ROW EXCLUSIVE Mode
- When to Lock in EXCLUSIVE Mode
- Privileges Required
- Letting Oracle Database Control Table Locking
- Explicitly Acquiring Row Locks
- About User Locks
- When to Use User Locks
- Example of a User Lock
- Viewing and Monitoring Locks
- Using Serializable Transactions for Concurrency Control
- How Serializable Transactions Interact
- Setting the Isolation Level of a Transaction
- The INITRANS Parameter
- Referential Integrity and Serializable Transactions
- Using SELECT FOR UPDATE
- READ COMMITTED and SERIALIZABLE Isolation
- Transaction Set Consistency
- Comparison of READ COMMITTED and SERIALIZABLE Transactions
- Choosing an Isolation Level for Transactions
- Application Tips for Transactions
- Autonomous Transactions
- Examples of Autonomous Transactions
- Entering a Buy Order
- Example: Making a Bank Withdrawal
- Defining Autonomous Transactions
- Restrictions on Autonomous Transactions
- Resuming Execution After a Storage Error Condition
- What Operations Can Be Resumed After an Error Condition?
- Limitations on Resuming Operations After an Error Condition
- Writing an Application to Handle Suspended Storage Allocation
- Example of Resumable Storage Allocation
- What Is Dynamic SQL?
- Why Use Dynamic SQL?
- Executing DDL and SCL Statements in PL/SQL
- Executing Dynamic Queries
- Referencing Database Objects that Do Not Exist at Compilation
- Optimizing Execution Dynamically
- Executing Dynamic PL/SQL Blocks
- Performing Dynamic Operations Using Invoker's Rights
- A Dynamic SQL Scenario Using Native Dynamic SQL
- Sample DML Operation Using Native Dynamic SQL
- Sample DDL Operation Using Native Dynamic SQL
- Sample Single-Row Query Using Native Dynamic SQL
- Sample Multiple-Row Query Using Native Dynamic SQL
- Choosing Between Native Dynamic SQL and the DBMS_SQL Package
- Advantages of Native Dynamic SQL
- Native Dynamic SQL is Easy to Use
- Native Dynamic SQL is Faster than DBMS_SQL
- Performance Tip: Using Bind Variables
- Native Dynamic SQL Supports User-Defined Types
- Native Dynamic SQL Supports Fetching Into Records
- Advantages of the DBMS_SQL Package
- DBMS_SQL is Supported in Client-Side Programs
- DBMS_SQL Supports DESCRIBE
- DBMS_SQL Supports SQL Statements Larger than 32KB
- DBMS_SQL Lets You Reuse SQL Statements
- Examples of DBMS_SQL Package Code and Native Dynamic SQL Code
- Querying Using Dynamic SQL: Example
- Performing DML Using Dynamic SQL: Example
- Performing DML with RETURNING Clause Using Dynamic SQL: Example
- Using Dynamic SQL in Languages Other Than PL/SQL
- Overview of PL/SQL Program Units
- Anonymous Blocks
- Stored Program Units (Procedures, Functions, and Packages)
- Naming Procedures and Functions
- Parameters for Procedures and Functions
- Parameter Modes
- Parameter Datatypes
- %TYPE and %ROWTYPE Attributes
- Tables and Records
- Default Parameter Values
- Creating Stored Procedures and Functions
- Privileges to Create Procedures and Functions
- Altering Stored Procedures and Functions
- Dropping Procedures and Functions
- Privileges to Drop Procedures and Functions
- External Procedures
- PL/SQL Packages
- Example of a PL/SQL Package Specification and Body
- PL/SQL Object Size Limitation
- Size Limitation by Version
- Creating Packages
- Creating Packaged Objects
- Privileges to Create or Drop Packages
- Naming Packages and Package Objects
- Package Invalidations and Session State
- Packages Supplied With Oracle Database
- Overview of Bulk Binds
- When to Use Bulk Binds
- DML Statements that Reference Collections
- SELECT Statements that Reference Collections
- FOR Loops that Reference Collections and the Returning Into Clause
- Triggers
- Hiding PL/SQL Code with the PL/SQL Wrapper
- Compiling PL/SQL Procedures for Native Execution
- Remote Dependencies
- Timestamps
- Disadvantages of the Timestamp Model
- Signatures
- When Does a Signature Change?
- Modes
- Default Parameter Values
- Examples of Changing Procedure Signatures
- Controlling Remote Dependencies
- Dependency Resolution
- Suggestions for Managing Dependencies
- Cursor Variables
- Declaring and Opening Cursor Variables
- Examples of Cursor Variables
- Fetching Data
- Implementing Variant Records
- Handling PL/SQL Compile-Time Errors
- Handling Run-Time PL/SQL Errors
- Declaring Exceptions and Exception Handling Routines
- Unhandled Exceptions
- Handling Errors in Distributed Queries
- Handling Errors in Remote Procedures
- Debugging Stored Procedures
- Calling Stored Procedures
-
- A Procedure or Trigger Calling Another Procedure
- Interactively Calling Procedures From Oracle Database Tools
- Calling Procedures within 3GL Applications
- Name Resolution When Calling Procedures
- Privileges Required to Execute a Procedure
- Specifying Values for Procedure Arguments
- Calling Remote Procedures
-
- Remote Procedure Calls and Parameter Values
- Referencing Remote Objects
- Synonyms for Procedures and Packages
- Calling Stored Functions from SQL Expressions
- Using PL/SQL Functions
- Syntax for SQL Calling a PL/SQL Function
- Naming Conventions
- Name Precedence
- Example of Calling a PL/SQL Function from SQL
- Arguments
- Using Default Values
- Privileges
- Requirements for Calling PL/SQL Functions from SQL Expressions
- Controlling Side Effects
- Restrictions
- Declaring a Function
- Parallel Query and Parallel DML
- PRAGMA RESTRICT_REFERENCES - for Backward Compatibility
- Using the Keyword TRUST
- Differences between Static and Dynamic SQL Statements.
- Overloading Packaged PL/SQL Functions
- Serially Reusable PL/SQL Packages
- Package States
- Why Serially Reusable Packages?
- Syntax of Serially Reusable Packages
- Semantics of Serially Reusable Packages
- Examples of Serially Reusable Packages
- Example 1: How Package Variables Act Across Call Boundaries
- Example 2: How Package Variables Act Across Call Boundaries
- Example 3: Open Cursors in Serially Reusable Packages at Call Boundaries
- Returning Large Amounts of Data from a Function
- Coding Your Own Aggregate Functions
- Overview of Multi-Language Programs
- What Is an External Procedure?
- Overview of The Call Specification for External Procedures
- Loading External Procedures
- Loading Java Class Methods
- Loading External C Procedures
- Publishing External Procedures
- The AS LANGUAGE Clause for Java Class Methods
- The AS LANGUAGE Clause for External C Procedures
- LIBRARY
- NAME
- LANGUAGE
- CALLING STANDARD
- WITH CONTEXT
- PARAMETERS
- AGENT IN
- Publishing Java Class Methods
- Publishing External C Procedures
- Locations of Call Specifications
-
- Example: Locating a Call Specification in a PL/SQL Package Body
- Example: Locating a Call Specification in an Object Type Specification
- Example: Locating a Call Specification in an Object Type Body
- Passing Parameters to External C Procedures with Call Specifications
- Specifying Datatypes
- External Datatype Mappings
- BY VALUE/REFERENCE for IN and IN OUT Parameter Modes
- The PARAMETERS Clause
- Overriding Default Datatype Mapping
- Specifying Properties
- INDICATOR
- LENGTH and MAXLEN
- CHARSETID and CHARSETFORM
- Repositioning Parameters
- Using SELF
- Passing Parameters by Reference
- WITH CONTEXT
- Inter-Language Parameter Mode Mappings
- Executing External Procedures with the CALL Statement
- Preconditions for External Procedures
- Privileges of External Procedures
- Managing Permissions
- Creating Synonyms for External Procedures
- CALL Statement Syntax
- Calling Java Class Methods
- How the Database Server Calls External C Procedures
- Handling Errors and Exceptions in Multi-Language Programs
- Generic Compile Time Call specification Errors
- C Exception Handling
- Using Service Procedures with External C Procedures
-
- OCIExtProcAllocCallMemory
- OCIExtProcRaiseExcp
- OCIExtProcRaiseExcpWithMsg
- Doing Callbacks with External C Procedures
-
- OCIExtProcGetEnv
- Object Support for OCI Callbacks
- Restrictions on Callbacks
- Debugging External Procedures
- Using Package DEBUG_EXTPROC
- Demo Program
- Guidelines for External C Procedures
- Restrictions on External C Procedures
- Designing Triggers
- Creating Triggers
- Types of Triggers
- Overview of System Events
- Getting the Attributes of System Events
- Naming Triggers
- When Is the Trigger Fired?
- Do Import and SQL*Loader Fire Triggers?
- How Column Lists Affect UPDATE Triggers
- Controlling When a Trigger Is Fired (BEFORE and AFTER Options)
- Ordering of Triggers
- Modifying Complex Views (INSTEAD OF Triggers)
- Views that Require INSTEAD OF Triggers
- INSTEAD OF Trigger Example
- Object Views and INSTEAD OF Triggers
- Triggers on Nested Table View Columns
- Firing Triggers One or Many Times (FOR EACH ROW Option)
- Firing Triggers Based on Conditions (WHEN Clause)
- Coding the Trigger Body
-
-
- Example: Monitoring Logons with a Trigger
- Example: Calling a Java Procedure from a Trigger
- Accessing Column Values in Row Triggers
- Example: Modifying LOB Columns with a Trigger
- INSTEAD OF Triggers on Nested Table View Columns
- Avoiding Name Conflicts with Triggers (REFERENCING Option)
- Detecting the DML Operation That Fired a Trigger
- Error Conditions and Exceptions in the Trigger Body
- Triggers and Handling Remote Exceptions
- Restrictions on Creating Triggers
- Who Is the Trigger User?
- Privileges Needed to Work with Triggers
- Compiling Triggers
- Dependencies for Triggers
- Recompiling Triggers
- Modifying Triggers
- Debugging Triggers
- Enabling and Disabling Triggers
- Enabling Triggers
- Disabling Triggers
- Viewing Information About Triggers
- Examples of Trigger Applications
-
- Auditing with Triggers: Example
- Integrity Constraints and Triggers: Examples
- Referential Integrity Using Triggers
- Foreign Key Trigger for Child Table
- UPDATE and DELETE RESTRICT Trigger for Parent Table
- UPDATE and DELETE SET NULL Triggers for Parent Table: Example
- DELETE Cascade Trigger for Parent Table: Example
- UPDATE Cascade Trigger for Parent Table: Example
- Trigger for Complex Check Constraints: Example
- Complex Security Authorizations and Triggers: Example
- Transparent Event Logging and Triggers
- Derived Column Values and Triggers: Example
- Building Complex Updatable Views Using Triggers: Example
- Tracking System Events Using Triggers
- Fine-Grained Access Control Using Triggers: Example
- CALL Syntax
- Responding to System Events through Triggers
- Event Attribute Functions
- List of Database Events
- System Events
- Client Events
- Introduction to Publish-Subscribe
- Publish-Subscribe Architecture
- Publish-Subscribe Concepts
- Examples of a Publish-Subscribe Mechanism
- What are Regular Expressions?
- Oracle Database Regular Expression Support
- Oracle Database SQL Functions for Regular Expressions
- Metacharacters Supported in Regular Expressions
- Constructing Regular Expressions
- Basic String Matching with Regular Expressions
- Regular Expression Operations on Subexpressions
- Regular Expression Operator and Metacharacter Usage
- PL/SQL Web Applications
- PL/SQL Gateway
- Configuring mod_plsql
- Uploading and Downloading Files With PL/SQL Gateway
- Uploading Files to the Database
- Downloading Files From the Database
- Custom Authentication With PL/SQL Gateway
- PL/SQL Web Toolkit
- Generating HTML Output from PL/SQL
- Passing Parameters to a PL/SQL Web Application
- Passing List and Dropdown List Parameters from an HTML Form
- Passing Radio Button and Checkbox 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 within PL/SQL Stored Procedures
- Sending E-Mail from PL/SQL
- Getting a Host Name or Address from PL/SQL
- Working with TCP/IP Connections from PL/SQL
- Retrieving the Contents of an HTTP URL from PL/SQL
- Working with Tables, Image Maps, Cookies, and CGI Variables from PL/SQL
- Embedding PL/SQL Code in Web Pages (PL/SQL Server Pages)
- Choosing a Software Configuration
- Choosing Between PSP and the PL/SQL Web Toolkit
- How PSP Relates to Other Scripting Solutions
- Writing the Code and Content for the PL/SQL Server Page
- The Format of the PSP File
- Syntax of PL/SQL Server Page Elements
- Page Directive
- Procedure Directive
- Parameter Directive
- Include Directive
- Declaration Block
- Code Block (Scriptlet)
- Expression Block
- Loading the PL/SQL Server Page into the Database as a Stored Procedure
- Running a PL/SQL Server Page Through a URL
- Sample PSP URLs
- Examples of PL/SQL Server Pages
- Sample Table
- Dumping the Sample Table
- Printing the Sample Table using a Loop
- Allowing a User Selection
- Sample HTML Form to Call a PL/SQL Server Page
- Debugging PL/SQL Server Page Problems
- Putting an Application using PL/SQL Server Pages into Production
- Enabling PL/SQL Web Applications for XML
- Performing Natural Joins and Inner Joins
- Migrating a Schema and Data from Another Database System
- Performing Several Comparisons within a Query
- Overview of Flashback Features
- Application Development Features
- Database Administration Features
- Database Administration Tasks Before Using Flashback Features
- Using Flashback Query (SELECT ... AS OF)
- Examining Past Data: Example
- Tips for Using Flashback Query
- Using the DBMS_FLASHBACK Package
- Using ORA_ROWSCN
- Using Flashback Version Query
- Using Flashback Transaction Query
- Flashback Transaction Query and Flashback Version Query: Example
- Flashback Tips
- Flashback Tips - Performance
- Flashback Tips - General
- X/Open Distributed Transaction Processing (DTP)
- Required Public Information
- XA and the Two-Phase Commit Protocol
- Transaction Processing Monitors (TPMs)
- Support for Dynamic and Static Registration
- Oracle XA Library Interface Subroutines
- XA Library Subroutines
- Extensions to the XA Interface
- Developing and Installing Applications That Use the XA Libraries
- Responsibilities of the DBA or System Administrator
- Responsibilities of the Application Developer
- Defining the xa_open String
- Syntax of the xa_open String
- Required Fields
- Optional Fields
- Interfacing XA with Precompilers and OCIs
- Using Precompilers with the Oracle XA Library
- Using Precompilers with the Default Database
- Using Precompilers with a Named Database
- Using OCI with the Oracle XA Library
- Transaction Control using XA
- Examples of Precompiler Applications
- Migrating Precompiler or OCI Applications to TPM Applications
- XA Library Thread Safety
- Specifying Threading in the Open String
- Restrictions on Threading in XA
- Troubleshooting XA Applications
- XA Trace Files
- The xa_open string DbgFl
- Trace File Locations
- Trace File Examples
- In-Doubt or Pending Transactions
- Oracle Database SYS Account Tables
- XA Issues and Restrictions
- Changes to Oracle XA Support
- XA Changes from Release 8.0 to Release 8.1
- XA Changes from Release 7.3 to Release 8.0
- Session Caching Is No Longer Needed
- Dynamic Registration Is Supported
- Loosely Coupled Transaction Branches Are Supported
- SQLLIB Is Not Needed for OCI Applications
- No Installation Script Is Needed to Run XA
- XA Library Use with Oracle Real Application Clusters Option on All Platforms
- Transaction Recovery for Oracle Real Application Clusters Has Been Improved
- Both Global and Local Transactions Are Possible
- The xa_open String Has Been Modified