欢迎投稿

今日深度:

java oci 连接oracle抛java.lang.UnsatisfiedLinkError: ocijd

java oci 连接oracle抛java.lang.UnsatisfiedLinkError: ocijdbc11...,ocijdbc11


首先成功安装oracle客户端,可用sqlplus工具连接TNSNAMES.ORA配置的本地服务名如:

conn user/pass@dbName

若连接成功;客户端安装成功。

 

java程序若要采用oci方式连接本地服务,需要进行相应的配置具体可见ORACLE_HOME/jdbc/Readme.txt文件里的说明,其中

部分摘抄如下:

Setting Up Your Environment

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

 

On Windows platforms:

  - Add [ORACLE_HOME]\jdbc\lib\ojdbc5.jar to

    your CLASSPATH if you use JDK 1.5 or

    [ORACLE_HOME]\jdbc\lib\ojdbc6.jar if you use JDK 1.6.

  - Add [ORACLE_HOME]\jlib\orai18n.jar to your CLASSPATH if needed.

  - Add [ORACLE_HOME]\bin to your PATH if you are using the JDBC OCI

    driver.

 

On Solaris/Digital Unix:

  - Add [ORACLE_HOME]/jdbc/lib/ojdbc5.jar to your CLASSPATH if you

    use JDK 1.5 or [ORACLE_HOME]/jdbc/lib/ojdbc6.jar if you use JDK 1.6

  - Add [ORACLE_HOME]/jlib/orai18n.jar to your CLASSPATH if needed.

  - Add [ORACLE_HOME]/jdbc/lib to your LD_LIBRARY_PATH if you use

    the JDBC OCI driver.

 

On HP/UX:

  - Add [ORACLE_HOME]/jdbc/lib/ojdbc5.jar to your CLASSPATH if you

    use JDK 1.5 or [ORACLE_HOME]/jdbc/lib/ojdbc6.jar if you use JDK 1.6

  - Add [ORACLE_HOME]/jlib/orai18n.jar to your CLASSPATH if needed.

  - Add [ORACLE_HOME]/jdbc/lib to your SHLIB_PATH and LD_LIBRARY_PATH

    if you use the JDBC OCI driver.

 

On AIX:

  - Add [ORACLE_HOME]/jdbc/lib/ojdbc5.jar to your CLASSPATH if you

    use JDK 1.5 or [ORACLE_HOME]/jdbc/lib/ojdbc6.jar if you use JDK 1.6

  - Add [ORACLE_HOME]/jlib/orai18n.jar to your CLASSPATH if needed.

  - Add [ORACLE_HOME]/jdbc/lib to your LIBPATH and LD_LIBRARY_PATH

    if you use the JDBC OCI driver.

确保程序使用的jdbc OCI DRIVER与oracle 客户端一致,另外NLS_LANG与数据库和客户端字符集配置一致。

 

经过上面的配置后,若程序仍然出现java.lang.UnsatisfiedLinkError: ocijdbc11...情况,

请检查程序使用JDK版本位数(32位还是63位)是否与oracle客户端版本一致。


java的oci方式连接数据库的问题

OCI 只是一种连接方式,既然你使用 Java 来做客户端程序,为什么要使用 Native 方式的驱动?
你应该使用 java:oracle:thin:@ 的 thin 协议来连接数据库。

OCI 本身是为 C++, VB 这样的程序准备的。Java 版本的程序建议使用 thin 协议的驱动。

Java 驱动有4种类型,type 1 - type 4,现在已经基本上普及了type 4驱动,几乎所有的厂商都提供 type 4驱动,它是说服务器端和驱动程序之间是厂商内部网络通信格式,驱动程序和 java 程序之间是纯 java。而依赖厂商的 DLL 的驱动就是 type 2,它是要求在当前 path 变量路径或 java.library.path 参数的路径上能找到 oracle 驱动程序的 DLL。所以如果你坚持使用 oci 驱动,你需要把 oracle 的 BIN 目录 (可能还有其它目录,反正有Oracle 的 DLL 的目录你都得确认一下)添加到 PATH 变量中。

而且要记得,type 2 驱动跟版本之间的依赖关系比较大,可能它要求特定版本的 DLL,而 type 2 则不同,它本身不依赖 dll,驱动与服务器之间本来就是纯 java 版的,它本身代替了DLL 的功能,所以版本依赖关系小。

你的 -Djava.library.path 的路径是真实存在的 oracle 客户端目录么?里面说的那个 dll 能找到么?你的程序中 println(System.getProperty("java.library.path")) 得到的结果是什么?
 

oracle oci 连接问题

原因:oracle客户端中和程序使用的驱动包不是一个版本。
解决办法:把oracle客户端下的ojdbc jar包放到工程的WEB-INF/lib下
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/2811.html NewsArticle java oci 连接oracle抛java.lang.UnsatisfiedLinkError: ocijdbc11...,ocijdbc11 首先成功安装oracle客户端,可用sqlplus工具连接TNSNAMES.ORA配置的本地服务名如: conn user/pass@dbName 若连接成功;客户端安装成功...
相关文章
    暂无相关文章
评论暂时关闭