Oracle Database 19c ucp.jar limitations with JDK 11 - java

we are using database Oracle 19c version in production and we are migrating to JDK 11 (currently we are on JDK 7). So i downloaded necessary ojdbc jars from oracle website:
https://www.oracle.com/in/database/technologies/appdev/jdbc-downloads.html
But i found below in the website:
It said ucp.jar certified with JDK11 but with some limitations. Can't find any information about those limitations.
Please share if anyone has idea on those limitations.
Please note that i'm aware Oracle 21c drivers listed in the website certified with JDK11 (including ucp.jar) but those don't have Long Term Support yet. So want to use Oracle 19c drivers only.

The 19c UCP limitations with respect to JDK11 are related to the DataSource APIs added in DataSource APIs in JDK9 (for example createConnectionBuilder and createShardingKey) that you won't find in UCP in 19c. If you don't use these features, you should be fine.
And yes you're right, the current Long Term Support (LTS) release is 19c. 21c should only be used to explore new features.

Related

Oracle 19c compatibility with jdk7

I would like to know if oracle 19c is compatible with jdk 7.
I have found out 2 drivers for oracle 19c
ojdbc8 : for jdk8, jdk9 and jdk11
ojdbc10 : for jdk10 and jdk11
I would like to know if there is a way to have oracle 19c with a jdk7, and if yes what is the driver that will allow to do it ?
According to the Oracle JDBC FAQ (Question "What are the Oracle JDBC releases Vs JDK versions?"), only the Java versions you listed (Java 8 to 11) are supported for Oracle 19c.
I expect that support for later Java versions will be added in the future.
Java 9 and Java 10 were short-life releases, and are both end-of-life.
As a comment notes, Java 7 has been "end of life" since April 2015. It would be counter-productive for Oracle to encourage continued use of Java 7 by supporting it with new JDBC drivers for new Oracle database releases.
Note that the Oracle drivers are proprietary and source code is not available. So back-porting one of the Oracle 19c compatible drivers to Java 7 is not an option.
You may be able to identify a 3rd-party vendor who will provide (probably sell) you a driver that works. The best I could come up with is this old page that lists vendors:
https://www.mindprod.com/jgloss/jdbcvendors.html
In summary: If you want to use Oracle 19c with Oracle supported drivers, upgrading to Java 8 LTS or later is the only feasible solution. Upgrading to Java 11 LTS is advisable:
Oracle Java 8 LTS free public updates (for commercial users) have ended, and Premium Support is due to end in March 2022; see the Oracle Java SE Support Roadmap.
You can still get free public Java 8 LTS updates from 3rd-party vendors post 2020; see Java is Still Free for all of the details.
I can confirm the the ojdbc7.jar running on a JDK 7 will work connecting to an Oracle 19C server.
Looking at the Oracle JDBC FAQ it does not look like this is officially supported, however we have a current client in the process of upgrading their JDK, but we needed to support JDK 7 in the short term.
Our Oracle server was an AWS RDS instance, previously running Oracle 12C, but Amazon is no longer supporting this, and we were forced to upgrade to Oracle 19c.
We had some JDK 8 environments (container JBoss 7) which were already using ojdbc7.jar and these were fine. The JDK 7 environment (container JBoss 5.2) were using ojdbc6-11.2.0.1.0.jar and was failing with exception:
Caused by: java.sql.SQLException: ORA-28040: No matching
authentication protocol
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439) at
oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:388) at
oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:381) at
oracle.jdbc.driver.T4CTTIoauthenticate.processError(T4CTTIoauthenticate.java:427)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436) at
oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186) at
oracle.jdbc.driver.T4CTTIoauthenticate.doOSESSKEY(T4CTTIoauthenticate.java:390)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:356) at
oracle.jdbc.driver.PhysicalConnection.(PhysicalConnection.java:531)
at oracle.jdbc.driver.T4CConnection.(T4CConnection.java:221)
at
oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503) at
org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.java:207
After switching from ojdbc6-11.2.0.1.0.jar to: ojdbc7.jar the application functioned normally.
Just a caveat, I quickly tested our application read/writing to the DB, and these worked as expected, your mileage may vary, as mentioned above this is not officially supported.

OJDBC Driver compatible with Oracle 10g and Java 1.8

I am having a rather trivial question. In our project we are using Oracle 10g as the database and Java 1.8 as the language. Can anyone please suggest me which JDBC driver will be suitable in this case?
In the Oracle documentation in the below link:
http://www.oracle.com/technetwork/apps-tech/jdbc-10201-088211.html
I found that ojdbc14.jar should be used. However it is written that it is classes compiled using JDK 1.4 and 1.5. So should I use the same driver when using JDK 1.8?
You can try using ojdbc14.jar however it won't support methods introduced in JDBC 4 (Java 6), JDBC 4.1 (Java 7) and JDBC 4.2 (Java 8). Because Java emphasizes backwards compatibility you most likely will be able to open the database connection, however:
The code will throw LinkageError in runtime if you use methods introduced in JDBC 4+. The code will compile with JDBC 4.2 (Java 8) but these methods will not be available during runtime.
You may experience weird behavior with low level features e.g. statement caching and row fetching was modified in 11g ojdbc6.jar few times. I'm not even sure how this features work in the old ojdbc14.jar.
It's a very unusual, an I'd say not advisable, setup that you want to test. The only way to see if it works is to try it.

ojdbc14.jar for Oracle 12c supported?

We have application developed in portlet Factory 5.1 which is using Oracle 9i. we are using ojdbc14.jar for that. we are upgrading the Oracle from 9i to 12c. is this ojdbc.jar supported for Oracle 12c as well? i believe it is compatible. Any Idea?
It is better to use the ojdbc7.jar as oracle suggest it in their supports list.
Also the jar version corresponds to the jdbc version that your j2ee comprises of . So i guess you wont be having any issues with the database upgrade.
But remember you may get the support for only ojdbc7.jar on using 12c Release, it is better to upgrade it!

What is the right JDBC version for MySQL server 5.1.72?

I am a bit confused about what JDBC version to use for MySQL server 5.1.72.
Could you please tell me, what version I should use and why?
The following link http://www.mysql.com/products/connector/ provides a list of MySQL Connectors, choose the JDBC connector and the platform.
Table 2.1 in this page could help you.
Anyway manual states:
The current recommended version for Connector/J is 5.1. This guide covers all four connector versions, with specific notes given where a setting applies to a specific option.
JDBC version does not makes sense here either you were talking about JDBC API then available versions are
JDBC 3.0
JDBC 4.0 (included in Java SE 6)
JDBC 4.1, is specified by a maintenance release 1 of JSR 221
and is included in Java SE 7
The latest version, JDBC 4.2, is specified by a maintenance release 2 of JSR 221
and is included in Java SE 8.
And if you are talking about JDBC driver mysql then it is better to use the latest version available which is
Connector/J 5.1.31
It is always recommended to use the most stable version unless you find some compatibility issue.

Is Java 1.6 compatible with Neo4j?

I am using JDK 6, and my present database is MySQL 5.5.27.
As my data is in a tree structure I want to go for a graph database. I have a need for both in-memory and file system based datastore.
Is Neo4j compatible with Java 1.6? On their website and tutorial links, they have stated Java 7 as the requirement.
In the neo4j document it is written that:
Neo4j likes Java 1.6 JVMs and running in server mode so consider upgrading to that if you haven’t yet (or at least give the -server flag).
Details can be found here in neo4j docs.
So, this seems that it is compatible with jdk1.6.
According to the neo4j website as of now, the oldest downloadable version of the community edition is 1.9.9, and the documentation for 1.9.9 says that Oracle Java 7 is a prerequisite.
It may be possible to get older versions (e.g. a 2013 version) but you would be advised to contact Neo4j (the company) to find out a reliable place to get them.

Categories