Domanda

Oracle ha questo concetto di consentire agli utenti del database di essere identificati dall'utente del sistema operativo che sta eseguendo il programma che si sta connettendo a Oracle. Vedi qui .

Questo ti permette di fare, come ad esempio quell'utente su una macchina unix, un comando come:

sqlplus /

Sto tentando di scrivere un programma Java per Oracle 10.2 che si connette senza un nome utente o una password. La scelta ovvia di url:

jdbc:oracle:thin:/@localhost:1521:MYDBSID

non funziona, dando un errore (mi dispiace non ho l'errore disponibile al momento).

Ho provato anche molte altre forme di farlo, ma senza fortuna.

Qualcuno ha qualche suggerimento su come posso connettere un programma Java a Oracle usando il metodo di identificazione del sistema operativo?

È stato utile?

Soluzione

Il driver JDBC Thin è un'implementazione Java pura al 100% che non è in grado di raccogliere le informazioni necessarie dal sistema operativo.

Il driver OCI JDBC può farlo! Usa jdbc: oracle: oci8: / @ MYDBSID , richiederà l'installazione del driver Oracle su quella macchina, non è un problema se si tratta di un server (è più veloce da avviare e supporta molte altre funzionalità rispetto al driver sottile)

Altri suggerimenti

Il driver jdbc fornito da Oracle non ha la capacità di raccogliere il nome utente e la password del sistema operativo dall'URL fornito. Supponiamo che ci siano provider di driver JDBC di terze parti per ORACLE, uno di questi potrebbe fornire la funzionalità richiesta. dovresti cercare su Google

Grazie a quelli che hanno risposto. Siamo andati con il driver OCI.

Ho trovato documentazione per suggerire che Oracle 11g supporta supporta l'autenticazione dell'utente del sistema operativo tramite il thin driver:

http://www.orindasoft.com/.com /public/Oracle_JDBC_JavaDoc/javadoc1110/oracle/jdbc/OracleConnection.html#CONNECTION_PROPERTY_THIN_VSESSION_OSUSER

Non ho una configurazione 11g per testarlo, quindi non posso essere sicuro che funzioni.

Se si accede a Oracle da un appserver J2EE, è possibile ottenere un risultato simile utilizzando JNDI per acquisire un'origine dati.

Il thin driver 11g può connettersi utilizzando l'autenticazione Kerberos.

Vedi Connettiti a un database Oracle usando Kerberos

prova a seguire jdbc: oracle: thin: username / password @ localhost: 1521: MYDBSID

devi specificare le informazioni sull'account

sqlplus / as sysdba su una macchina unix che passa attraverso l'autenticazione del sistema operativo

Il supporto dell'autenticazione del sistema operativo nel thin driver JDBC è stato aggiunto in 11g (è possibile scaricare il thin driver JDBC da 11.2.0.4 su OTN).

Nota che devi consentire l'autenticazione del SO remoto sul server (su TCP) altrimenti funzionerà solo con sqlplus usando IPC o BEQ localmente. Nel tuo file init.ora, aggiungi questo:

REMOTE_OS_AUTHENT = TRUE

Quindi se l'utente è " osuserdemo " sul computer client, creare un utente del database come questo e riavviare il DB:

 CREATE USER OSUSERDEMO IDENTIFIED EXTERNALLY;
 GRANT CONNECT,CREATE SESSION,RESOURCE TO OSUSERDEMO; 

E il thin driver JDBC dovrebbe essere in grado di connettersi senza nome utente o password.

Vale la pena notare che questa funzione, considerata altamente non protetta, è stata disattivata in 12c.

jdbc: oracle: oci: @ funziona con ojdbc6.jar e Oracle 11g2

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top