Wie kommt es verbindet sqlplus nicht?
Frage
Mein Ziel ist es zu einer Oracle 9i-Instanz von meinem O X-Rechner zu verbinden. Ich habe die Installationsanweisungen hier und bekam durch sie ohne Fehler (schließlich). Allerdings bin ich, dass sqlplus zu finden, ist keine Verbindung herstellen:
[ ethan@gir ~ ]$ sqlplus xxx/yyy@zzz
SQL*Plus: Release 10.2.0.4.0 - Production on Fri Apr 17 10:13:08 2009
Copyright (c) 1982, 2007, Oracle. All Rights Reserved.
looooong wait ...
ERROR:
ORA-12170: TNS:Connect timeout occurred
Enter user-name: xxx
Enter password:
ERROR:
ORA-12162: TNS:net service name is incorrectly specified
Enter user-name:
Meine tnsnames.ora
Datei ...
zzz =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = dbhost)
(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = zzz)
)
)
Vielleicht gibt es eine Umgebungsvariable, die eingestellt werden muss?
UPDATE
Able DB Host-Maschine kein Problem ping.
Versuchte ...
sqlplus xxx/yyy@//dbhost/zzz
Got ...
ERROR:
ORA-12170: TNS:Connect timeout occurred
Versuchte SID
anstelle von SERVICE_NAME
in tnsnames.ora. Haben Sie nicht scheinen, um das Ergebnis zu ändern. Kehrte zurück zu SERVICE_NAME
.
Letzten paar Einträge in sqlnet.log ...
***********************************************************************
Fatal NI connect error 12170.
VERSION INFORMATION:
TNS for MacOS X Server: Version 10.2.0.4.0 - Production
TCP/IP NT Protocol Adapter for MacOS X Server: Version 10.2.0.4.0 - Production
Time: 17-APR-2009 10:33:06
Tracing not turned on.
Tns error struct:
ns main err code: 12535
TNS-12535: Message 12535 not found; No message file for product=network, facility=TNS
ns secondary err code: 12560
nt main err code: 505
TNS-00505: Message 505 not found; No message file for product=network, facility=TNS
nt secondary err code: 60
nt OS err code: 0
***********************************************************************
Fatal NI connect error 12170.
VERSION INFORMATION:
TNS for MacOS X Server: Version 10.2.0.4.0 - Production
TCP/IP NT Protocol Adapter for MacOS X Server: Version 10.2.0.4.0 - Production
Time: 17-APR-2009 11:24:08
Tracing not turned on.
Tns error struct:
ns main err code: 12535
TNS-12535: Message 12535 not found; No message file for product=network, facility=TNS
ns secondary err code: 12560
nt main err code: 505
TNS-00505: Message 505 not found; No message file for product=network, facility=TNS
nt secondary err code: 60
nt OS err code: 0
teilweise Antwort
Vielen Dank allen für Ihre Antworten. Sie waren hilfsbereit. Ich fand, dass es ein DNS-Problem war. Ich konnte durch den Hostnamen anpingen, so dachte, dass sollte gut funktionieren. Ich habe auch versucht i.p. Adresse. Es stellte sich heraus, dass ich brauchte, die interne "10.1.x.x" i.p. Adresse für sie auf diesem O X-Rechner zu arbeiten (aber Hostname ist in Ordnung unter Windows).
An diesem Punkt kann ich eine Verbindung mit ...
sqlplus xxx/yyy@//INTERNAL_IP/zzz
Doch mit diesen Werten in tnsnames.ora eingegeben, dies immer noch nicht funktioniert ...
sqlplus xxx/yyy@zzz
...
ORA-12154: TNS:could not resolve the connect identifier specified
ich für eine Probe tnsnames.ora Datei gesucht, die zu nahe waren, was ich brauchte und kopierten den Inhalt in meine Datei. Geändert, um die params und jetzt alles funktioniert. Nicht sicher, warum ich war nicht funktioniert.
Lösung
Da Sie einen 10g
-Client verwenden, ist es ratsam, Easy Connect
Syntax verwenden statt:
export TWO_TASK=//dbhost/zzz
sqlplus xxx/yyy
oder gerade dies:
sqlplus 'xxx/yyy@//dnhost/zzz'
Auch Ihre ORACLE_HOME
Punkte in den richtigen Ordner überprüfen: tnsnames.ora
in $ORACLE_HOME/network/admin/tnsnames.ora
gesucht
Andere Tipps
Ihre Klammern scheinen korrekt.
Versuchen Sie, die SID mit:
Das folgende ist ein Beispiel für eine Datei tnsnames.ora:
IDENTIFIER =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP) (HOST = userid.myhosteddb.net)(PORT = 1521))
)
(CONNECT_DATA = (SID = odb))
)
Sie können mit
sqlplus user/password@servicename_host
Wenn Sie keine Verbindung herstellen können Sie verwenden können,
sqlplus user/password@(DESCRIPTION=((ADDRESS=(PROTOCOL = TCP)(HOST = dbhost)(PORT = 1521))(CONNECT_DATA=(SERVICE_NAME = zzz)))
Wenn Sie Linux verwenden, eine andere * Nix OS müssen Sie Anführungszeichen verwenden sonst die () werden von der Shell interpretiert
z
sqlplus user/password@'(DESCRIPTION=((ADDRESS=(PROTOCOL = TCP)(HOST = dbhost)(PORT = 1521))(CONNECT_DATA=(SERVICE_NAME = zzz)))'
Es ist wahrscheinlich eine sqlnet.log Datei in Ihrem Arbeitsverzeichnis erzeugt wird. Dies kann Ihnen helfen, oder wenn Sie den Inhalt veröffentlichen könnte es uns weitere Informationen geben.
In Ihrem Beispiel versucht man zwei verschiedene Dinge. Auf der Kommandozeile verwendet, um Sie „xxx / yyy @ zzz“. Es sieht aus wie das ist den „zzz“ Eintrag in tnsnames.ora erfolgreich zu finden, aber das Timeout gibt an, dass es auch immer aus dem Server keine Antwort erhält. Können Sie erfolgreich ping dbhost?
Auf dem zweiten Versuch die Sie gerade eingegeben „xxx“ für den Benutzernamen; das macht Sinn, wenn man nicht daran gewöhnt, SQLPlus sind, aber wie Sie sehen können es keinen Punkt, wo Sie aufgefordert, den Namen der Datenbank. Also in diesem Fall wurde versucht, ohne einen Dienstnamen „xxx / yyy“ zu verbinden, auf den zweiten Fehler führt. Dies bedeutet nur, dass Sie nicht über einen Standard-Service-Namen eingerichtet haben. Also dieser Fehler kommt aus einer unvollständigen Eingabe. (Sie würden „xxx @ zzz“ für den Benutzernamen eingeben den Namen des Dienstes an dieser Eingabeaufforderung angeben. Sie können tatsächlich die gesamte Verbindungszeichenfolge „xxx / yyy @ zzz“ an der Benutzereingabeaufforderung eingeben, wenn Sie das Passwort Wesen nichts ausmacht sichtbar.)
Haben Sie versucht, telnet auf den offen Port zu bekommen, um sicherzustellen, dass eine Firewall nicht blockiert? kann einen Versuch Telnet-Port-num Host wert sein
Haben Sie Ihre Umgebung mit der oraenv Skript?
Haben Sie tnsping
versucht?
$ tnsping $ORACLE_SID
Vielleicht wird es helfen, die Ausgabe auf einer Maschine zu vergleichen, die mit dem Ausgang auf einer Maschine keine Verbindung, die keine Verbindung herstellen kann. Zumindest ist das, was ich tue, kurz bevor unsere DBA Kontakt gebracht wird.
Sie können etwas ausführlicher auf dem bekommen, was der Fehler mit dem oerr
Befehl:
$ oerr ora 12170
12170, 00000, "TNS:Connect timeout occurred"
// *Cause: The server shut down because connection establishment or
// communication with a client failed to complete within the allotted time
// interval. This may be a result of network or system delays; or this may
// indicate that a malicious client is trying to cause a Denial of Service
// attack on the server.
// *Action: If the error occurred because of a slow network or system,
// reconfigure one or all of the parameters SQLNET.INBOUND_CONNECT_TIMEOUT,
// SQLNET.SEND_TIMEOUT, SQLNET.RECV_TIMEOUT in sqlnet.ora to larger values.
// If a malicious client is suspected, use the address in sqlnet.log to
// identify the source and restrict access. Note that logged addresses may
// not be reliable as they can be forged (e.g. in TCP/IP).
Ich hatte ein ähnliches Problem und es scheint, dass Oracle sqlplus war das Problem!
Anschließen wie eine dieser Arbeiten:
> sqlplus MyUsername/MyPassword@MyHostname:1521/MyServiceName
> sqlplus MyUsername/MyPassword@//MyHostname:1521/MyServiceName
(die // ist optional vor dem Hostnamen). Allerdings Passwort Weglassen oder beide Benutzer / Pass ausfällt wie folgt aus:
sqlplus @//MyHostname:1521/MyServiceName
SQL*Plus: Release 11.2.0.4.0 Production on Thu Apr 2 15:59:49 2015
Copyright (c) 1982, 2013, Oracle. All rights reserved.
SP2-0310: unable to open file "//MyHostname:1521/MyServiceName.sql"
Enter user-name: MyUsername
Enter password: MyPassword
ERROR:
ORA-12162: TNS:net service name is incorrectly specified
Also, auch wenn sqlplus fragt Sie nach dem Benutzername / Passwort, wird es dummerweise mit einer falschen Fehlermeldung fehlschlagen, wenn Sie sie eingeben an der Eingabeaufforderung in. Es funktioniert nur, wenn man sie platzieren (beide!) Am Anfang der Verbindungszeichenfolge.
Dumme Oracle !!!
FOLLOW THIS LINK FÜR SCHRITT FÜR SCHRITT Installation und Installationsverfahren POST .. vorsicht mit.
Und mit SQL verbinden Plus:
- WiLL NUTZERNAME System BE LAUT BETRIEB oben angegebenen Link
- Ihr Passwort darf nicht Tiger, aber die, die Sie zu Beginn der Installation gesetzt
P. S: nicht Panik, wenn Sie Problem (Browser-Unverträglichkeit) verbindet Oracle Enterprise Manager zu finden, während der Installation zu testen, ob Ihr Browser Google Chrome. trifft die Rückseite Pfeil und nächste Seite Pfeil zustimmen Bedingungen und auf OK klicken.
Ich löste dieses Problem auf meinem Rechner in einem Tag .. aber es wird eine Frage des paar hors für Sie sein.
soruces: i am Informatik-Ingenieure meist Code in Java
hatte ich den gleichen Fehler (ORA-12162: TNS: net-Service-Name falsch angegeben ist), aber einen anderen Grund (unter Windows 7 Enterprise 64-Bit). Hoffe, das hilft jemand:
I.T. bei meiner Arbeit installierte 32bit und 64bit Oracle und basierte auf meinem PATH-Variable, sah die Schale in dem 64-Bit-Pfad für SQLPLUS.exe im Vergleich zu dem 32-Bit-Pfad.
Die verschiedenen Pfade verwenden unterschiedliche TNSNAMES.ora Dateien und ich habe nicht meine Verbindungszeichenfolge in der 64-Bit-Pfad:
Oracle \ product \ 11.1.0 \ client_1_64bit \ network \ admin \ TNSNAMES.ora
Ich hatte nur die Verbindungszeichenfolge in den 32-Bit-TNSNAMES.ora: Oracle \ product \ 11.1.0 \ client_1_32bit \ network \ admin \ TNSNAMES.ora
Auch, weil es mehrere ORACLE-Installationen waren ich die Variable ORACLE_HOME Umgebung entfernen musste, so dass beide Installationen verschiedene Home-Verzeichnisse verwenden können.