Wie kann ich sqlplus verwenden, um eine Verbindung zu einer Oracle-Datenbank auf einem anderen Host herzustellen, ohne meine eigene tnsnames.ora zu ändern?

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@remote_SID@hostname.network ;( I know, this one is not valid)
Lösung
 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)))'
Kommentare (0)

Sie können dafür [easy connect] (https://docs.oracle.com/cd/E11882_01/network.112/e41945/naming.htm#NETAG255) verwenden:

sqlplus usr/pass@hostname.network/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 ...@hostname.network: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.

Kommentare (3)

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
Kommentare (2)