Oracle
 sql >> Database >  >> RDS >> Oracle

Perché non riesco a connettermi tramite jdbc usando SQLcl

Sembra che il tuo SID e il nome del servizio non siano gli stessi. In SQL Developer sembra che tu stia utilizzando il SID - almeno nell'URL JDBC personalizzato che hai mostrato - come indicato dai due punti in :vdbsl4 .

Il tuo URL SQLcl utilizza il nome del servizio, come indicato dalla barra in /vdbsl14 . L'utilizzo del SID invece (cioè la modifica di / in :) in quell'URL dovrebbe funzionare poiché utilizza JDBC:

sqlcl username/[email protected]:1521:vdbsl14

In alternativa (e preferibilmente, secondo me) scopri qual è effettivamente il nome del tuo servizio. Se hai sufficienti privilegi sul database puoi fare show parameters service_names da SQL Devleoper, oppure se hai accesso al server come DBA puoi fare lsnrctl services , o anche guardare tnsnames.ora nel caso sia definito un alias TNS che mostra il nome del servizio. (listener.ora non è in grado di aiutare, ma potrebbe fornire suggerimenti o, se sei fortunato, mostrare un nome di servizio predefinito).

Puoi utilizzare quel nome di servizio in un URL JDBC, come /service_name .

Puoi anche usare un alias TNS da SQLcl (o SQL*Plus). Potresti già avere un tnsnames.ora a disposizione; in caso contrario potresti essere in grado di copiarlo dal tuo server o crearne uno tuo. Questo può fare riferimento al SID o al nome del servizio.

Puoi anche passare una descrizione TNS completa a SQL*Plus (non sono sicuro di SQLcl), ma è un po' spiacevole. Se non hai/vuoi un tnsnames.ora puoi usare la sintassi "easy connect", che è la stessa che stai usando per SQLcl, ma che ha essere il nome del servizio, non consente i SID.