Ich möchte mit sqlplus eine Verbindung zu einer Oracle-Datenbank auf einem anderen Host herstellen. [Diese Seite] (http://thomas.eibner.dk/oracle/sqlplus/) schlug vor, ein Element zu meinen tnsnames hinzuzufügen, um eine Verbindung zu dieser Datenbank herzustellen
local_SID =
(DESCRIPTION =
(ADDRESS = (PROTOCOL= TCP)(Host= hostname.network)(Port= 1521))
(CONNECT_DATA = (SID = remote_SID))
)
und diesen dann in Sqlplus zu verwenden
sqlplus user/pass@local_SID
In meinem Fall ist es jedoch nicht möglich, die lokalen tnsnames zu ändern. Ist es möglich, eine Verbindung zu einer entfernten Datenbank herzustellen, indem man einfach das Argument sqlplus verwendet, ohne tnsnames ändern zu müssen? Etwa so
sqlplus user/pass@[email protected] ;( I know, this one is not valid)
sqlplus user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))
Vielleicht, und das könnte von der Kommandozeilenumgebung abhängen, die Sie verwenden, müssen Sie den String in Anführungszeichen setzen, etwa so
sqlplus "user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))"
oder
sqlplus 'user/pass@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=hostname.network)(Port=1521))(CONNECT_DATA=(SID=remote_SID)))'
Sie können dafür [easy connect] (https://docs.oracle.com/cd/E11882_01/network.112/e41945/naming.htm#NETAG255) verwenden:
sqlplus usr/[email protected]/remote_service_name
Um easy connect auf Ihrem Rechner zu aktivieren, müssen Sie es zum NAMES.DIRECTORY_PATH
in sqlnet.ora hinzufügen, z.B.:
NAMES.DIRECTORY_PATH=(EZCONNECT)
Wenn Ihr Listener an einem Nicht-Standard-Port liegt, verwenden Sie [email protected]:port/...
.
Es scheint, dass Sie einen Dienstnamen angeben müssen, nicht eine SID; sie können gleich sein, aber wenn nicht, müssen Sie das vom Server erhalten.
Erstellen Sie eine Kopie der Datei tnsnames.ora in einem Verzeichnis, in das Sie schreiben können, ändern Sie die Datei entsprechend und setzen Sie dann die Umgebungsvariable TNS_ADMIN auf den Speicherort dieses Verzeichnisses.
z.B.:
cp $ORACLE_HOME/network/admin/tnsnames.ora /tmp/tnsnames.ora
# edit the /tmp/tnsnames.ora file to add your entries
# Set the $TNS_ADMIN environment variable so that sqlplus knows where to look
export TNS_ADMIN=/tmp