Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Warum kann ich mit SQLcl keine Verbindung über jdbc herstellen

Es sieht so aus, als ob Ihre SID und Ihr Dienstname nicht identisch sind. In SQL Developer scheinen Sie die SID zu verwenden - zumindest in der von Ihnen angezeigten benutzerdefinierten JDBC-URL - wie durch den Doppelpunkt in :vdbsl4 angegeben .

Ihre SQLcl-URL verwendet den Dienstnamen, wie durch den Schrägstrich in /vdbsl14 angegeben . Die Verwendung der SID stattdessen (d. h. das Ändern des / in :) in dieser URL sollte funktionieren, da JDBC verwendet wird:

sqlcl username/[email protected]:1521:vdbsl14

Alternativ (und meiner Meinung nach am besten) finden Sie heraus, wie Ihr Dienstname tatsächlich lautet. Wenn Sie über ausreichende Berechtigungen für die Datenbank verfügen, können Sie show parameters service_names ausführen von SQL Devleoper, oder wenn Sie als DBA Zugriff auf den Server haben, können Sie lsnrctl services ausführen , oder schauen Sie sich sogar die tnsnames.ora an falls ein TNS-Alias ​​definiert ist, der den Dienstnamen anzeigt. (listener.ora wird wahrscheinlich nicht helfen, könnte aber Hinweise geben oder, wenn Sie Glück haben, einen Standarddienstnamen anzeigen).

Sie können diesen Dienstnamen in einer JDBC-URL als /service_name verwenden .

Sie können auch einen TNS-Alias ​​von SQLcl (oder SQL*Plus) verwenden. Möglicherweise haben Sie bereits eine tnsnames.ora verfügbar; Wenn nicht, können Sie es möglicherweise von Ihrem Server kopieren oder ein eigenes erstellen. Das kann sich auf die SID oder den Dienstnamen beziehen.

Sie können sogar eine vollständige TNS-Beschreibung an SQL*Plus übergeben (bei SQLcl nicht sicher), aber das ist etwas unangenehm. Wenn Sie keine tnsnames.ora haben/möchten Sie können die 'easy connect'-Syntax verwenden, die die gleiche ist, die Sie für SQLcl verwenden - aber das hat um der Dienstname zu sein, erlaubt er keine SIDs.