5

我正在尝试将jdbc oci 连接到使用os 身份验证的oracle 11g

我制作了一个示例控制台应用程序来测试某些客户端机器上的连接

我在具有jdk 6的机器上开发了应用程序,并在项目中使用了 jar ojdbc6.jar

我用来连接数据库的代码如下:

OracleDataSource ods = new OracleDataSource();
String tnsName="Prod";
ods.setURL("jdbc:oracle:oci:/@"+tnsName);
Connection conn = ods.getConnection();

我正在尝试从安装了 oracle11g 的客户端计算机上运行此应用程序,并且 oracle 主目录的路径设置为: C:\orant\jdk\bin

还有路径:C:\orant\bin包含oci.dll并且不包含ocijdbc11.dll

客户端安装了jre7,没有jdk。

当尝试在经过操作系统身份验证到 oracle 数据库的客户端计算机上运行上述代码时,我收到以下异常:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no ocijdbc11 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.driver.T2CConnection$1.run(T2CConnection.java:3178)
        at java.security.AccessController.doPrivileged(Native Method)
        at oracle.jdbc.driver.T2CConnection.loadNativeLibrary(T2CConnection.java
:3174)
        at oracle.jdbc.driver.T2CConnection.logon(T2CConnection.java:233)
        at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:
508)
        at oracle.jdbc.driver.T2CConnection.<init>(T2CConnection.java:133)
        at oracle.jdbc.driver.T2CDriverExtension.getConnection(T2CDriverExtensio
n.java:53)
        at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:510)
        at oracle.jdbc.pool.OracleDataSource.getPhysicalConnection(OracleDataSou
rce.java:275)
        at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java
:206)
        at oracle.jdbc.pool.OracleDataSource.getConnection(OracleDataSource.java
:156)
        at auth.Main.main(Main.java:42)

请告知我如何解决此异常。

4

5 回答 5

3

如果您使用 OCI url( "jdbc:oracle:oci:/@"+tnsName),那么您需要类路径上的 oracle 客户端库。所以你需要在机器上安装 oracle 客户端。

但是如果您使用瘦驱动程序并指定如下 url,则不需要 oracle 客户端。

"jdbc:oracle:thin:@"+dbServer+":"+port+":"+SID; 
于 2014-06-20T21:15:29.920 回答
0

在这篇文章中,我能够使用 jdbc 成功连接到 oracle 数据库:

如何通过os身份验证连接到oracle数据库?

于 2013-10-09T07:14:50.640 回答
0

如果您正在使用带有 Jboss 6.1.0 干扰的 Eclipse。它会在线程“main”java.lang.UnsatisfiedLinkError: no ocijdbc11 in java 中显示错误异常。library.path 解决方案:从 oracle\product\11.2.0\client_1\BIN 复制 ocijdbc11.dll 并粘贴到

D:\jboss-6.1.0.Final\bin\native

于 2016-02-03T06:04:53.560 回答
0

我认为您遇到此问题是因为您使用的是带有 type-2 驱动程序的 JRE 1.6 或更低版本的 Java。请用 JRE 1.7 或 JRE 1.8 替换您的 JRE 1.6 构建路径。它将解决问题。

请按照以下步骤操作:

  1. 右键单击您的项目文件夹
  2. 点击属性
  3. 单击 java 构建路径。
  4. 从库中选择 jre 1.6 或更低版本的“jre 系统库”并将其删除,因为这正在成为原因的来源。
  5. 现在点击添加库
  6. 点击jre系统库
  7. 点击下一步
  8. 通过单击环境按钮选择执行环境为 JavaSE-1.8(jre1.8.0_144),然后按确定。
  9. 单击已安装的 jre 按钮
  10. 从中选择 jre1.8(如果 jre1.8 不存在,请单击添加按钮并添加它)。
  11. 单击完成。
  12. 单击确定。
  13. 哇!你会发现你的代码正在运行。
于 2017-09-06T22:38:03.273 回答
0

usr/share/tomcat/conf/tomcat.conf尝试在 /中为 ld_path设置正确的值:

LD_LIBRARY_PATH="/usr/lib/oracle/11.2/client64/lib:/usr/lib64"
于 2016-01-14T14:20:37.167 回答