【问题标题】:jdbc using sqlnet.ora使用 sqlnet.ora 的 jdbc
【发布时间】:2012-12-03 23:07:56
【问题描述】:

我有一个程序想要连接到我们网络上的 Oracle 数据库。这个程序是用java编写的,必须使用jdbc。我们的 PC 设置为使用 sqlnet.ora 文件来确定如何解决的顺序。我们所有的PC首先检查ldap(ldap文件在所有这些PC上指向ldap服务器)然后使用tnsnames.ora文件,但是这个文件现在是空的所以基本上我想使用ldap,但是通过sqlnet.ora。知道 url 参数的连接是什么样的吗?

【问题讨论】:

  • 您使用的是 Type 4 (thin) JDBC 驱动程序吗?还是 Type 2 (OCI) JDBC 驱动程序?如果要使用 Oracle 客户端的网络配置文件,则需要使用 OCI 驱动程序。
  • 以前从未这样做过,所以不确定。我们在所有用户的 PC 上都安装了 Oracle 客户端 11x,所以认为 OCI 驱动程序附带它?

标签: oracle jdbc


【解决方案1】:

来自JDBC Developer's Guide

必须将 oracle.net.tns_admin 系统属性设置为 tnsnames.ora 文件的位置,以便 JDBC Thin 驱动程序可以找到 tnsnames.ora 文件。例如:

System.setProperty("oracle.net.tns_admin", "c:\\Temp");
String url = "jdbc:oracle:thin:@tns_entry";
DriverManager.getConnection(url, ...);

由于系统属性,瘦驱动程序能够找到 tnsnames.ora 文件,从而可以解析 URL 中指定的 TNS 名称。因为瘦驱动程序通常旨在在没有 Oracle 客户端安装的情况下工作,所以默认情况下不启用此功能。

据我所知,您需要 tnsnames.ora,即使指定 TNS 名称,使用瘦驱动程序时也不需要 Oracle 客户端。

如果您的程序不允许设置系统属性,您有两种选择:

  1. 在启动程序时指定它java -Doracle.net.tns_admin=c:/foobar ...
  2. 设置包含-Doracle.net.tns_admin=c:/foobar 的环境变量JAVA_TOOLS_OPTIONS。然后,任何 Java 程序都会自动获取该文件

【讨论】:

  • 不能使用 TNS 名称。这些 PC 上的 TNS 名称文件为空。需要先使用里面有的sqlnet.ora来查看ldap文件。这也是通过应用程序的登录类型屏幕连接而不是代码,所以没有在哪里添加属性。
  • 无法通过此程序的连接配置屏幕设置此属性。
  • @user441521:您是否在这些机器上安装了 Oracle 客户端(即时客户端或普通客户端?)在这种情况下,您可以使用 OCI 驱动程序,请参见此处:docs.oracle.com/cd/E11882_01/java.112/e16548/…
  • @user441521:您可以通过多种方式提供参数。查看我的编辑
【解决方案2】:

来自Oracle JDBC FAQ

jdbc:oracle:oci:@<<TNS alias>>

其中&lt;&lt;TNS alias&gt;&gt; 是通过 SQL*Plus 等方式进行连接时使用的 LDAP 条目

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-27
    相关资源
    最近更新 更多