2011-10-03 10 views
7

Esistono due sintassi URL, una vecchia sintassi che funzionerà solo con SID e la nuova con il nome del servizio Oracle.
vecchia sintassiQual è la sintassi corretta dell'URL JDBC se si utilizzano i portafogli Oracle?

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

Nuova sintassi

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

Qual è corretta sintassi JDBC se si utilizzano Oracle portafogli?
Secondo this article seguente sintassi URL deve essere utilizzato:

jdbc:oracle:thin:/@db_alias 

Ma come posso vedere seguente URL lavora troppo:

jdbc:oracle:thin:@db_alias 

Quale di queste sintassi sono corrette?

risposta

19

Quando si utilizza Oracle Wallet con una stringa JDBC, entrambe le sintassi sono consentite, a condizione che "db_alias" sia impostato nel proprio store Wallet ovviamente.

Ora, per quanto riguarda l'utilizzo di SQL * Plus con Oracle Wallet, l'unico formato consentito con Oracle Wallet è:

/@db_alias 

Tra l'altro, tale articolo si fa riferimento (e others) specifica si può solo connettersi utilizzando JDBC se si utilizzano i driver OCI e non il thin client. Questo è/era in genere perché Java non era a conoscenza dei file Oracle TNS e SQLNET. Questo in realtà non è vero; Si è possibile connettersi utilizzando il driver sottile JDBC con l'ultimo client Oracle Client & JDBC, ma richiede solo alcune impostazioni. Vedi http://tech.shopzilla.com/2011/09/oracle-wallet-with-thin-driver-with-connection-pool-with-database-timeouts/ per informazioni su questo e sotto per un breve riassunto.

Utilizzo di Oracle Portafoglio con JDBC Thin driver

  1. Configurare Oracle Portafoglio as usual (che viene fornito con il client del database Oracle), creando le voci appropriate nei file tnsnames.ora e sqlnet.ora così come la voce credenziali nel tuo portafoglio
  2. Aggiungi i seguenti JAR al tuo classpath Java.Si dovrebbe ottenere questi dal client Oracle 11g, e si possono trovare nella sezione "JDBC" e/o directory "jlib" del luogo in cui installare il client è
    • Oracle driver JDBC - ojdbc6.jar
    • Oracle Wallet - oraclepki.jar
    • Oracle Security Certs - osdt_cert.jar
    • Oracle Security Nucleo - osdt_core.jar
  3. avviare l'applicazione Java con le seguenti proprietà di sistema, indicando vostre rispettive TNS e portafoglio directory:
    • -Doracle.net.tns_admin=C:\myTNSdir
    • -Doracle.net.wallet_location=C:\mywalletdir
  4. quindi è possibile utilizzare una stringa di connessione JDBC sottile nella vostra applicazione in questo modo: jdbc:oracle:thin:/@MY_WALLET_DB_ENTRY
+1

bene Wokred senza problemi. Grazie David !!! –

+0

Sto cercando di ottenere lo stesso dall'applicazione di ibernazione, che dovrebbe funzionare. Ma sto ottenendo oracle.net.ns.NetException: SO Eccezione è stata generata \t a oracle.net.resolver.AddrResolution.resolveAddrTree (AddrResolution.java:629) – Betta

Problemi correlati