JDBC OCI Driver Connection Fails: UnsatisfiedLinkError: no ocijdbc9 in java.libr

上一篇 / 下一篇  2008-04-23 23:29:35 / 个人分类:oracle

来自metalink


Subject: JDBC OCI Driver Connection Fails: UnsatisfiedLinkError: no ocijdbc9 in java.library.path or UnsatisfiedLinkError: create_stmt_c_copy
Doc ID: Note:398948.1 Type: PROBLEM
Last Revision Date: 21-MAY-2007 Status: PUBLISHED

In this Document
Symptoms
Cause
Solution
References

--------------------------------------------------------------------------------

Applies to:
JDBC - Version: 9.2.0.8
This problem can occur on any platform.

Symptoms
When running a sample JDBC OCI Driver 9.2.0.8 client

$OH_10_2_0/jre/1.4.2/bin/java -classpath $OH1_9_2_0/jdbc/lib/ojdbc14.jar:. JdbcTest

to connect to the Oracle Database 9.2.0.8 of the same machine Sun Solaris, the following exceptions are thrown with these specific LD_LIBRARY_PATH settings:

1. LD_LIBRARY_PATH=$OH2_9_2_0/lib:$OH2_9_2_0/jdbc/lib


Exception in thread "main" java.lang.UnsatisfiedLinkError: no ocijdbc9 in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at oracle.jdbc.oci8.OCIDBAccess.logon(OCIDBAccess.java:265)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:362)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:536)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:328)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at JdbcTest.main(super2.java:11)
2. LD_LIBRARY_PATH=$OH2_9_2_0/lib32:$OH2_9_2_0/lib:$OH2_9_2_0/jdbc/lib
Exception in thread "main" java.lang.UnsatisfiedLinkError: create_stmt_c_copy
at oracle.jdbc.oci8.OCIDBAccess.create_stmt_c_copy(Native Method)
at oracle.jdbc.oci8.OCIDBAccess.parseExecuteFetch(OCIDBAccess.java:1896)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2149)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:2032)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2894)
at oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:942)
at oracle.jdbc.dbaccess.DBAccess.setNlsParamsClient(DBAccess.java:1682)
at oracle.jdbc.oci8.OCIDBAccess.initNls(OCIDBAccess.java:644)
at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:408)
at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:536)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:328)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at JdbcTest.main(super2.java:11)

Cause
The errors occur because the wrong JDBC OCI libraries are pointed to by LD_LIBRARY_PATH for the version of "ojdbc14.jar" used:

1. In the first case we referenced the wrong JDBC OCI libraries:

CLASSPATH=$OH1_9.2.0/jdbc/lib/ojdbc14.jarLD_LIBRARY_PATH=$OH2_9.2.0/lib
2. In the second case JDBC components from 2 seperate ORACLE_HOMEs were used:

CLASSPATH=$OH1_9.2.0/jdbc/lib/ojdbc14.jarLD_LIBRARY_PATH=$OH2_9.2.0/lib32


Solution
Set the CLASSPATH and LD_LIBRARY_PATH to point to the same ORACLE_HOME, for example

CLASSPATH=$OH2_9.2.0/jdbc/lib/ojdbc14.jar

LD_LIBRARY_PATH=$OH2_9.2.0/lib32

References
Note 232357.1 - How to Install and Configure Oracle JDBC Drivers
Note 77332.1 - How to Test JDBC/OCI Demo on UNIX System

应用程序的驱动需要和数据库的驱动一致,如不一致也会出现此问题(UnsatisfiedLinkError)


TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-10-08  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 2175
  • 日志数: 1037
  • 建立时间: 2008-03-30
  • 更新时间: 2008-09-06

RSS订阅

Open Toolbar