Table of Contents
- List of Tables
- Title and Copyright Information
- Preface
- Changes in This Release for Oracle Database JDBC Developer's Guide
- Part I Overview
- 1 Introducing JDBC
- 2
Getting Started
- 2.1 Version Compatibility for Oracle JDBC Drivers
- 2.2 Verifying a JDBC Client Installation
- 2.3
Basic Steps in JDBC
- 2.3.1 Importing Packages
- 2.3.2 Opening a Connection to a Database
- 2.3.3 Creating a Statement Object
- 2.3.4 Running a Query and Retrieving a Result Set Object
- 2.3.5 Processing the Result Set Object
- 2.3.6 Closing the Result Set and Statement Objects
- 2.3.7 Making Changes to the Database
- 2.3.8 About Committing Changes
- 2.3.9 Closing the Connection
- 2.4 Sample: Connecting, Querying, and Processing the Results
- 2.5 Support for Invisible Columns
- 2.6 Support for Implicit Results
- 2.7 Support for Deprioritization of Database Nodes
- 2.8 Stored Procedure Calls in JDBC Programs
- 2.9 About Processing SQL Exceptions
- Part II Oracle JDBC
- 3
JDBC Standards Support
- 3.1 Support for JDBC 2.0 Standard
- 3.2 Support for JDBC 3.0 Standard
- 3.3 Support for JDBC 4.0 Standard
- 3.4 Support for JDBC 4.1 Standard
- 3.5 Support for JDBC 4.2 Standard
- 4
Oracle Extensions
- 4.1 Overview of Oracle Extensions
- 4.2 Features of the Oracle Extensions
- 4.3 Oracle JDBC Packages
- 4.4 Oracle Character Data Types Support
- 4.5
Additional Oracle Type Extensions
- 4.5.1 Oracle ROWID Type
- 4.5.2 Oracle REF CURSOR Type Category
- 4.5.3 Oracle BINARY_FLOAT and BINARY_DOUBLE Types
- 4.5.4 Oracle SYS.ANYTYPE and SYS.ANYDATA Types
- 4.5.5
The oracle.jdbc Package
- 4.5.5.1 Interface oracle.jdbc.OracleConnection
- 4.5.5.2 Interface oracle.jdbc.OracleStatement
- 4.5.5.3 Interface oracle.jdbc.OraclePreparedStatement
- 4.5.5.4 Interface oracle.jdbc.OracleCallableStatement
- 4.5.5.5 Interface oracle.jdbc.OracleResultSet
- 4.5.5.6 Interface oracle.jdbc.OracleResultSetMetaData
- 4.5.5.7 Class oracle.jdbc.OracleTypes
- 4.6 DML Returning
- 4.7 Accessing PL/SQL Associative Arrays
- 5
Features Specific to JDBC Thin
- 5.1 Overview of JDBC Thin Client
- 5.2 Additional Features Supported
- 5.3
JDBC in Applets
- 5.3.1 About Connecting to the Database Through the Applet
- 5.3.2 Connecting to a Database on a Different Host Than the Web Server
- 5.3.3 Overview of Using Applets with Firewalls
- 5.3.4 Packaging Applets
- 5.3.5 Overview of Specifying an Applet in an HTML Page
- 6
Features Specific to JDBC OCI Driver
- 6.1 OCI Connection Pooling
- 6.2 Client Result Cache
- 6.3 Transparent Application Failover
- 6.4 OCI Native XA
- 6.5
OCI Instant Client
- 6.5.1 Overview of Instant Client
- 6.5.2 OCI Instant Client Shared Libraries
- 6.5.3 Benefits of Instant Client
- 6.5.4 JDBC OCI Instant Client Installation Process
- 6.5.5 Usage of Instant Client
- 6.5.6 About Patching Instant Client Shared Libraries
- 6.5.7 Regeneration of Data Shared Library and ZIP files
- 6.5.8 Database Connection Names for OCI Instant Client
- 6.5.9 Environment Variables for OCI Instant Client
- 6.6 About Instant Client Light (English)
- 7 Server-Side Internal Driver
- 3
JDBC Standards Support
- Part III Connection and Security
- 8
Data Sources and URLs
- 8.1
About Data Sources
- 8.1.1 Overview of Oracle Data Source Support for JNDI
- 8.1.2 Features and Properties of Data Sources
- 8.1.3 Creating a Data Source Instance and Connecting
- 8.1.4 Creating a Data Source Instance, Registering with JNDI, and Connecting
- 8.1.5 Supported Connection Properties
- 8.1.6 About Using Roles for SYS Login
- 8.1.7 Configuring Database Remote Login
- 8.1.8 Using Bequeath Connection and SYS Logon
- 8.1.9 Setting Properties for Oracle Performance Extensions
- 8.1.10 Support for Network Data Compression
- 8.2 Database URLs and Database Specifiers
- 8.1
About Data Sources
- 9 JDBC Client-Side Security Features
- 10 Proxy Authentication
- 8
Data Sources and URLs
- Part IV Data Access and Manipulation
- 11
Accessing and Manipulating Oracle Data
- 11.1 Data Type Mappings
- 11.2 Data Conversion Considerations
- 11.3 Result Set and Statement Extensions
- 11.4
Comparison of Oracle get and set Methods to Standard JDBC
- 11.4.1 Standard getObject Method
- 11.4.2 Oracle getOracleObject Method
- 11.4.3 Summary of getObject and getOracleObject Return Types
- 11.4.4 Other getXXX Methods
- 11.4.5 Data Types For Returned Objects from getObject and getXXX
- 11.4.6 The setObject and setOracleObject Methods
- 11.4.7 Other setXXX Methods
- 11.5 Using Result Set Metadata Extensions
- 11.6 About Using SQL CALL and CALL INTO Statements
- 12 Java Streams in JDBC
- 13
Working with Oracle Object Types
- 13.1 About Mapping Oracle Objects
- 13.2 About Using the Default STRUCT Class for Oracle Objects
- 13.3
About Creating and Using Custom Object Classes for Oracle Objects
- 13.3.1 Overview of Creating and Using Custom Object Classes
- 13.3.2 Relative Advantages of OracleData versus SQLData
- 13.3.3 About Type Maps for SQLData Implementations
- 13.3.4 About Creating Type Map and Defining Mappings for a SQLData Implementation
- 13.3.5 About Reading and Writing Data with a SQLData Implementation
- 13.3.6 About the OracleData Interface
- 13.3.7 About Reading and Writing Data with an OracleData Implementation
- 13.3.8 Additional Uses of OracleData
- 13.4 Object-Type Inheritance
- 13.5 About Describing an Object Type
- 14 Working with LOBs and BFILEs
- 15 Using Oracle Object References
- 16
Working with Oracle Collections
- 16.1 Oracle Extensions for Collections
- 16.2 Overview of Collection Functionality
- 16.3 ARRAY Performance Extension Methods
- 16.4
Creating and Using Arrays
- 16.4.1 Creating ARRAY Objects
- 16.4.2
Retrieving an Array and Its Elements
- 16.4.2.1 About Retrieving the Array
- 16.4.2.2 Data Retrieval Methods
- 16.4.2.3 Comparing the Data Retrieval Methods
- 16.4.2.4 Retrieving Elements of a Structured Object Array According to a Type Map
- 16.4.2.5 Retrieving a Subset of Array Elements
- 16.4.2.6 Retrieving Array Elements into an oracle.sql.Datum Array
- 16.4.2.7 About Accessing Multilevel Collection Elements
- 16.4.3 Passing Arrays to Statement Objects
- 16.5 Using a Type Map to Map Array Elements
- 17 Result Set
- 18 JDBC RowSets
- 19 Globalization Support
- 11
Accessing and Manipulating Oracle Data
- Part V Performance and Scalability
- 20
Statement and Result Set Caching
- 20.1 About Statement Caching
- 20.2 About Using Statement Caching
- 20.3 About Reusing Statements Objects
- 20.4 About Result Set Caching
- 21
Performance Extensions
- 21.1
Update Batching
- 21.1.1 Overview of Update Batching
- 21.1.2
Standard Update Batching
- 21.1.2.1 Limitations in the Oracle Implementation of Standard Batching
- 21.1.2.2 About Adding Operations to the Batch
- 21.1.2.3 About Processing the Batch
- 21.1.2.4 Row Count per Iteration for Array DMLs
- 21.1.2.5 About Committing the Changes in the Oracle Implementation of Standard Batching
- 21.1.2.6 About Clearing the Batch
- 21.1.2.7 Update Counts in the Oracle Implementation of Standard Batching
- 21.1.2.8 Error Handling in the Oracle Implementation of Standard Batching
- 21.1.2.9 About Intermixing Batched Statements and Nonbatched Statements
- 21.1.3 Premature Batch Flush
- 21.2 Additional Oracle Performance Extensions
- 21.1
Update Batching
- 22
OCI Connection Pooling
- 22.1 Background of OCI Driver Connection Pooling
- 22.2 Comparison Between OCI Driver Connection Pooling and Shared Servers
- 22.3 About Defining an OCI Connection Pool
- 22.4 About Connecting to an OCI Connection Pool
- 22.5 Sample Code for OCI Connection Pooling
- 22.6 Statement Handling and Caching
- 22.7 JNDI and the OCI Connection Pool
- 23 Database Resident Connection Pooling
- 24 JDBC Support for Database Sharding
- 25
Oracle Advanced Queuing
- 25.1 Functionality and Framework of Oracle Advanced Queuing
- 25.2 Making Changes to the Database
- 25.3 AQ Asynchronous Event Notification
- 25.4 About Creating Messages
- 25.5 Example: Creating a Message and Setting a Payload
- 25.6 Enqueuing Messages
- 25.7 Dequeuing Messages
- 25.8 Examples: Enqueuing and Dequeuing
- 26 Continuous Query Notification
- 20
Statement and Result Set Caching
- Part VI High Availability
- 27 Transaction Guard for Java
- 28
Application Continuity for Java
- 28.1 About Configuring Oracle JDBC for Application Continuity for Java
- 28.2 About Configuring Oracle Database for Application Continuity for Java
- 28.3 Application Continuity Support for XA Data Source
- 28.4 About Identifying Request Boundaries in Application Continuity for Java
- 28.5 Establishing the Initial State Before Application Continuity Replays
- 28.6 About Delaying the Reconnection in Application Continuity for Java
- 28.7 About Retaining Mutable Values in Application Continuity for Java
- 28.8 Application Continuity Statistics
- 28.9
About Disabling Replay in Application Continuity for Java
- 28.9.1 How to Disable Replay
- 28.9.2
When to Disable Replay
- 28.9.2.1 Application Calls External PL/SQL Actions that Should not Be Repeated
- 28.9.2.2 Application Synchronizes Independent Sessions
- 28.9.2.3 Application Uses Time at the Middle-tier in the Execution Logic
- 28.9.2.4 Application assumes that ROWIds do not change
- 28.9.2.5 Application Assumes that Side Effects Execute Once
- 28.9.2.6 Application Assumes that Location Values Do not Change
- 28.9.3 Diagnostics and Tracing
- 29 Oracle JDBC Support for FAN Events
- 30 Transparent Application Failover
- 31
Single Client Access Name
- 31.1 Overview of Single Client Access Name
- 31.2 About Configuring the Database Using the SCAN
- 31.3 How Connection Load Balancing Works Using the SCAN
- 31.4 Version and Backward Compatibility
- 31.5 Using the SCAN in a Maximum Availability Architecture Environment
- 31.6 Using the SCAN With Oracle Connection Manager
- Part VII Transaction Management
- Part VIII Manageability
- 33 Database Administration
- 34
Diagnosability in JDBC
- 34.1 About Logging Feature of Oracle JDBC Drivers
- 34.2 Diagnosability Management
- 35 JDBC DMS Metrics
- Appendixes
- A JDBC Reference Information
- B Oracle RAC Fast Application Notification
- C
JDBC Coding Tips
- C.1 JDBC and Multithreading
- C.2 Performance Optimization of JDBC Programs
- C.3 Transaction Isolation Levels and Access Modes in JDBC
- D JDBC Error Messages
- E
Troubleshooting
- E.1
Common Problems
- E.1.1 Memory Consumption for CHAR Columns Defined as OUT or IN/OUT Variables
- E.1.2 Memory Leaks and Running Out of Cursors
- E.1.3 Opening More than 16 OCI Connections for a Process
- E.1.4 Using statement.cancel
- E.1.5 Using JDBC with Firewalls
- E.1.6 Frequent Abrupt Disconnection from Server
- E.1.7 Network Adapter Cannot Establish Connection
- E.2 Basic Debugging Procedures
- E.1
Common Problems
- Index