如果使用 Oracle 钱包,正确的 JDBC URL 语法是啥?

Posted

技术标签:

【中文标题】如果使用 Oracle 钱包,正确的 JDBC URL 语法是啥?【英文标题】:What is correct JDBC URL syntax if Oracle wallets are used?如果使用 Oracle 钱包,正确的 JDBC URL 语法是什么? 【发布时间】:2011-10-03 11:08:51 【问题描述】:

有 2 种 URL 语法,旧语法仅适用于 SID,新语法适用于 Oracle 服务名称。 旧语法

jdbc:oracle:thin:@[HOST][:PORT]:SID

新语法

jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE

什么是正确的 JDBC URL 语法如果使用 Oracle 钱包? 根据this article,应使用以下 URL 语法:

jdbc:oracle:thin:/@db_alias  

但我可以看到以下 URL 也可以:

jdbc:oracle:thin:@db_alias

哪些语法是正确的?

【问题讨论】:

【参考方案1】:

当您使用带有 JDBC 字符串的 Oracle Wallet 时,两种语法都允许,只要您的“db_alias”显然已在您的 Wallet 存储中设置。

现在,就在 Oracle Wallet 中使用 SQL*Plus 而言,Oracle Wallet 允许的唯一格式是:

/@db_alias

顺便说一句,您引用的那篇文章(和others)指出,如果您使用 OCI 驱动程序而不是瘦客户端,则只能使用 JDBC 进行连接。这通常是因为 Java 不了解 Oracle TNS 和 SQLNET 文件。这实际上是不正确的;您可以使用 JDBC 瘦驱动程序与最新的 Oracle 客户端和 JDBC 驱动程序进行连接,但它只需要一些设置。有关这方面的信息,请参阅 http://tech.shopzilla.com/2011/09/oracle-wallet-with-thin-driver-with-connection-pool-with-database-timeouts/,并在下方查看简短摘要。

将 Oracle Wallet 与 JDBC 瘦驱动程序结合使用

    配置 Oracle Wallet as usual(Oracle 数据库客户端附带),在您的 tnsnames.ora 和 sqlnet.ora 文件中创建适当的条目,并在您的钱包中创建凭证条目 将以下 JAR 添加到您的 Java 类路径中。您应该从 Oracle 11g 客户端获得这些,它们可以在客户端安装所在的“jdbc”和/或“jlib”目录中找到 Oracle JDBC 驱动程序 - ojdbc6.jar Oracle 钱包 - oraclepki.jar Oracle 安全证书 - osdt_cert.jar Oracle 安全核心 - osdt_core.jar 使用以下系统属性启动您的 Java 应用程序,指向您各自的 TNS 和钱包目录: -Doracle.net.tns_admin=C:\myTNSdir -Doracle.net.wallet_location=C:\mywalletdir 然后您可以在您的应用程序中使用瘦 JDBC 连接字符串,如下所示:jdbc:oracle:thin:/@MY_WALLET_DB_ENTRY

【讨论】:

我正在尝试从休眠应用程序中实现相同的效果,这应该可以工作。但我得到 oracle.net.ns.NetException: SO Exception was generated at oracle.net.resolver.AddrResolution.resolveAddrTree(AddrResolution.java:629)

以上是关于如果使用 Oracle 钱包,正确的 JDBC URL 语法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat、JDBC 瘦客户端和 Oracle 钱包

JDBC预言机钱包连接

无法使用 SSO 钱包将 Oracle 与 Apache Spark 连接

逃脱的正确方法是啥?使用 Oracle 12c MATCH_RECOGNIZE 时 JDBC PreparedStatement 中的字符?

向 Oracle 钱包添加证书

我们如何正确本地化钱包通行证的 strip.png?