1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Oracle® Database JDBC Developer’s Guide and Reference pptx

486 2,4K 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Oracle® Database JDBC Developer’s Guide and Reference
Tác giả Venkatasubramaniam Iyer, Elizabeth Hanes Perry, Brian Wright, Thomas Pfaeffle
Trường học Oracle Corporation
Chuyên ngành Database and Java Application Development
Thể loại Sách hướng dẫn
Năm xuất bản 2010
Thành phố Redwood City
Định dạng
Số trang 486
Dung lượng 6,88 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

The following documents are from the Oracle Server Technologies group: ■ Oracle Database Advanced Application Developer's Guide ■ Oracle Database PL/SQL Packages and Types Reference ■

Trang 2

Oracle Database JDBC Developer's Guide and Reference, 10g Release 2 (10.2)

B14355-04

Copyright © 1999, 2010, Oracle and/or its affiliates All rights reserved.

Primary Author: Venkatasubramaniam Iyer, Elizabeth Hanes Perry, Brian Wright, Thomas Pfaeffle Contributing Author: Brian Martin

Contributor: Kuassi Mensah, Magdi Morsi, Ron Peterson, Ekkehard Rohwedder, Ashok Shivarudraiah, Catherine Wong, Ed Shirk, Tong Zhou, Longxing Deng, Jean de Lavarene, Rosie Chen, Sunil Kunisetty, Joyce Yang, Mehul Bastawala, Luxi Chidambaran, Srinath Krishnaswamy, Rajkumar Irudayaraj, Scott Urman, Jerry Schwarz, Steve Ding, Soulaiman Htite, Douglas Surber, Anthony Lai, Paul Lo, Prabha Krishna, Ellen Siegal, Susan Kraft, Sheryl Maring, Angie Long

This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.

The information contained herein is subject to change without notice and is not warranted to be error-free If you find any errors, please report them to us in writing.

If this software or related documentation is delivered to the U.S Government or anyone licensing it on behalf of the U.S Government, the following notice is applicable:

U.S GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007) Oracle USA, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

This software is developed for general use in a variety of information management applications It is not developed or intended for use in any inherently dangerous applications, including applications which may create a risk of personal injury If you use this software in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure the safe use

of this software Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software in dangerous applications.

Oracle is a registered trademark of Oracle Corporation and/or its affiliates Other names may be trademarks

of their respective owners.

This software and documentation may provide access to or information on content, products, and services from third parties Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services.

Trang 3

Contents

Preface xix

Audience xix

Documentation Accessibility xix

Related Documents xx

Conventions xxii

Part I Overview

1 Introducing JDBC

Overview of JDBC 1-1 Overview of the Oracle JDBC Drivers 1-1 Common Features of Oracle JDBC Drivers 1-2 JDBC Thin Driver 1-3 JDBC OCI Driver 1-3 JDBC Server-Side Thin Driver 1-3 JDBC Server-Side Internal Driver 1-4 Choosing the Appropriate Driver 1-4 Feature Differences Between JDBC OCI and Thin Drivers 1-5

Overview of Application and Applet Functionality 1-5 Applet Basics 1-5 Oracle Extensions 1-6

Server-Side Basics 1-6

Environments and Support 1-7 Supported JDK and JDBC Versions 1-7 JNI and Java Environments 1-7 JDBC and IDEs 1-7

Changes At This Release 1-7 New Features 1-7 Desupported Features 1-9 Interface Changes 1-9

Feature List 1-10

2 Getting Started

Compatibilities for Oracle JDBC Drivers 2-1 Verifying a JDBC Client Installation 2-1

Trang 4

Checking Installed Directories and Files 2-2Checking the Environment Variables 2-3Ensuring that the Java Code Can Be Compiled and Run 2-4Determining the Version of the JDBC Driver 2-4Testing JDBC and the Database Connection 2-5

3 Basic Features

Basic Steps in JDBC 3-1Importing Packages 3-2Opening a Connection to a Database 3-2Creating a Statement Object 3-3Running a Query and Retrieving a ResultSet Object 3-3Processing the ResultSet Object 3-3Closing the ResultSet and Statement Objects 3-4Making Changes to the Database 3-4Committing Changes 3-5Closing the Connection 3-5

Sample: Connecting, Querying, and Processing the Results 3-6 Stored Procedure Calls in JDBC Programs 3-6

PL/SQL Stored Procedures 3-6Java Stored Procedures 3-7

Processing SQL Exceptions 3-7

Part II Oracle JDBC

4 JDBC Standards Support

Introduction 4-1 JDBC 2.0 Support: JDK 1.2.x and Later Versions 4-1

Data Type Support 4-2Standard Feature Support 4-2Extended Feature Support 4-2Standard versus Oracle Performance Enhancement APIs 4-2

JDBC 3.0 Support: JDK 1.4 and Previous Releases 4-2

Overview of Supported JDBC 3.0 Features 4-3

Transaction Savepoints 4-3

Creating a Savepoint 4-4Rolling back to a Savepoint 4-4Releasing a Savepoint 4-4Checking Savepoint Support 4-5Savepoint Notes 4-5Savepoint Interfaces 4-5Pre-JDK1.4 Savepoint Support 4-6

Retrieval of Auto-Generated Keys 4-6

java.sql.DatabaseMetaData 4-6java.sql.Statement 4-6java.sql.Connection 4-7

Trang 5

Introduction to Oracle Extensions 5-1

Support Features of the Oracle Extensions 5-1Support for Oracle Data Types 5-2Support for Oracle Objects 5-2Support for Schema Naming 5-3DML Returning 5-4Accessing PL/SQL Index-by Tables 5-4

Oracle JDBC Packages 5-4

Package oracle.sql 5-4Package oracle.jdbc 5-10

Oracle Character Data Types Support 5-10SQL CHAR Data Types 5-10SQL NCHAR Data Types 5-10Class oracle.sql.CHAR 5-11

Additional Oracle Type Extensions 5-13Oracle ROWID Type 5-14Oracle REF CURSOR Type Category 5-15Oracle BINARY_FLOAT and BINARY_DOUBLE Types 5-16The oracle.jdbc Package 5-17Interface oracle.jdbc.OracleConnection 5-18Interface oracle.jdbc.OracleStatement 5-19Interface oracle.jdbc.OraclePreparedStatement 5-20Interface oracle.jdbc.OracleCallableStatement 5-21Interface oracle.jdbc.OracleResultSet 5-23Interface oracle.jdbc.OracleResultSetMetaData 5-24Class oracle.jdbc.OracleTypes 5-24Method getJavaSqlConnection 5-25

DML Returning 5-26Oracle-Specific APIs 5-27Running DML Returning Statements 5-27Example of DML Returning 5-28Limitations of DML Returning 5-29

Accessing PL/SQL Index-by Tables 5-29Overview 5-29Binding IN Parameters 5-30Receiving OUT Parameters 5-31Type Mappings 5-33

6 Features Specific to JDBC Thin

Introduction to JDBC Thin Client 6-1 Additional Features Supported 6-1

Trang 6

Support for Applets 6-2Default Support for Native XA 6-2

JDBC in Applets 6-2Connecting to the Database through the Applet 6-2Connecting to a Database on a Different Host Than the Web Server 6-3Using the Oracle Connection Manager 6-3Using Signed Applets 6-5Using Applets with Firewalls 6-6Configuring a Firewall for Applets that use the JDBC Thin Driver 6-6Writing a URL to Connect through a Firewall 6-7Packaging Applets 6-8Specifying an Applet in an HTML Page 6-8CODE, HEIGHT, and WIDTH 6-8CODEBASE 6-9ARCHIVE 6-9

7 Features Specific to JDBC OCI

OCI Connection Pooling 7-1 Transparent Application Failover 7-1

OCI Native XA 7-1

OCI Instant Client 7-1Overview of Instant Client 7-2Benefits of Instant Client 7-2JDBC OCI Instant Client Installation Process 7-3Usage of Instant Client 7-4Patching Instant Client Shared Libraries 7-4Regeneration of Data Shared Library and ZIP files 7-5Database Connection Names for OCI Instant Client 7-5Environment Variables for OCI Instant Client 7-7

Instant Client Light (English) 7-8Globalization Settings 7-9Operation 7-9Installation 7-10

8 Server-Side Internal Driver

Introduction 8-1 Connecting to the Database 8-1 Exception-Handling Extensions 8-3

Session and Transaction Context 8-4 Testing JDBC on the Server 8-4

Loading an Application into the Server 8-5 Server-Side Character Set Conversion of oracle.sql.CHAR Data 8-6

Part III Connection and Security

Trang 7

Database URLs and Database Specifiers 9-13

10 JDBC Client-Side Security Features

Support for Oracle Advanced Security 10-1JDBC OCI Driver Support for Oracle Advanced Security 10-1JDBC Thin Driver Support for Oracle Advanced Security 10-2

Support for Login Authentication 10-2

Support for Data Encryption and Integrity 10-2

JDBC OCI Driver Support for Encryption and Integrity 10-3JDBC Thin Driver Support for Encryption and Integrity 10-4Setting Encryption and Integrity Parameters in Java 10-5

Secure External Password Store 10-7

11 SSL Support

Overview of SSL 11-1 Java Version of SSL 11-1 SSL in JDBC 11-2Non-JSSE Related Properties 11-2JSSE Related Properties 11-4Enabling SSL 11-5

12 Proxy Authentication

Need for Proxy Authentication 12-1 Creating Proxy Connections 12-2 Caching Proxy Connections 12-3

Part IV Data Access and Manipulation

13 Accessing and Manipulating Oracle Data

Data Type Mappings 13-1

Table of Mappings 13-1Notes Regarding Mappings 13-3

Data Conversion Considerations 13-3

Trang 8

Standard Types Versus Oracle Types 13-4Converting SQL NULL Data 13-4Testing for NULLs 13-4

Result Set and Statement Extensions 13-5

Comparison of Oracle get and set Methods to Standard JDBC 13-5Standard getObject Method 13-6Oracle getOracleObject Method 13-6Summary of getObject and getOracleObject Return Types 13-7Other getXXX Methods 13-9Return Types of getXXX Methods 13-9Special Notes about getXXX Methods 13-11Data Types For Returned Objects from getObject and getXXX 13-11The setObject and setOracleObject Methods 13-12Other setXXX Methods 13-13Input Parameter Types of setXXX Methods 13-13Setter Method Size Limitations 13-15Setter Methods That Take Additional Input 13-15Method setFixedCHAR for Binding CHAR Data into WHERE Clauses 13-16

Using Result Set Meta Data Extensions 13-17

14 Java Streams in JDBC

Overview 14-1

Streaming LONG or LONG RAW Columns 14-2LONG RAW Data Conversions 14-2LONG Data Conversions 14-2Streaming Example for LONG RAW Data 14-3Avoiding Streaming for LONG or LONG RAW 14-5

Streaming CHAR, VARCHAR, or RAW Columns 14-5

Streaming LOBs and External Files 14-6

Data Streaming and Multiple Columns 14-7 Closing a Stream 14-8 Notes and Precautions on Streams 14-8

Streaming Data Precautions 14-8Using Streams to Avoid Limits on setBytes and setString 14-9Streaming and Row Prefetching 14-9

15 Working with Oracle Object Types

Mapping Oracle Objects 15-1

Using the Default STRUCT Class for Oracle Objects 15-2STRUCT Class Functionality 15-2Retrieving STRUCT Objects and Attributes 15-3Creating STRUCT Objects and Descriptors 15-5Binding STRUCT Objects into Statements 15-7STRUCT Automatic Attribute Buffering 15-7

Creating and Using Custom Object Classes for Oracle Objects 15-8Relative Advantages of ORAData versus SQLData 15-9Understanding Type Maps for SQLData Implementations 15-9

Trang 9

Creating Type Map and Defining Mappings for a SQLData Implementation 15-10Adding Entries to an Existing Type Map 15-10Creating a New Type Map 15-11Materializing Object Types not Specified in the Type Map 15-11Understanding the SQLData Interface 15-12Reading and Writing Data with a SQLData Implementation 15-13Understanding the ORAData Interface 15-16Reading and Writing Data with a ORAData Implementation 15-17Additional Uses for ORAData 15-20The Deprecated CustomDatum Interface 15-20

Object-Type Inheritance 15-21Creating Subtypes 15-21Implementing Customized Classes for Subtypes 15-22Use of ORAData for Type Inheritance Hierarchy 15-22Use of SQLData for Type Inheritance Hierarchy 15-25JPublisher Utility 15-27Retrieving Subtype Objects 15-27Creating Subtype Objects 15-29Sending Subtype Objects 15-30Accessing Subtype Data Fields 15-30Inheritance Meta Data Methods 15-31

Using JPublisher to Create Custom Object Classes 15-32JPublisher Functionality 15-32JPublisher Type Mappings 15-33

Describing an Object Type 15-35Functionality for Getting Object Meta Data 15-35Steps for Retrieving Object Meta Data 15-36

16 Working with LOBs and BFILEs

Oracle Extensions for LOBs and BFILEs 16-1 Working with BLOBs and CLOBs 16-2

Getting and Passing BLOB and CLOB Locators 16-2Retrieving BLOB and CLOB Locators 16-2Passing BLOB and CLOB Locators 16-3Reading and Writing BLOB and CLOB Data 16-4Creating and Populating a BLOB or CLOB Column 16-7Accessing and Manipulating BLOB and CLOB Data 16-8Additional BLOB and CLOB Features 16-9

Data Interface for LOBs 16-12

Working With Temporary LOBs 16-14

Using Open and Close With LOBs 16-16

Working with BFILEs 16-16Getting and Passing BFILE Locators 16-16Reading BFILE Data 16-18Creating and Populating a BFILE Column 16-19Accessing and Manipulating BFILE Data 16-20Additional BFILE Features 16-21

Trang 10

17 Using Oracle Object References

Oracle Extensions for Object References 17-1 Overview of Object Reference Functionality 17-2Object Reference Getter and Setter Methods 17-2Key REF Class Methods 17-2

Retrieving and Passing an Object Reference 17-3

Retrieving an Object Reference from a Result Set 17-3Retrieving an Object Reference from a Callable Statement 17-4Passing an Object Reference to a Prepared Statement 17-4

Accessing and Updating Object Values through an Object Reference 17-5

Custom Reference Classes with JPublisher 17-5

18 Working with Oracle Collections

Oracle Extensions for Collections 18-1Choices in Materializing Collections 18-1Creating Collections 18-2Creating Multilevel Collection Types 18-3

Overview of Collection Functionality 18-3

Array Getter and Setter Methods 18-3ARRAY Descriptors and ARRAY Class Functionality 18-4

ARRAY Performance Extension Methods 18-5Accessing oracle.sql.ARRAY Elements as Arrays of Java Primitive Types 18-5ARRAY Automatic Element Buffering 18-6ARRAY Automatic Indexing 18-6

Creating and Using Arrays 18-7Creating ARRAY Objects and Descriptors 18-7Retrieving an Array and Its Elements 18-10Retrieving the Array 18-10Data Retrieval Methods 18-11Comparing the Data Retrieval Methods 18-12Retrieving Elements of a Structured Object Array According to a Type Map 18-12Retrieving a Subset of Array Elements 18-13Retrieving Array Elements into an oracle.sql.Datum Array 18-13Accessing Multilevel Collection Elements 18-14Passing Arrays to Statement Objects 18-15

Using a Type Map to Map Array Elements 18-16

Custom Collection Classes with JPublisher 18-18

19 Result Set

Overview 19-1Result Set Functionality and Result Set Categories Supported in JDBC 2.0 19-1Oracle JDBC Implementation Overview for Result Set Enhancements 19-3

Creating Scrollable or Updatable Result Sets 19-5Specifying Result Set Scrollability and Updatability 19-5Result Set Limitations and Downgrade Rules 19-6

Positioning and Processing in Scrollable Result Sets 19-8

Trang 11

Fetch Size 19-15Setting the Fetch Size 19-15Use of Standard Fetch Size versus Oracle Row-Prefetch Setting 19-16

Refetching Rows 19-16 Seeing Database Changes Made Internally and Externally 19-17

Seeing Internal Changes 19-17Seeing External Changes 19-18Visibility versus Detection of External Changes 19-18Summary of Visibility of Internal and External Changes 19-19Oracle Implementation of Scroll-Sensitive Result Sets 19-19

Summary of New Methods for Result Set Enhancements 19-20

Modified Connection Methods 19-20New Result Set Methods 19-20Statement Methods 19-22Database Meta Data Methods 19-22

Overview 20-1RowSet Properties 20-2Events and Event Listeners 20-2Command Parameters and Command Execution 20-4Traversing RowSets 20-4

CachedRowSet 20-6

JDBCRowSet 20-8

WebRowSet 20-9 FilteredRowSet 20-11

JoinRowSet 20-13

21 Globalization Support

Providing Globalization Support 21-1

NCHAR, NVARCHAR2, NCLOB and the defaultNChar Property 21-2

Part V Performance Enhancements

22 Statement Caching

About Statement Caching 22-1Basics of Statement Caching 22-1Implicit Statement Caching 22-2Explicit Statement Caching 22-2

Trang 12

Using Statement Caching 22-3Enabling and Disabling Statement Caching 22-4Physically Closing a Cached Statement 22-5Using Implicit Statement Caching 22-5Using Explicit Statement Caching 22-6

23 Implicit Connection Caching

The Implicit Connection Cache 23-2 Using the Connection Cache 23-3Turning Caching On 23-3Opening a Connection 23-4Setting Connection Cache Name 23-4Setting Connection Cache Properties 23-5Closing A Connection 23-5Implicit Connection Cache Example 23-5

Connection Attributes 23-6Getting Connections 23-6Setting Connection Attributes 23-7Checking Attributes of a Returned Connection 23-8Connection Attribute Example 23-8

Connection Cache Properties 23-8Limit Properties 23-9TIMEOUT Properties 23-9Other Properties 23-10Connection Property Example 23-11

Connection Cache Manager API 23-11createCache 23-12disableCache 23-12enableCache 23-13existsCache 23-13getCacheNameList 23-13getCacheProperties 23-13getNumberOfActiveConnections 23-13getNumberOfAvailableConnections 23-13isFatalConnectionError 23-14purgeCache 23-14refreshCache 23-14reinitializeCache 23-14removeCache 23-15setConnectionPoolDataSource 23-15Example Of ConnectionCacheManager Use 23-15

Advanced Topics 23-16

Attribute Weights And Connection Matching 23-16Connection Cache Callbacks 23-16Use Cases for TimeToLiveTimeout and AbandonedConnectionTimeout 23-17

Trang 13

24 Run-Time Connection Load Balancing

Overview 24-1

Run-Time Connection Load Balancing 24-1

Enabling Run-Time Connection Load Balancing 24-2

25 Performance Extensions

Update Batching 25-1Overview of Update Batching Models 25-2Oracle Update Batching 25-3Standard Update Batching 25-8Premature Batch Flush 25-13

Additional Oracle Performance Extensions 25-14Oracle Row Prefetching 25-15Setting the Oracle Prefetch Value 25-15Oracle Row-Prefetching Limitations 25-17Defining Column Types 25-17DatabaseMetaData TABLE_REMARKS Reporting 25-20

26 OCI Connection Pooling

OCI Driver Connection Pooling: Background 26-1 OCI Driver Connection Pooling and Shared Servers Compared 26-2

Defining an OCI Connection Pool 26-2 Connecting to an OCI Connection Pool 26-6 Sample Code for OCI Connection Pooling 26-7

Statement Handling and Caching 26-9 JNDI and the OCI Connection Pool 26-10

Part VI High Availability

27 Fast Connection Failover

Introduction 27-1 Using Fast Connection Failover 27-2

Fast Connection Failover Prerequisites 27-2Configuring ONS For Fast Connection Failover 27-2ONS Configuration File 27-2Client-Side ONS Configuration 27-4Server-Side ONS Configuration Using racgons 27-4Remote ONS Subscription 27-5Enabling Fast Connection Failover 27-6Querying Fast Connection Failover Status 27-7

Understanding Fast Connection Failover 27-7What The Application Sees 27-7How It Works 27-7

Comparison of Fast Connection Failover and TAF 27-8

Trang 14

28 Transparent Application Failover

Overview 28-1

Failover Type Events 28-1 TAF Callbacks 28-2

Java TAF Callback Interface 28-2

Part VII Transaction Management

29 Distributed Transactions

Overview 29-1Distributed Transaction Components and Scenarios 29-2Distributed Transaction Concepts 29-2Switching Between Global and Local Transactions 29-4Oracle XA Packages 29-5

XA Components 29-6

XADatasource Interface and Oracle Implementation 29-6XAConnection Interface and Oracle Implementation 29-6XAResource Interface and Oracle Implementation 29-7OracleXAResource Method Functionality and Input Parameters 29-8Xid Interface and Oracle Implementation 29-12

Error Handling and Optimizations 29-13

XAException Classes and Methods 29-13Mapping between Oracle Errors and XA Errors 29-14

XA Error Handling 29-14Oracle XA Optimizations 29-14

Implementing a Distributed Transaction 29-15Summary of Imports for Oracle XA 29-15Oracle XA Code Sample 29-15

Native-XA in Oracle JDBC Drivers 29-19

OCI Native XA 29-20Thin Native XA 29-21

Part VIII Manageability

30 End-To-End Metrics Support

Introduction 30-1 JDBC API For End-To-End Metrics 30-2

Part IX Appendixes

A Reference Information

Valid SQL-JDBC Data Type Mappings A-1 Supported SQL and PL/SQL Data Types A-3 Embedded JDBC escape sequence Syntax A-6Time and Date Literals A-7

Trang 15

Scalar Functions A-8LIKE Escape Characters A-9Outer Joins A-9Function Call Syntax A-9JDBC Escape Syntax to Oracle SQL Syntax Example A-10

Oracle JDBC Notes and Limitations A-10

CursorName A-11JDBC Outer Join Escapes A-11PL/SQL TABLE, BOOLEAN, and RECORD Types A-11IEEE 754 Floating Point Compliance A-11Catalog Arguments to DatabaseMetaData Calls A-12SQLWarning Class A-12Binding Named Parameters A-12

B Coding Tips

JDBC and Multithreading B-1

Performance Optimization B-1Disabling Auto-Commit Mode B-1Standard Fetch Size and Oracle Row Prefetching B-2Standard and Oracle Update Batching B-2Statement Caching B-3Mapping Between Built-in SQL and Java Types B-3

Transaction Isolation Levels and Access Modes B-4

C JDBC Error Messages

General Structure of JDBC Error Messages C-1

General JDBC Messages C-1JDBC Messages Sorted by ORA Number C-2JDBC Messages Sorted in Alphabetic Order C-5

Native XA Messages C-9Native XA Messages Sorted by ORA Number C-9Native XA Messages Sorted in Alphabetic Order C-9

TTC Messages C-10TTC Messages Sorted by ORA Number C-10TTC Messages Sorted in Alphabetic Order C-11

D Troubleshooting

Common Problems D-1

Memory Consumption for CHAR Columns Defined as OUT or IN/OUT Variables D-1Memory Leaks and Running Out of Cursors D-2Boolean Parameters in PL/SQL Stored Procedures D-2Opening More Than 16 OCI Connections for a Process D-2Using statement.cancel D-3Using JDBC with Firewalls D-3

Basic Debugging Procedures D-4Oracle Net Tracing to Trap Network Events D-4

Trang 16

Client-Side Tracing D-4TRACE_LEVEL_CLIENT D-4TRACE_DIRECTORY_CLIENT D-5TRACE_FILE_CLIENT D-5TRACE_UNIQUE_CLIENT D-5Server-Side Tracing D-6TRACE_LEVEL_SERVER D-6TRACE_DIRECTORY_SERVER D-6TRACE_FILE_SERVER D-6Third Party Debugging Tools D-6

Index

Trang 17

xvii

Trang 18

List of Tables

1–1 Feature Differences Between JDBC OCI and JDBC Thin Drivers 1-51–2 Feature List 1-103–1 Import Statements for JDBC Driver 3-24–1 JDBC 3.0 Feature Support 4-34–2 Key Areas of JDBC 3.0 Functionality 4-34–3 BLOB Method Equivalents 4-84–4 CLOB Method Equivalents 4-85–1 Oracle Data Type Classes 5-55–2 Key Interfaces and Classes of the oracle.jdbc Package 5-175–3 PL/SQL Types and Corresponding JDBC Types 5-295–4 Arguments of the setPlsqlIndexTable Method 5-305–5 Arguments of the registerIndexTableOutParameter Method 5-325–6 Argument of the getPlsqlIndexTable Method 5-335–7 Argument of the getOraclePlsqlIndexTable Method 5-345–8 Arguments of the getPlsqlIndexTable Method 5-347–1 OCI Instant Client Shared Libraries 7-27–2 Data Shared Library for Instant Client and Instant Client Light (English) 7-89–1 Standard Data Source Properties 9-39–2 Oracle Extended Data Source Properties 9-49–3 Connection Properties Recognized by Oracle JDBC Drivers 9-89–4 Supported Database Specifiers 9-1410–1 Client/Server Negotiations for Encryption or Integrity 10-310–2 OCI Driver Client Parameters for Encryption and Integrity 10-410–3 Thin Driver Client Parameters for Encryption and Integrity 10-413–1 Default Mappings Between SQL Types and Java Types 13-213–2 getObject and getOracleObject Return Types 13-713–3 Summary of getXXX Return Types 13-1013–4 Summary of setXXX Input Parameter Types 13-1313–5 Size Limitations for setBytes and setString Methods 13-1514–1 LONG and LONG RAW Data Conversions 14-315–1 JPublisher SQL Type Categories, Supported Settings, and Defaults 15-3519–1 Visibility of Internal and External Changes for Oracle JDBC 19-1920–1 The JDBC and Cached Row Sets Compared 20-922–1 Comparing Methods Used in Statement Caching 22-322–2 Methods Used in Statement Allocation and Implicit Statement Caching 22-622–3 Methods Used to Retrieve Explicitly Cached Statements 22-825–1 Valid Column Type Specifications 25-1927–1 onsctl commands 27-429–1 Connection Mode Transitions 29-429–2 Oracle-XA Error Mapping 29-1430–1 Maximum Lengths for End-to-End Metrics 30-1A–1 Valid SQL Data Type-Java Class Mappings A-1A–2 Support for SQL Data Types A-3A–3 Support for ANSI-92 SQL Data Types A-4A–4 Support for SQL User-Defined Types A-4A–5 Support for PL/SQL Data Types A-5B–1 Mapping of SQL Data Types to Java Classes that Represent SQL Data Types B-3

Trang 19

Preface

This preface introduces you to the Oracle Database JDBC Developer's Guide and Reference

discussing the intended audience, structure, and conventions of this document A list

of related Oracle documents is also provided

Audience

The Oracle Database JDBC Developer's Guide and Reference is intended for developers of

Java Database Connectivity (JDBC)-based applications and applets This book can be read by anyone with an interest in JDBC programming, but assumes at least some prior knowledge of the following:

technology vendors to address technical obstacles so that our documentation can be accessible to all of our customers For more information, visit the Oracle Accessibility Program Web site at http://www.oracle.com/accessibility/

Accessibility of Code Examples in Documentation

Screen readers may not always correctly read the code examples in this document The conventions for writing code require that closing braces should appear on an

otherwise empty line; however, some screen readers may not always read a line of text that consists solely of a bracket or brace

Accessibility of Links to External Web Sites in Documentation

This documentation may contain links to Web sites of other companies or organizations that Oracle does not own or control Oracle neither evaluates nor makes any representations regarding the accessibility of these Web sites

Trang 20

Deaf/Hard of Hearing Access to Oracle Support Services

To reach Oracle Support Services, use a telecommunications relay service (TRS) to call Oracle Support at 1.800.223.1711 An Oracle Support Services engineer will handle technical issues and provide customer support according to the Oracle service request process Information about TRS is available at

http://www.fcc.gov/cgb/consumerfacts/trs.html, and a list of phone numbers is available at http://www.fcc.gov/cgb/dro/trsphonebk.html

Related Documents

The following books are also available from the Oracle Java Platform group:

Oracle Database Java Developer's Guide

This book introduces the basic concepts of Java and provides general information about server-side configuration and functionality Information that pertains to the Oracle Java platform as a whole, rather than to a particular product (such as JDBC)

is in this book This book also discusses Java stored procedures, which were formerly discussed in a standalone book

Oracle Database JPublisher User's Guide

This book describes how to use the Oracle JPublisher utility to translate object types and other user-defined types to Java classes If you are developing JDBC applications that use object types, VARRAY types, nested table types, or object reference types, then JPublisher can generate custom Java classes to map to them The following OC4J documents, for Oracle Application Server releases, are also available from the Oracle Java Platform group:

Oracle Application Server Containers for J2EE User's Guide

This book provides some overview and general information for OC4J; primer chapters for servlets, JSP pages, and EJBs; and general configuration and deployment instructions

Oracle Application Server Containers for J2EE Support for JavaServer Pages Developer's Guide

This book provides information for JSP developers who want to run their pages in OC4J It includes a general overview of JSP standards and programming

considerations, as well as discussion of Oracle value-added features and steps for getting started in the OC4J environment

Oracle Application Server Containers for J2EE JSP Tag Libraries and Utilities Reference

This book provides conceptual information and detailed syntax and usage information for tag libraries, JavaBeans, and other Java utilities provided with OC4J

Oracle Application Server Containers for J2EE Servlet Developer's Guide

This book provides information for servlet developers regarding use of servlets and the servlet container in OC4J It also documents relevant OC4J configuration files

Oracle Application Server Containers for J2EE Services Guide

This book provides information about basic Java services supplied with OC4J, such as JTA, JNDI, and the Oracle Application Server Java Object Cache

Oracle Application Server Containers for J2EE Enterprise JavaBeans Developer's Guide

Trang 21

This book provides information about the EJB implementation and EJB container

in OC4J

The following documents are from the Oracle Server Technologies group:

Oracle Database Advanced Application Developer's Guide

Oracle Database PL/SQL Packages and Types Reference

Oracle Database PL/SQL Language Reference

Oracle Database SQL Language Reference

Oracle Database Net Services Administrator's Guide

Oracle Database Advanced Security Administrator's Guide

Oracle Database Reference

Oracle Database Error Messages

The following documents from the Oracle Application Server group may also be of some interest:

Oracle Application Server 10g Administrator's Guide

Oracle HTTP Server Administrator's Guide

Oracle Application Server 10g Performance Guide

Oracle Application Server 10g Globalization Guide

Oracle Application Server Web Cache Administrator's Guide

Oracle Application Server 10g Upgrading to 10g (9.0.4)

The following are available from the JDeveloper group:

■ Oracle JDeveloper online help

■ Oracle JDeveloper documentation on the Oracle Technology Network:

http://otn.oracle.com/membership/

If you already have a user name and password for OTN, then you can go directly to the documentation section of the OTN Web site at

http://otn.oracle.com/documentation/

The following resources are available from Sun Microsystems:

■ Web site for JDBC, including the latest specifications:

http://java.sun.com/products/jdbc/

■ jdbc-interest discussion group for JDBC

To subscribe, send an e-mail to listserv@java.sun.com with the following line in the body of the message:

subscribe jdbc-interest yourlastname yourfirstname

Trang 22

We recommend that you request only the daily digest of the posted e-mails To do this add the following line to the message body as well:

set jdbc-interest digest

Conventions

This section describes the conventions used in the text and code examples of this documentation set It describes:

■ Conventions in Text

■ Conventions in Code Examples

■ Conventions for Windows Operating Systems

Conventions in Text

We use various conventions in text to help you more quickly identify special terms The following table describes those conventions and provides examples of their use

Bold Bold typeface indicates terms that are

defined in the text or terms that appear in a glossary, or both

When you specify this clause, you create an

index-organized table

Italics Italic typeface indicates book titles or

emphasis

Oracle Database Concepts

Ensure that the recovery catalog and target

database do not reside on the same disk.

system-supplied column names, database objects and structures, user names, and roles

You can specify this clause only for a NUMBER

column

You can back up the database by using the

BACKUP command

Query the TABLE_NAME column in the

USER_TABLES data dictionary view

Use the DBMS_STATS.GENERATE_STATS

Note: Some programmatic elements use a mixture of UPPERCASE and lowercase

Enter these elements as shown

Enter sqlplus to start SQL*Plus

The password is specified in the orapwd file.Back up the datafiles and control files in the

/disk1/oracle/dbs directory

The department_id, department_name, and

location_id columns are in the

You can specify the parallel_clause.

Run old_release.SQL where old_release

refers to the release you installed prior to upgrading

Trang 23

Conventions in Code Examples

Code examples illustrate Java, SQL, and command-line statements Examples are displayed in a monospace (fixed-width) font and separated from normal text as shown

in this example:

SELECT username FROM dba_users WHERE username = 'MIGRATE';

The following table describes typographic conventions used in code examples and provides examples of their use

[ ] Brackets enclose one or more optional

items Do not enter the brackets

DECIMAL (digits [ , precision ])

{ } Braces enclose two or more items, one of

which is required Do not enter the braces

{ENABLE | DISABLE}

| A vertical bar represents a choice of two or

more options within brackets or braces

Enter one of the options Do not enter the vertical bar

{ENABLE | DISABLE}

[COMPRESS | NOCOMPRESS]

Horizontal ellipsis points indicate either:

■ That we have omitted parts of the code that are not directly related to the example

■ That you can repeat a portion of the code

CREATE TABLE AS subquery;SELECT col1, col2, , coln FROM employees;

SQL> SELECT NAME FROM V$DATAFILE;

NAME -/fsl/dbs/tbs_01.dbf

/fs1/dbs/tbs_02.dbf

/fsl/dbs/tbs_09.dbf

9 rows selected

Other notation You must enter symbols other than

brackets, braces, vertical bars, and ellipsis points as shown

acctbal NUMBER(11,2);

acct CONSTANT NUMBER(4) := 3;

Italics Italicized text indicates placeholders or

variables for which you must supply particular values

CONNECT SYSTEM/system_password

DB_NAME = database_name

UPPERCASE Uppercase typeface indicates elements

supplied by the system We show these terms in uppercase in order to distinguish them from terms you define Unless terms appear in brackets, enter them in the order and with the spelling shown However, because these terms are not case sensitive, you can enter them in lowercase

SELECT last_name, employee_id FROM employees;

SELECT * FROM USER_TABLES;

DROP TABLE hr.employees;

Trang 24

Conventions for Windows Operating Systems

The following table describes conventions for Windows operating systems and provides examples of their use

lowercase Lowercase typeface indicates

programmatic elements that you supply

For example, lowercase indicates names of tables, columns, or files

Note: Some programmatic elements use a mixture of UPPERCASE and lowercase

Enter these elements as shown

SELECT last_name, employee_id FROM employees;

sqlplus hr/hrCREATE USER mjones IDENTIFIED BY ty3MU9;

Choose Start > How to start a program To start the Database Configuration Assistant,

choose Start > Programs > Oracle -

HOME_NAME > Configuration and Migration

Tools > Database Configuration Assistant.File and directory

names

File and directory names are not case sensitive The following special characters are not allowed: left angle bracket (<), right angle bracket (>), colon (:), double

quotation marks ("), slash (/), pipe (|), and dash (-) The special character backslash (\)

is treated as an element separator, even when it appears in quotes If the file name begins with \\, then Windows assumes it uses the Universal Naming Convention

c:\winnt"\"system32 is the same as C:\WINNT\SYSTEM32

C:\> Represents the Windows command

prompt of the current hard disk drive The escape character in a command prompt is the caret (^) Your prompt reflects the subdirectory in which you are working

Referred to as the command prompt in this

manual

C:\oracle\oradata>

Special characters The backslash (\) special character is

sometimes required as an escape character for the double quotation mark (") special character at the Windows command prompt Parentheses and the single quotation mark (') do not require an escape character Refer to your Windows

operating system documentation for more information on escape and special characters

C:\>exp scott/tiger TABLES=emp QUERY=\"WHERE job='SALESMAN' and sal<1600\"

C:\>imp SYSTEM/password FROMUSER=scott TABLES=(emp, dept)

HOME_NAME Represents the Oracle home name The

home name can be up to 16 alphanumeric characters The only special character allowed in the home name is the underscore

C:\> net start OracleHOME_NAMETNSListener

Trang 25

ORACLE_HOME

and

ORACLE_BASE

In releases prior to Oracle8i release 8.1.3,

when you installed Oracle components, all subdirectories were located under a top

level ORACLE_HOME directory that by

default used one of the following names:

■ C:\orant for Windows NT

■ C:\orawin98 for Windows 98This release complies with Optimal Flexible Architecture (OFA) guidelines All subdirectories are not under a top level

ORACLE_HOME directory There is a top

level directory called ORACLE_BASE that

by default is C:\oracle If you install the latest Oracle release on a computer with no other Oracle software installed, then the default setting for the first Oracle home directory is C:\oracle\orann , where nn

is the latest release number The Oracle home directory is located directly under

ORACLE_BASE.All directory path examples in this guide follow OFA conventions

Refer to Oracle Database Platform Guide for Microsoft Windows for additional

information about OFA compliances and for information about installing Oracle products in non-OFA compliant directories

Trang 27

Part I

Overview

This part consists of chapters that introduce the concept of Java Database Connectivity (JDBC) and provide an overview of the Oracle implementation of JDBC It provides basic information on installation and configuration of Oracle client with reference to JDBC drivers It also includes chapters that cover the basic steps in creating and running any JDBC application

Part I contains the following chapters:

■ Chapter 1, "Introducing JDBC"

■ Chapter 2, "Getting Started"

■ Chapter 3, "Basic Features"

Trang 29

■ Overview of the Oracle JDBC Drivers

■ Overview of Application and Applet Functionality

■ Server-Side Basics

■ Environments and Support

■ Changes At This Release

Overview of JDBC

JDBC is a Java standard that provides the interface for connecting from Java to

relational databases The JDBC standard is defined by Sun Microsystems and implemented through the standard java.sql interfaces This allows individual providers to implement and extend the standard with their own JDBC drivers

JDBC is based on the X/Open SQL Call Level Interface (CLI) JDBC 4.0 complies with the SQL 2003 standard

Overview of the Oracle JDBC Drivers

In addition to supporting the standard JDBC application programming interfaces (APIs), Oracle drivers have extensions to support Oracle-specific data types and to enhance performance

Oracle provides the following JDBC drivers:

■ Thin driver

It is a pure Java driver used on the client side, without an Oracle client installation

It can be used with both applets and applications

■ Oracle Call Interface (OCI) driver

It is used on the client-side with an Oracle client installation It can be used only with applications

■ Server-side Thin driver

It is functionally similar to the client-side Thin driver However, it is used for code that runs on the database server and needs to access another session either on the same server or on a remote server on any tier

Trang 30

Overview of the Oracle JDBC Drivers

■ Server-side internal driver

It is used for code that runs on the database server and accesses the same session That is, the code runs and accesses data from a single Oracle session

Figure 1–1 illustrates the architecture of the Oracle JDBC drivers and the Oracle Database

Figure 1–1 Architecture of the Oracle JDBC Drivers and Oracle Database

This section covers the following topics:

■ Common Features of Oracle JDBC Drivers

■ JDBC Server-Side Thin Driver

■ JDBC Server-Side Internal Driver

■ Choosing the Appropriate Driver

Common Features of Oracle JDBC Drivers

The server-side and client-side Oracle JDBC drivers provide the same basic functionality

The JDBC Thin and OCI drivers support the following versions of Java Development Kit (JDK): 1.2.x, 1.3.x and 1.4.x The server-side Thin driver and server-side internal driver support JDK 1.4.1 All the JDBC drivers support the following standards and features:

■ Same syntax and APIs

■ Same Oracle extensions

■ Full support for multithreaded applications

Oracle Database JDBC Thin Driver

KPRB C Library

Oracle Database

Trang 31

Overview of the Oracle JDBC Drivers

The JDBC Thin driver allows a direct connection to the database by providing an implementation of SQL*Net on top of Java sockets The driver supports the TCP/IP protocol and requires a TNS listener on the TCP/IP sockets on the database server

JDBC OCI Driver

The JDBC OCI driver is a Type II driver used with Java applications It requires an Oracle client installation and, therefore, is Oracle platform-specific It supports all installed Oracle Net adapters, including IPC, named pipes, TCP/IP, and Internetwork Packet Exchange/Sequenced Packet Exchange (IPX/SPX)

The JDBC OCI driver, written in a combination of Java and C, converts JDBC invocations to calls to OCI, using native methods to call C-entry points These calls communicate with the database using SQL*Net

The JDBC OCI driver uses the OCI libraries, C-entry points, Oracle Net, core libraries, and other necessary files on the client computer where it is installed

OCI is an API that enables you to create applications that use the native procedures or function calls of a third-generation language to access Oracle Database and control all phases of the SQL statement processing

JDBC Server-Side Thin Driver

The JDBC server-side Thin driver offers the same functionality as the JDBC Thin driver that runs on the client side However, the JDBC server-side Thin driven runs inside the Oracle Database and accesses a remote database or a different session on the same database

This driver is useful in the following scenarios:

■ Accessing a remote database server from an Oracle Database instance acting as a middle tier

■ Accessing an Oracle Database session from inside another, such as from a Java stored procedure

The use of JDBC Thin driver from a client application or from inside a server does not affect the code

See Also: Chapter 6, "Features Specific to JDBC Thin"

See Also: Chapter 7, "Features Specific to JDBC OCI"

See Also: Chapter 6, "Features Specific to JDBC Thin"

Trang 32

Overview of the Oracle JDBC Drivers

Permission for the Server-Side Thin Driver

The JDBC server-side Thin driver opens a socket for its connection to the database Because Oracle Database enforces the Java security model, a check is performed for a

SocketPermission object

To use the JDBC server-side Thin driver, the connecting user must be granted the appropriate permission The following is an example of how the permission can be granted for the user SCOTT:

CREATE ROLE jdbcthin;

CALL dbms_java.grant_permission('JDBCTHIN', 'java.net.SocketPermission', '*', 'connect');

GRANT jdbcthin TO SCOTT;

Note that JDBCTHIN in the grant_permission call must be in uppercase The asterisk (*) is a pattern You can restrict the user by granting permission to connect to only specific computers or ports

JDBC Server-Side Internal Driver

The JDBC server-side internal driver supports any Java code that runs inside the Oracle Database, such as in a Java stored procedures or Enterprise JavaBean (EJB), and must access the same database It lets the Java virtual machine (JVM) to communicate directly with the SQL engine The driver supports only JDK 1.4.1

The JDBC server-side internal driver, the Oracle JVM, the database, and the SQL engine all run within the same address space, and therefore, the issue of network round trips is irrelevant The programs access the SQL engine by using function calls

The JDBC server-side internal driver is fully consistent with the client-side drivers and supports the same features and extensions

Choosing the Appropriate Driver

Consider the following when choosing a JDBC driver for your application or applet:

■ In general, unless you need OCI-specific features, such as support for non-TCP/IP networks, use the JDBC Thin driver

■ If you want maximum portability and performance, then use the JDBC Thin driver You can connect to the Oracle Database from either an application or an applet using the JDBC Thin driver

■ If you want to use Lightweight Directory Access Protocol (LDAP) over Secure Sockets Layer (SSL), then use the JDBC Thin driver

■ If you are writing a client application for an Oracle client environment and need OCI-driver-specific features, such as support for non-TCP/IP networks, then use the JDBC OCI driver

■ If you are writing an applet, then you must use the JDBC Thin driver

See Also: Oracle Database Java Developer's Guide

Note: The server-side internal driver does not support the

cancel and setQueryTimeout methods of the Statement class

See Also: Chapter 8, "Server-Side Internal Driver"

Trang 33

Overview of Application and Applet Functionality

Feature Differences Between JDBC OCI and Thin Drivers

Table 1–1 lists the features that are specific either to the JDBC OCI or JDBC Thin driver

in Oracle Database 10g release 2 (10.2).

Overview of Application and Applet Functionality

This section compares and contrasts the basic functionality of JDBC applications and applets It also introduces the Oracle extensions that can be used by application and applet programmers This sections covers the following topics:

■ Applet Basics

■ Oracle Extensions

Applet Basics

You can use only the Oracle JDBC Thin driver for an applet

Table 1–1 Feature Differences Between JDBC OCI and JDBC Thin Drivers

OCI connection pooling Support for appletsOCI optimized fetch Default support for Native XAClient-side object cache

Transparent Application Failover (TAF)OCI Instant Client

Instant Client Light (English)Strong authentication; Kerberos, PKI certificates

Notes:

■ The OCI optimized fetch and client-side object cache features are internal to the JDBC OCI driver and are not applicable to the JDBC Thin driver

■ Most JDBC OCI driver features are not available in the JDBC Thin driver because they are inherited from OCI

See Also:

■ Chapter 6, "Features Specific to JDBC Thin"

■ Chapter 7, "Features Specific to JDBC OCI"

See Also: "JDBC in Applets" on page 6-2

Trang 34

Server-Side Basics

Applets and Security

An applet can open network connections only to the host computer from which it was downloaded Therefore, an applet can connect only to databases on the originating computer If you want your applet to connect to a database running on a different computer, then you have the following options:

■ Use the Oracle Connection Manager on the host computer The applet can connect

to the Connection Manager, which connects to a database on another computer

■ Use signed applets, which can request socket connection privileges to other computers

Your applet can take advantage of the data encryption and integrity checksum features

of the Oracle Advanced Security option

Applets and Firewalls

An applet can connect to a database through a firewall

Packaging and Deploying Applets

To package and deploy an applet, you must place the JDBC Thin driver classes and the applet classes in the same zip file

Oracle Extensions

A number of Oracle extensions are available, which can be used by Oracle JDBC application and applet programmers These extensions include:

■ Type extensions, such as ROWID and REF CURSOR types

■ Wrapper classes for SQL types provided by the oracle.sql package

■ Support for custom Java classes to map to user-defined types

■ Extended large object (LOB) support

■ Extended connection, statement, and result set functionality

■ Performance enhancements

Server-Side Basics

By using the JDBC server-side internal driver, code that runs in the Oracle Database, such as Java stored procedures or EJBs, can access the database in which it runs

Session and Transaction Context

The JDBC server-side internal driver operates within a default session and default transaction context

See Also: "Using Applets with Firewalls" on page 6-6

See Also: "Packaging Applets" on page 6-8

See Also: Chapter 5, "Oracle Extensions" and Chapter 25,

"Performance Extensions"

See Also: Chapter 8, "Server-Side Internal Driver"

See Also: "Session and Transaction Context" on page 8-4

Trang 35

Changes At This Release

Introducing JDBC 1-7

Connecting to the Database

The JDBC server-side internal driver uses a default connection to the database You connect to the database with the OracleDataSource.getconnection method

Environments and Support

This section provides a brief discussion of the following topics:

■ Supported JDK and JDBC Versions

■ JNI and Java Environments

Supported JDK and JDBC Versions

In Oracle Database 10g release 2 (10.2), all the JDBC drivers are compatible with JDK

1.2.x and later JDK 1.0.x and JDK 1.1.x are no longer supported, and therefore, the

classes111.zip, classes111.jar, classes111_g.zip, classes111_g.jar, and nls_charset11.zip files are no longer provided

JNI and Java Environments

The JDBC OCI driver uses the standard Java Native Interface (JNI) to call OCI C libraries You can use the JDBC OCI driver with JVMs other than that of Sun Microsystems, in particular, with Microsoft and IBM JVMs

JDBC and IDEs

The Oracle JDeveloper Suite provides developers with a single, integrated set of products to build, debug, and deploy component-based database applications for the Internet The Oracle JDeveloper environment contains integrated support for JDBC, including the JDBC Thin driver and the native OCI driver The database component of Oracle JDeveloper uses the JDBC drivers to manage the connection between the application running on the client and the server

Changes At This Release

The Oracle implementation JDBC provides many enhancements in Oracle Database

10g This section gives an overview of these enhancements It is divided into the

See Also: "Connecting to the Database" on page 8-1

See Also: "Compatibilities for Oracle JDBC Drivers" on page 2-1

Trang 36

Changes At This Release

The JDBC OCI and the JDBC Thin drivers support the data manipulation language (DML) returning feature DML returning enables you to retrieve auto-generated keys along with other columns or values that your application may use

■ JSR 114 RowSets

Oracle Database 10g release 2 (10.2) provides support for all the RowSet

implementations defined in the JDBC RowSet Implementations Specification

(JSR-114) In particular, Oracle Database 10g release 2 (10.2) provides support for

WebRowSet, FilteredRowSet, and JoinRowSet

■ NCHAR literal support

Oracle Database 10g release 2 (10.2) provides the NCHAR literal support For

further information, refer to the Note in "NCHAR, NVARCHAR2, NCLOB and the defaultNChar Property" on page 21-2

ResultSet objects should be open or closed, when an implicit or explicit commit operation is performed

■ Retrieval of auto-generated keys

Oracle Database 10g release 2 (10.2) provides support for the retrieval of

auto-generated keys JDBC 3.0 standard feature This feature enables you to retrieve values that are generated by the database

■ Run-time connection load balancingThe Oracle JDBC Thin and JDBC OCI drivers support the run-time connection load balancing feature This feature enables routing of work requests to a database instance that offers the best performance, minimizing the need to relocate work

■ SSL support

Oracle Database 10g release 2 (10.2) provides support for the Secure Sockets Layer

(SSL) Protocol

See Also: "DML Returning" on page 5-4

See Also: Chapter 20, "JDBC RowSets"

See Also: Chapter 12, "Proxy Authentication"

See Also: "Result Set Holdability" on page 4-8

See Also: "Retrieval of Auto-Generated Keys" on page 4-6

See Also: Chapter 24, "Run-Time Connection Load Balancing"

See Also: Chapter 11, "SSL Support"

Trang 37

Changes At This Release

Introducing JDBC 1-9

■ XAConnection cachingThe implicit connection caching feature supports the caching of XA connections This feature is supported by both the JDBC Thin and JDBC OCI drivers

Desupported Features

No feature has been desupported in Oracle Database 10g release 2 (10.2) That is, Oracle Database 10g release 2 (10.2) supports all features that were supported in Oracle Database 10g release 1 (10.1).

Interface Changes

There are some changes in the setString, setCharacterStream,

setAsciiStream, setBytes, and setBinaryStream methods of

PreparedStatement in Oracle Database 10g release 2 (10.2).

There are three way to bind data for input:

■ Direct binding where the data itself is placed in a bind buffer

■ Stream binding where the data is streamed

■ LOB binding where a temporary lob is created, the data placed in the LOB using the LOB APIs, and the bytes of the LOB locator are placed in the bind bufferThe three kinds of binding have some differences in performance and have an impact

on batching Direct binding is fast and batching is fine Stream binding is slower, may require multiple round trips, and turns batching off LOB binding is very slow and requires many round trips Batching works, but might be a bad idea They also have different size limits, depending on the type of the SQL statement

For SQL parameters, the length of normal parameter types, such as RAW and

VARCHAR2, is fixed by the size of the target column For PL/SQL parameters, the size

is limited to a fixed number of bytes, which is 32512

The original behavior of the APIs were:

■ setString: Direct bind of characters

■ setCharacterStream: Stream bind of characters

■ setAsciiStream: Stream bind of bytes

■ setBytes: Direct bind of bytes

■ setBinaryStream: Stream bind of bytes

In Oracle Database 10g release 2 (10.2), automatic switching between binding modes,

based on the data size and on the type of the SQL statement is provided

setBytes and setBinaryStream

For SQL, direct bind is used for size up to 2000 and stream bind for largerFor PL/SQL direct bind is used for size up to 32512 and lob bind is used for larger

setString, setCharacterStream, and setAsciiStream

For SQL, direct bind is used up to 32766 Java characters and stream bind is used for larger This is independent of character set

See Also: Chapter 23, "Implicit Connection Caching"

Trang 38

Feature List

For PL/SQL, you must be careful about the byte size of the character data in the database character set or the national character set depending on the setting of the form of use parameter Direct bind is used for data where the byte length is less than

32512 and LOB bind for larger

For fixed length character sets, multiply the length of the Java character data by the fixed character size in bytes and compare that to 32512 For variable length character sets, there are three cases based on the Java character length, as follows:

■ If character length is less than 32512 divided by the maximum character size, then direct bind is used

■ If character length is greater than 32512 divided by the minimum character size, then LOB bind is used

■ If character length is in between and if the actual length of the converted bytes is less than 32512, then direct bind is used, else LOB bind is used

Feature List

Table 1–2 lists the features and the versions in which they were first supported for each

of the three Oracle JDBC drivers: server-side internal driver, JDBC OCI driver, and JDBC Thin driver

Note: When a PL/SQL procedure is embedded in a SQL statement, the binding action is different Refer to "Data Interface for LOBs" on page 16-12 for more information

Table 1–2 Feature List

Feature

Server-Side Internal JDBC OCI JDBC Thin

Trang 39

Feature List

Introducing JDBC 1-11

ConnectionCacheImpl connection cache NA 8.1.7 8.1.7

JDBC 3.0 Connection Pooling Properties NA 10.1.0 10.1.0

JDBC 3.0 Updatable BLOB, CLOB, REF 10.1.0 10.1.0 10.1.0

JDBC 3.0 Multiple Open ResultSets 10.1.0 10.1.0 10.1.0

JDBC 3.0 Local/Global Transaction Switching 9.2.0 9.2.0 9.2.0

Table 1–2 (Cont.) Feature List

Feature

Server-Side Internal JDBC OCI JDBC Thin

Trang 40

■ The ConnectionCacheImpl connection cache feature is

deprecated in Oracle Database 10g Implicit Connection Cache replaces this in Oracle Database 10g.

Table 1–2 (Cont.) Feature List

Feature

Server-Side Internal JDBC OCI JDBC Thin

Ngày đăng: 20/02/2014, 05:21

TỪ KHÓA LIÊN QUAN