 |
Oracle JDBC
updated September 18, 2007 |
This document contains answers
to the most frequently asked questions about Oracle's JDBC drivers.
Note that these address specific technical questions only and
are used to document solutions to frequent customer questions
as well as any known problems. The server docs (including JDBC
doc) are also available online.
Note that this FAQ contains information about
all released versions of the Oracle JDBC drivers. Anything that
is not described as pertaining only to certain versions should
pertain to all the versions. Or to the current version. At the
time the question was asked.
Back to Top
What
is this document?
This is the Official Oracle JDBC FAQ.
Back
to Top
Where can I find it?
You can find it on the OTN website at
http://otn.oracle.com/tech/java/sqlj_jdbc/htdocs/jdbc_faq.htm.
Back
to Top
Who maintains it?
It is maintained by the Oracle JDBC Development
Team with the invaluable assistance of other Oracle Development
Teams, the Oracle Java Platform Product Managers, and the Oracle
Support Organization.
Back
to Top
What has changed recently?
Material related to Oracle Database 11.1 was
added and older material was moved to the Version specific section.
Back
to Top
What
is JDBC?
JDBC technology is an API that lets you access
virtually any tabular data source from the Java programming language.
It provides cross-DBMS connectivity to a wide range of SQL databases,
and now, with the new JDBC API, it also provides access to other
tabular data sources, such as spreadsheets or flat files.
—From Sun's
JDBC page.
Back
to Top
Where can I learn more about JDBC?
A good place to start is Sun's JDBC
page.
There are lots of books on JDBC. A good place
to start is JDBC
API Tutorial and Reference, Third Edition.
You can find out more about Oracle's JDBC drivers
in particular from OTN's
SQLJ & JDBC pages, from Oracle's
online documentation, JDBC
Sample Code, and from books such as the highly recommended
Expert
Oracle JDBC Programming and Oracle Database Programming Using Java and Web Services.
Back
to Top
Where can I learn more about Java?
A good place to start is Sun's Java
site.
There are lots of books on Java. A few of the
more popular ones are:
Back
to Top
What
JDBC drivers does Oracle provide?
Oracle provides four different types of JDBC
drivers, for use in different deployment scenarios. The 11.1.0
drivers can access Oracle 9.0.1 and higher. While all Oracle JDBC
drivers are similar, some features apply only to JDBC OCI drivers
and some apply only to the JDBC Thin driver.
-
JDBC OCI client-side driver: This is a
JDBC Type 2 driver that uses Java native methods to call entrypoints
in an underlying C library. That C library, called OCI (Oracle
Call Interface), interacts with an Oracle database. The JDBC
OCI driver requires an Oracle client installation of the same
version as the driver.
The use of native methods makes the JDBC
OCI driver platform specific. Oracle supports Solaris, Windows,
and many other platforms. This means that the Oracle JDBC
OCI driver is not appropriate for Java applets, because it
depends on a C library.
Starting from 10.1.0, the JDBC OCI driver
is available for install with the OCI Instant Client feature,
which does not require a complete Oracle client-installation.
Please refer to Oracle
Call Interface for more information.
-
JDBC Thin client-side driver: This is a
JDBC Type 4 driver that uses Java to connect directly to Oracle.
It implements Oracle's SQL*Net Net8 and TTC adapters using
its own TCP/IP based Java socket implementation. The JDBC
Thin driver does not require Oracle client software to be
installed, but does require the server to be configured with
a TCP/IP listener.
Because it is written entirely in Java,
this driver is platform-independent. The JDBC Thin driver
can be downloaded into any browser as part of a Java application.
(Note that if running in a client browser, that browser must
allow the applet to open a Java socket connection back to
the server.)
-
JDBC Thin server-side driver: This is another
JDBC Type 4 driver that uses Java to connect directly to Oracle.
This driver is used internally within the Oracle database.
This driver offers the same functionality as the client-side
JDBC Thin driver (above), but runs inside an Oracle database
and is used to access remote databases.
Because it is written entirely in Java,
this driver is platform-independent. There is no difference
in your code between using the Thin driver from a client application
or from inside a server.
-
JDBC Server-Side Internal driver: This is
another JDBC Type 2 driver that uses Java native methods to
call entrypoints in an underlying C library. That C library
is part of the Oracle server process and communicates directly
with the internal SQL engine inside calls and thus avoiding
any network traffic. This allows your Java code running in
the server to access the underlying database in the fastest
possible manner. It can only be used to access the same database.
The use of native methods makes the JDBC
Server-Side Internal driver platform specific. This server-side
internal driver is fully consistent with the client-side drivers
and supports the same features and extensions.
Back
to Top
Which JDBC drivers support which versions
of Oracle Database?
- JDBC 9.0.1 drivers can talk to RDBMS
- 11.1.0
- 10.2.0
- 10.1.0
- 9.2.0
- 9.0.1
- 8.1.7
- 8.1.6
- 8.1.5
- 8.0.6
- 8.0.5
- 8.0.4
- 7.3.4
- JDBC 9.2.0 drivers can talk to RDBMS
- 11.1.0
- 10.2.0
- 10.1.0
- 9.2.0
- 9.0.1
- 8.1.7
- JDBC 10.1.0 drivers can talk to RDBMS
- 11.1.0
- 10.2.0
- 10.1.0
- 9.2.0
- 9.0.1
- 8.1.7
- JDBC 10.2.0 drivers can talk to RDBMS
- 11.1.0
- 10.2.0
- 10.1.0
- 9.2.0
- 9.0.1
- 8.1.7
- JDBC 11.1.0 drivers can talk to RDBMS
- 11.1.0
- 10.2.0
- 10.1.0
- 9.2.0
- 9.0.1
A related question is about versions NOT listed
here. If its not listed here, its not supported. You should verify
with your support channel that you are still on a supported version
of Oracle. For example, a lot of people have asked about 8.1.7
which has been desupported. People still using 8.1.7 need to contact
their support channels for upgrade info (some of these upgrades
are free!).
Back
to Top
Which JDBC drivers support which versions
of Javasoft's JDK?
- pre-8i OCI and THIN Drivers - JDK 1.0.x and
JDK 1.1.x
- 8.1.5 OCI and THIN Drivers - JDK 1.0.x and
JDK 1.1.x
- 8.1.6SDK THIN Driver - JDK 1.1.x and JDK
1.2.x (aka Java2)
- 8.1.6SDK OCI Driver - Only JDK 1.1.x
- 8.1.6 OCI and THIN Driver - JDK 1.1.x and
JDK 1.2.x
- 8.1.7 OCI and THIN Driver - JDK 1.1.x and
JDK 1.2.x
- 9.0.1 OCI and THIN Driver - JDK 1.1.x, JDK
1.2.x and JDK 1.3.x
- 9.2.0 OCI and THIN Driver - JDK 1.1.x, JDK
1.2.x, JDK 1.3.x, and JDK 1.4.x
- 10.1.0 OCI and THIN Driver - JDK 1.2.x, JDK
1.3.x, and JDK 1.4.x
- 10.2.0 OCI and THIN Driver - JDK 1.2.x, JDK
1.3.x, JDK 1.4.x, and JDK 5.0.x
- 11.1.0 OCI and THIN Driver - JDK 1.5.x and
JDK 1.6.x
Please note that JDK 1.4 is not supported by
the 11.1.0 drivers.
The Server Thin Driver and Server Internal
Driver support the same version of Java as is supported by the
Oracle Server VM.
- Oracle 8i supports J2SE 1.1
- Oracle 9i R1 supports J2SE 1.2
- Oracle 91 R2 supports J2SE 1.3
- Oracle 10g supports J2SE 1.4
- Oracle 11 supports JSE 5
Back
to Top
Which JDBC drivers support which versions
of JDBC?
Oracle 9.0.1 supports:
JDBC 2.0 Extensions except for:
- using both global and local transactions
on the same connection.
Oracle 9.2.0 supports:
Partial support for JDBC 3.0:
- transaction savepoints
- using both global and local transactions
on the same connection.
Oracle 10.1.0 supports:
Full support for JDBC 3.0 except for:
- retrieving auto-generated keys
- result-set holdability
- returning multiple result-sets.
Oracle 10.2.0 supports:
Full support for JDBC 3.0
Note that there is no real change in the support for the following
in the database. All that has changed is that some methods that
previously threw SQLException now do something more reasonable
instead.
- result-set holdability
- returning multiple result-sets.
Oracle 11.1.0 supports:
Full support for JDBC 3.0 in the JDK 1.5
drivers.
Full support for JDBC 4.0 in the JDK 1.6 drivers with the exception
of SQLXML which is not supported.
Back
to Top
Which driver should I use?
Use the Thin driver unless there is a reason
to use something else.
If you are writing an applet, you must use
the Thin driver.
If you are using a non-TCP/IP network you must
use the OCI driver.
If you are running in the Oracle server, then
you should use the Server Internal Driver unless you need to connect
to another Oracle database server or to open a second session
on the same server. In either of these cases you should use the
Server Thin Driver.
Generally the Thin driver is the best choice.
In most cases it is as fast or faster than the OCI driver (from
10.1.0), has almost exactly the same set of features, and is easier
to administer. In a few cases the OCI driver has slightly better
performance. The OCI driver supports a few Oracle features better
than the Thin driver. The Thin driver is easier to administer
since it does not require installation of the OCI C libraries.
The Thin driver will work on any machine that has a suitable Java
VM, whereas with the OCI driver you must install the proper OCI
C libraries for each machine. We recommend using the Thin driver
unless you must have one or more of the OCI only features, or
until it is clear that the small performance gain provided by
the OCI driver is worth the extra effort.
Back
to Top
Where can I get the class files?
You can get the classes files from the Oracle
Technology Network SQLJ
& JDBC Download Page.
Since the Thin driver is 100% Pure Java--Write
Once, Run Anywhere--you can use the jar files on any platform
that has an appropriate Java VM. The orai18n.jar (previously nls_charset)
files are 100% Java so the same files are used for all platforms.
The shared library files (.so, .dll) are platform specific so
you must use the file appropriate for your platform. These are
available in the OCI Instant Client installation. Only the Solaris,
Linux, and NT shared libraries are available for download on OTN.
You will have to get the share libraries for other platforms from
the Oracle client installation CD for that platform.
Back
to Top
What are all of these files for?
There are a large number of classes files that
are part of the Oracle JDBC installation.
- ojdbc5.jar
- All the classes to support basic functionality
for the Thin and OCI drivers when using JDK 1.5 (JSE 5). Additional
jar files are required when you use some features.
- ojdbc5_g.jar
- Same as ojdbc5.jar except compiled
with the -g option to include debugging information and with
java.util.logging calls included.
- ojdbc5dms.jar
- Same as ojdbc5.jar except includes
code to support Oracle Dynamic Monitoring Service (DMS). Also
includes some JDBC logging support. This file can only be used
when dms.jar is also in the classpath. The dms.jar
file is not shipped as part of the RDBMS product.
It is only available as part of the Oracle Application Server
product.
- ojdbc5dms_g.jar
- Same as ojdbc5dms.jar except compiled
with the -g option to include debugging information and with
full JDBC logging support.
- ojdbc6.jar
- All the classes to support basic functionality
for the Thin and OCI drivers when using JDK 1.6 (JSE 6). Additional
jar files are required when you use some features.
- ojdbc6_g.jar
- Same as ojdbc6.jar except compiled
with the -g option to include debugging information and with
java.util.logging calls included.
- ojdbc6dms.jar
- Same as ojdbc6.jar except includes
code to support Oracle Dynamic Monitoring Service (DMS). Also
includes some JDBC logging support. This file can only be used
when dms.jar is also in the classpath. The dms.jar
file is not shipped as part of the RDBMS product.
It is only available as part of the Oracle Application Server
product.
- ojdbc6dms_g.jar
- Same as ojdbc6dms.jar except compiled
with the -g option to include debugging information and with
full JDBC logging support.
- libocijdbc<major_version_id>.so
(Solaris)
- Native library for the JDBC OCI driver.
- for JDBC 8.x.x drivers, the <major_version_id>
is 8
- for JDBC 9.x.x drivers, the <major_version_id>
is 9
- for JDBC 10.x.x drivers, the <major_version_id>
is 10
- for JDBC 11.x.x drivers, the <major_version_id>
is 11
This file should be locatable via your
LD_LIBRARY_PATH setting.
- ocijdbc<major_version_id>.dll
(Windows)
- Similar to above, except on Windows platforms.
This file should be locatable via your %PATH% setting.
- libheteroxa<major_version_id>.so
(Solaris)
- Auxiliary native library for the JDBC OCI
driver, for the native-XA (or Hetero-RM) feature. This library
is only available for JDBC 9.x.x, 10.x.x, and 11.x.x drivers.
When using this feature, this library should be locatable via
your LD_LIBRARY_PATH setting, along with libocijdbc<major_version_id>.so.
- heteroxa<major_version_id>.dll
(Windows)
- Similar to above, except on Windows platforms.
When using OCI native-XA, this file should be locatable via
the %PATH% setting, along with ocijdbc<major_version_id>.dll.
- orai18n.jar
- Contains the configuration information
to support all Oracle character sets in Advanced Data Types
(objects). If the database character set is one other than US7ASCII,
W8DEC, WE8ISO8859P1, or ShiftJIS, and the application uses ADTs,
then you must include this file in your classpath. It is possible
to use your favorite zip utility to delete unneeded files from
the jar, but not easy. See orai18n.jar
is too big. How do I make it smaller?
This file is still required under the circumstances
described above, but it is not technically part of the JDBC
drivers. It is available on the JDBC
dowrload page or you can get it as part of the Oracle
Globalization Kit.
Some older (pre 11.1.0) versions of Oracle JDBC
included some of the following files. These files are not shipped
in Oracle Database 11 either because they are no longer supported
or because they are no longer needed.
- classes111.jar
- Classes for the Thin and OCI drivers when
using a Java 1.1 VM. Includes support for all Oracle character
sets as simple columns and for US7ASCII, W8DEC, and ShiftJIS
in Advanced Data Types (objects).
- classes111.zip
- Same as classes111.jar except in
zip format. Useful because some VMs can't read jar files.
- classes111_g.jar
- Same as classes111.jar except compiled
with the -g option to include debugging information and with
Oracle JDBC logging included.
- classes111_g.zip
- Same as classes111_g.jar except
in zip format. Useful because some VMs can't read jar files.
- classes12.jar
- Classes for the Thin and OCI drivers when
using a Java 1.2 or 1.3 VM.
- classes12.zip
- Same as classes12.jar except in
zip format. This file will almost certainly not be available
in future releases. You should use classes12.jar instead.
- classes12_g.jar
- Same as classes12.jar except compiled
with the -g option to include debugging information and with
Oracle JDBC logging included.
- classes12_g.zip
- Same as classes12_g.jar except
in zip format. Useful because some VMs can't read jar files.
- classes12dms.jar
- Same as classes12.jar except includes
code to support DMS, Oracle Dynamic Monitoring Service. This
file can only be used when dms.jar is also in the classpath.
The dms.jar file is not shipped as part of
the RDBMS product. It is only available as part of the Oracle
Application Server product.
- classes12dms_g.jar
- Same as classes12dms.jar except
compiled with the -g option to include debugging information
and with Oracle JDBC logging included.
- ojdbc14.jar
- Same as classes12.jar except for
use with Java 1.4 VMs. Beginning with this file, Oracle JDBC
classes files will be named ojdcbXX.jar, where XX is the Java
version number. The classes12 files will not be renamed. We
will not provide zip files for Java 1.4 and beyond.
- ojdbc14_g.jar
- Same as ojdbc14.jar except compiled
with the -g option to include debugging information and with
java.util.logging calls included.
- ojdbc14dms.jar
- Same as ojdbc14dms.jar except includes
code to support DMS, Oracle Dynamic Monitoring Service. This
file can only be used when dms.jar is also in the classpath.
The dms.jar file is not shipped as
part of the RDBMS product. It is only available as part of the
Oracle Application Server product.
- ojdbc14dms_g.jar
- Same as ojdbc14dms.jar except compiled
with the -g option to include debugging information and with
java.util.logging calls included.
- nls_charset11.jar
- Contains the classes to support all Oracle
character sets in Advanced Data Types (objects) when using a
Java 1.1 VM. If the database character set is one other than
US7ASCII, W8DEC, or ShiftJIS, and the application uses ADTs,
then you must include this class in your classpath. Or you can
unzip this file and add the appropriate file to your classpath.
The files are named with the Oracle character set number.
- nls_charset11.zip
- Same as nls_charset11.jar except
in zip format. Useful because some VMs can't read jar files.
- nls_charset12.jar
- Same as nls_charset11.jar except
for use with Java 1.2, 1.3, and 1.4 VMs. Not used with Oracle
10.1.0 and later. Use orai18n.jar instead.
- nls_charset12.zip
- Same as nls_charset12.jar except
in zip format. Useful because some VMs can't read jar files.
Back
to Top
What about the files for the Server Thin
Driver and the Server Internal Driver?
Both of these drivers run only in the Oracle
Server Java VM and their classes are installed as part of installing
the VM. There are no separate classes files available or needed
for these drivers.
Back
to Top
Can I load one of the classes files into
the Oracle Server Java VM?
No. There is no need. The necessary class files
are installed as part of the database installation.
You can't do it without sufficient privileges
and if you have those privileges, you shouldn't do it because
it breaks things.
Back
to Top
Are Oracle's JDBC drivers Y2K compliant?
Yes, if it isn't already obvious.
For more details, see the JDBC
Y2K paper.
Back
to Top
Are Oracle's JDBC jar files identical
on all platforms?
Yes.
The actual .jar files are identical on all
platforms. We only build these on one platform, and just copy
them over to the others. The only difference is the .so (or .dll)
file that is called by the OCI client. The .jar files are identical
and can be swapped around between platforms if you want.
Back
to Top
Can third party vendors distribute Oracle's
JDBC drivers along with their own software?
A third party software company (and Oracle
partner) wanted to know if they could distribute the Oracle JDBC
drivers with their application to their own customers. This is
a legal question, rather then a technical one. I'm no legal expert,
but the PMs here tell me that the short answer is yes so long
as you follow the licensing terms spelled out at
http://www.oracle.com/technology/software/htdocs/distlic.html.
For something legally binding, get a lawyer
or contact your local Oracle sales rep for more details.
Back
to Top
orai18n.jar is too big. How
can I make it smaller?
Follow the directions in the 10.2.0.1.0 or
later version of the Oracle JDBC Developer's Guide. The instructions
in the 10.1.0 documentation are incorrect. If you do not have
access to the 10.2.0.1.0 or later Developer's Guide, then you
can follow the instructions here.
If you wish to reduce the size of orai18n.jar,
proceed as follows.
The file orai18n.jar contains many
important character set and globalization support files. Instead
of extracting only the character set glb files that your application
uses, follow this three-step process:
- Unpack orai18n.jar into a
temporary directory
- Delete all files in your temporary
directory EXCEPT the character set glb files that your application
uses AND the following 18 class files:
oracle/i18n/util/ClassLoaderChooser.class
oracle/i18n/util/ConverterArchive.class oracle/i18n/util/GDKMessage.class
oracle/i18n/util/GDKOracleMetaData.class oracle/i18n/util/OraClassLoader.class
oracle/i18n/util/OraResourceBundle.class oracle/i18n/util/message/Messages.class
oracle/i18n/text/converter/CharacterConverter12Byte.class oracle/i18n/text/converter/CharacterConverterOGS.class
oracle/i18n/text/converter/CharacterConverter1Byte.class oracle/i18n/text/converter/CharacterConverterGB18030.class
oracle/i18n/text/converter/CharacterConverterJAEUC.class oracle/i18n/text/converter/CharacterConverterLC.class
oracle/i18n/text/converter/CharacterConverterLCFixed.class oracle/i18n/text/converter/CharacterConverterZHTEUC.class
oracle/i18n/text/converter/CharacterConverter2ByteFixed.class
oracle/i18n/text/converter/CharacterConverterSJIS.class oracle/i18n/text/converter/CharacterConverterShift.class
The character set glb files are located
in oracle/i18n/data/ and named in the format, lx20<OracleCharacterSetId>.glb;
where <OracleCharacterSetId> is the hexadecimal
representation of the Oracle character set ID. The decimal
representation of this ID can be found by the SQL function,
NLS_CHARSET_ID. For example, if your application
connect to a JA16SJIS database, the following SQL would return
832 in decimal representation.
select NLS_CHARASET_ID('ja16sjis')
from DUAL;
Manually convert this decimal value to
hexadecimal value and get 340. Therefore, you should save
oracle/i18n/data/lx20340.glb in your temporary directory
together with the 15 class file above.
In your temporary directory, ensure you
have the same directory structure as the original package.
All glb files and the 15 class files are distributed in
| oracle/i18n/data/ |
(lx20<OracleCharacterSetId>.glb
files) |
| oracle/i18n/util/ |
(3 class files) |
| oracle/i18n/util/message/ |
(1 class files) |
| oracle/i18n/text/converter/ |
(11 class files) |
- Create a new jar file from the temporary
directory using a different file name other than orai18n.jar
and add the new jar file to your CLASSPATH.
Back
to Top
What threads do the Oracle JDBC drivers
create?
The drivers create a number of different threads,
but only on an as-needed basis. They do not create the threads
unless your code makes use of the feature that depends on the
thread. All of these threads are daemon threads.
- Statement timeout thread. This thread is
created if you execute any statement with a timeout. Only one
thread is created no matter how many statements or connections.
This thread lasts the lifetime of the VM.
- Implicit Connection Cache timeout thread.
Used to enforce timeouts on the connection cache, and is enabled
when at least one timeout property on the connection cache is
enabled. There is one thread per connection cache. It lasts
the lifetime of that connection cache.
- Fast Connection Failover Event handler thread.
Listener thread to receive HA events from RAC. Started only
when FCF is enabled. There is one thread per connection cache.
It lasts the lifetime of that connection cache.
- FCF worker thread Processes UP/DOWN events.
Started only when the events are being processed, and terminates
after it is done its job.
- Runtime Load Balancing Event Handler thread.
This is the listener thread that receives RLB events from RAC.
Started only when FCF is enabled. There is one thread per connection
cache. It lasts the lifetime of that connection cache.
- RLB Gravitate connection cache thread. This
is started only when RLB is enabled, and when there is a need
to gravitate connections in the cache to healthy instances.
The thread terminates after it has finished its job.
- OracleConnectionCacheImpl timeout thread.
Deprecated. Started only when this old cache is used, to enforce
timeouts on the old cache. There is one thread per connection
cache. It lasts the lifetime of that connection cache.
Back
to Top
What permissions do the Oracle JDBC drivers
require?
When your application is run with a SecurityManager
enabled (which it should in production) certain operations are
priviliged. In order to do those operations the code must be granted
the appropriate permissions. What permissions do the Oracle JDBC
drivers require?
As usual, it depends. It depends on what you
are trying to do. Beginning with 10.2 the drivers do the right
thing when the SecurityManager is enabled. This requires quite
a long list of permissions. In a secure environment you only want
to grant the necessary permissions, so which permissions you grant
depends on what your application is asking the drivers to do.
The way to find out what permissions to grant
is to look at the file ojdbc.policy in the demo directory. This
is a generic security policy file that you can use to grant the
drivers all the necessary permissions. In most cases you will
want to comment out many of the permissions since your app doesn't
use the features that requires those permissions.
This file depends on a number of system properties.
To use this file you will have to define those properties using
the -D option to the java command.
Some of the permissions need only be granted
to the JDBC driver code. The operations that require those permissions
are enclosed in a doPriviliged block. Other permissions
must also be granted to the code that calls the drivers. Those
operations are not enclosed in doPriviliged blocks. Which
is which was chosen so as to make it as difficult as possible
to use the drivers to cause mischief. One noteworthy example is
that the calling code needs the open socket permission when using
the thin driver to open a connection. This is to prevent rogue
code from using the drivers for a denial of service attack, among
other reasons.
Back
to Top
I just installed 11.1 and my code won't
compile. What gives?
The classes in the package oracle.jdbc.driver
are desupported in 11.1. You should use the types in the package
oracle.jdbc instead. Typically all that is required is
to replace oracle.jdbc.driver with oracle.jdbc.
If that doesn't work then your code is using classes or methods
that were never intended for public use. You will have to find
another solution. There is no workaround or backward compatibility
mode.
The package oracle.jdbc was introduced
in 8.1.7. In 9.0.1 we deprecated the package oracle.jdbc.driver
and updated all the documentation to refer to oracle.jdbc.
At that time we also started telling people that oracle.jdbc.driver
would be desupported. That was over six years ago. Every release
since then has warned that oracle.jdbc.driver was going
to be desupported. Two years ago we announced on the JDBC OTN
page and forum that 11.1 would desupport oracle.jdbc.driver.
And so it does.
We take backward compatibility very seriously,
but there have been many changes in Oracle, Java, and JDBC since
the first release of the drivers. For a variety of reasons it
has long been necessary for us to desupport customer use of the
implementation classes that are contained in oracle.jdbc.driver.
We have been trying to get the word out for over six years. We
are sorry that you are having problems, but we had to make this
step.
Back
to Top
I just installed the 11.1 drivers and
now my application throws IllegalAccessError. What gives?
See the answer to the previous
question.
Back
to Top
You say oracle.jdbc.driver is
desupported, yet the package is still in the jar files?
Customer use of the package is desupported.
We did not remove the package or the classes it contains. This
package is the core implementation code for the driver. We could
have renamed the package but did not because it would have been
a lot of work for not much gain.
What we did do is change the visibility of
the classes and methods in the package. Most of the classes are
now default (package) visible instead of public visible. Many
of the internal implementation methods used to be public visible.
Most are now more restricted. These are the changes that would
cause source to give compile errors or compiled code to throw
runtime errors.
Back
to Top
I don't use oracle.jdbc.driver
but I'm still having problems with 11.1. Are there any other changes?
Yes.
The class oracle.jdbc.pool.OracleConnectionCacheImpl
has also been desupported. We only gave a couple of years notice
about this. Use the Oracle Implicit Connection Cache instead.
It is documented in the Oracle JDBC Developer's Guide.
This approach to connection caching proved
very problematic. Basically we couldn't get it to work reliably
and it is a poor design. We have only limited resources and OracleConnectionCacheImpl
was a huge resource sink. We wanted to use our resources on projects
with more long term benefit to our customers, so we had to let
it go.
Back
to Top
How
do I install the Thin driver?
Put the jar files in a convenient location
and include the appropriate jar files in your classpath. See What
are all these files for? to determine which files you need.
Back
to Top
How do I install the OCI driver?
The JDBC OCI driver generally requires an Oracle
client-installation of the same version the driver. Starting from
10.1.0, the JDBC OCI driver is available for install with the
OCI Instant Client feature, which does not require a complete
Oracle client-installation. Please see "What
are all of these files for" for details. Also refer to the
documentation on OCI
Instant Client install.
Back
to Top 