rac java 报错,java應用連接oracle 11g R2 rac (用scanip連接報錯)

In this Document

APPLIES TO:Oracle Internet Directory - Version 10.1.2 and later

Information in this document applies to any platform.

***Checked for relevance on 13-Jan-2014***

SYMPTOMS

Provisioning profiles from Applications to OID reporting errors in the trace files with SCAN enabled.

Example: (where MYHOST is the SCAN name)

Using Service Name to connect - URL : jdbc:oracle:thin:@MYHOST:1521:ORCL,user : APPS

Exception Connecting to DB :java.sql.SQLException: Listener refused the connection with the following error:

ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

The Connection descriptor used by the client was:

MYHOST:1521:ORCL

ODIException: 0:ODIException: Exception Connecting to DB :java.sql.SQLException: Listener refused the connection with the following error:

ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

The Connection descriptor used by the client was:

MYHOST:1521:ORCL

Exception connecting : java.sql.SQLException: Listener refused the connection with the following error:

ORA-12505, TNS:listener does not currently know of SID given in connect descriptor

The Connection descriptor used by the client was:

MYHOST:1521:ORCL

ODI Exception while Initialising PLSQL Reader

at oracle.ldap.odip.gsi.PLSQLReader.initialise(PLSQLReader.java:181)

at oracle.ldap.odip.prov.ProvAppToOIDSync_2_0.initialise(ProvAppToOIDSync_2_0.java:128)

at oracle.ldap.odip.engine.ProvThread.runOldVersion(ProvThread.java:548)

at oracle.ldap.odip.engine.ProvThread.run(ProvThread.java:182)

Testing the same connection using  a JDBC test the same error "ORA-12505, TNS:listener does not currently know of SID given in connect descriptor" is reported.

However connections are successful outside of OID using sqlplus/tnsnames.ora with SCAN name

CHANGES

Changed provisioning profile orclodipprofileinterfaceconnectinformation to use a SCAN name

rather than the physical or virtual name.

CAUSE

SCAN will ONLY work with the 11.2 version (Client or Database)

If you want to use a process that uses the 11.1 or lower version of the Oracle client, you must connect using the VIP addresses (the normal method)

SCAN is limited to only 11.2 because of certain parts of the code that have to negotiate DNS lookup.

While the 10.2.x.x or 11.1.x.x JDBC driver can connect to an 11.2.0.1 database using a "traditional" connection, those versions do not support SCAN functionality

SOLUTION

You must connect using the VIP addresses (the normal method).  Scan is not supported with version 10g.

可以通過更好應用的jdbc驅動來解決

oracle 對應的JDBC驅動 版本

Oracle  版本

jdk版本

推薦jar包

備注

Oracle 8i

JDK 1.1.x

classes111.zip

Oracle 8i

JDK 1.1.x

classes12.zip

Oracle 9i

JDK 1.1.x

classes111.jar 或者 classes111.zip

Oracle 9i

JDK 1.2 and JDK 1.3

classes12.jar 或者 classes12.zip

Oracle 9i

JDK 1.4

ojdbc14.jar

Oracle 9i

JDK 1.5

ojdbc5.jar

Oracle 9i

JDK 1.6

ojdbc6.jar

Oracle 10g

JDK 1.2 and JDK 1.3.

classes12.jar

Oracle 10g

JDK 1.4 and 5.0

ojdbc14.jar

Oracle 11g

jdk5

ojdbc5.jar

Oracle 11g

jdk6

ojdbc6.jar

如果一個jdbc的jar包你不知道是那個版本的,可以解壓這個jar包,再META-INF\MANIFEST.MF 文件中找文件內容如下.

Manifest-Version: 1.0

Ant-Version: Apache Ant 1.6.5

Created-By: 1.5.0_51-b10 (Sun Microsystems Inc.)

Implementation-Vendor: Oracle Corporation

Implementation-Title: JDBC

Implementation-Version: 11.2.0.4.0

Repository-Id: JAVAVM_11.2.0.4.0_LINUX.X64_RELEASE

Specification-Vendor: Sun Microsystems Inc.

Specification-Title: JDBC

Specification-Version: 4.0

Main-Class: oracle.jdbc.OracleDriver

sealed: true

Name: oracle/sql/converter/

Sealed: false

Name: oracle/sql/

Sealed: false

Name: oracle/sql/converter_xcharset/

Sealed: false

Name: oracle/replay/driver/

Sealed: false