Stellen Sie über die Befehlszeile eine Verbindung mit sql plus her, indem Sie eine Verbindungszeichenfolge verwenden

41

Nehmen wir an, ich habe eine Oracle-Datenbank. Ich habe einen Benutzernamen = x, Passwort = y, Datenbank = z. Ich kenne auch den Port = a, SID = b, Hostname = c.

Wie muss ich mich also richtig verbinden? Ich habe viele Optionen verwendet, wie:

sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED)))'

sqlplus (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=b)))

Wenn ich diese Befehlszeilen abschicke, erhalte ich normalerweise folgende Fehlermeldungen:

ORA-12560: TNS: Protokolladapterfehler
ORA-12514: TNS: Listener kennt den Dienst derzeit nicht

Vielen Dank im Voraus!!

Edvinas
quelle
3
Vorausgesetzt, Sie haben den richtigen Host / Port, scheint mir die Instanz nicht zu laufen oder nicht beim Listener registriert zu sein.
Colin 't Hart
1
mit ezconnect:sqlplus x/y@c:a/b
Dieter DHoker
1
für die Aufzeichnung, Ihr zweites Beispiel funktioniert (zumindest) für mich, wenn ich es mit Anführungszeichen umschließe. like x @ "(DESCRIPTION = (ADDRESS = (PROTOKOLL = TCP) (HOST = c) (PORT = a)) (CONNECT_DATA = (SID = b)))"
Rogerdpack
Öffnen -> Dienste im Fenster Start-> oracleservicexe Es funktioniert bei mir.
Prakash

Antworten:

74

Hast du versucht

sqlplus username/password@host:port/service
sqlplus x/y@c:a/b

Moderne Versionen von sqlplus (Version 11 oder neuer) verstehen diese Syntax und Sie benötigen keine tnsnames.ora-Datei.

Hanspeter Oberlin
quelle
2
Es funktioniert perfekt
Gajotres
4
welche Version? Funktioniert bei mir nicht unter CentOS FEHLER: ORA-12154: TNS: Konnte die angegebene Verbindungs-ID nicht auflösen
Edmondo1984
Standardportnummer: 1521
Ivan Chau
4
Ich habe SID statt Service so mit ":" anstelle von "/" für mich gearbeitet sqlplus Benutzername / Passwort @ host: port: sid
Pratik Goenka
1
Das mitgelieferte sqlplus v11.2.0.1.0unterstützt keine host:portSyntax. Scheint 11.2.0.4.0schon unterstützt ...
Gavenkoa
12

Am einfachsten ist es, mit der Datei tnsnames.ora eine Verbindung zur Datenbank herzustellen. Bearbeiten Sie es dazu und fügen Sie einen neuen Eintrag hinzu: Diese Datei befindet sich normalerweise im Verzeichnis $ ORACLE HOME \ NETWORK \ ADMIN.

myDb  =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(Host = c)(Port =a))
   )
 (CONNECT_DATA =
   (SERVICE_NAME =b)
 )
)

und dann könntest du dich mit der db verbinden:

sqlplus x / y @ myDb

eliatou
quelle
Um zu vermeiden, dass ein Kennwort in der Befehlszeile angezeigt wird,
lesen
7

Zum Originalposter ... in der ersten Option haben Sie eine schließende Klammer verpasst

Falsch: (Ihre Zeichenfolge)

sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED)))'

Richtig:

sqlplus x/y@'(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=c)(PORT=a))(CONNECT_DATA=(SID=z)(SERVER=DEDICATED))))'
O. Godoy
quelle
2

Ihre sqlplus-Zeile sieht korrekt aus. Überprüfen Sie Folgendes:

  1. Sie können eine Verbindung als sysdba auf dem Datenbankserver selbst herstellen.
  2. Sie können als der Benutzer, den Sie versuchen, auf dem Datenbankserver selbst eine Verbindung herstellen.
  3. Sie können den Datenbankserver von dem Computer aus anpingen, von dem aus Sie eine Verbindung herstellen möchten.
  4. Sie können den Listener von dem Computer aus überwachen, von dem aus Sie eine Verbindung herstellen möchten.

Wenn alle diese Check-Outs abgeschlossen sind, möchten Sie möglicherweise eine neue Verbindungslinie erstellen, um sicherzustellen, dass Sie keinen Tippfehler haben.

Leigh Riffel
quelle
1

Möglicherweise ist Ihre Datenbank nicht aktiv. Wenn der Computer neu gestartet wurde und die Instanz nicht auf Autostart eingestellt ist (und nicht manuell gestartet wurde), müssen Sie den Dienst möglicherweise selbst starten.

Wenn Sie Zugriff auf den Bildschirm Dienste haben, können Sie dies von dort aus tun. Oder Sie können dies über die Befehlszeile tun.

Gehen Sie zur Eingabeaufforderung und geben Sie die folgenden Befehle ein:

set oracle_sid=ORCL

net start oracleserviceORCL

Das erste setzt die Oracle SID; der zweite startet tatsächlich den Dienst.

Karthick
quelle
0

Auszug aus der sqlplus-Hilfe:

kann in Form von Net Service Name oder Easy Connect vorliegen.

  @[<net_service_name> | [//]Host[:Port]/<service_name>]
user82219
quelle
-2

Ich fand, dass es einfach ist, eine Remotedesktopverbindung herzustellen und die Eingabeaufforderung zu öffnen und dann eine Verbindung herzustellen, indem:

sqlplus sys/YourPassword as sysdba

Kelly
quelle
-3

Sie sollten die Dienste Ihrer Datenbanken starten. Gehen Sie dazu in das Startmenü -> Ausführen und starten. services.mscSuchen Sie dort nach Datenbankdiensten und starten Sie diese. Danach wird es anfangen zu arbeiten.

user139417
quelle
-4

Das funktioniert bei mir unter Oracle 11G

sqlplus orcl_usr/orcl_usr_pass@host/sid
Agron Daka
quelle