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

Vol*_*lyy 8 oracle jdbc

有两种URL语法,旧语法只适用于SID,新语法适用于Oracle服务名称.
旧语法

jdbc:oracle:thin:@[HOST][:PORT]:SID
Run Code Online (Sandbox Code Playgroud)

新语法

jdbc:oracle:thin:@//[HOST][:PORT]/SERVICE
Run Code Online (Sandbox Code Playgroud)

如果使用Oracle钱包,那么正确的JDBC URL语法什么?
根据这篇文章,应该使用以下URL语法:

jdbc:oracle:thin:/@db_alias  
Run Code Online (Sandbox Code Playgroud)

但正如我可以看到以下URL也有效:

jdbc:oracle:thin:@db_alias
Run Code Online (Sandbox Code Playgroud)

哪些语法正确?

Dav*_*ert 22

当您使用带有JDBC字符串的Oracle Wallet时,只要您的"db_alias"显示在Wallet商店中,就允许使用这两种语法.

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

/@db_alias
Run Code Online (Sandbox Code Playgroud)

顺便说一句,您引用的那篇文章(以及其他文章)指定只有在使用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 Thin Driver结合使用

  1. 像往常一样配置Oracle Wallet (随Oracle Database Client一起提供),在tnsnames.ora和sqlnet.ora文件中创建相应的条目以及钱包中的凭据条目
  2. 将以下JAR添加到Java类路径中.您应该从Oracle 11g客户端获取这些内容,并且可以在客户端安装所在的"jdbc"和/或"jlib"目录中找到它们.
    • Oracle JDBC驱动程序 - ojdbc6.jar
    • Oracle钱包 - oraclepki.jar
    • Oracle安全证书 - osdt_cert.jar
    • Oracle安全核心 - osdt_core.jar
  3. 使用以下系统属性启动Java应用程序,指向相应的TNS和wallet目录:
    • -Doracle.net.tns_admin=C:\myTNSdir
    • -Doracle.net.wallet_location=C:\mywalletdir
  4. 然后,您可以在应用程序中使用瘦JDBC连接字符串,如下所示: jdbc:oracle:thin:/@MY_WALLET_DB_ENTRY