webentwicklung-frage-antwort-db.com.de

ORA-12170: TNS: Verbindungszeitüberschreitung aufgetreten

Ich habe versucht, mit Oracle Toad eine Verbindung zu der Datenbank hier auf meinem Laptop herzustellen, aber ich habe diesen Fehler weiterhin erhalten:

ORA-12170: TNS: Verbindungszeitüberschreitung aufgetreten

Was sind die möglichen Gründe, warum ich diesen Fehler immer wieder hatte? 

Ich habe gestern auf dieselbe Datenbank zugegriffen und konnte darauf zugreifen.

14
Pseudonymous

[Sammeln der Antworten in den Kommentaren]

Das Problem ist, dass der Oracle-Dienst unter einer IP-Adresse ausgeführt wird und der Host mit einer anderen IP-Adresse konfiguriert ist.

Um die IP-Adresse des Oracle-Dienstes anzuzeigen, geben Sie den Befehl lsnrctl status aus und überprüfen Sie die angegebene Adresse (in diesem Fall ist 127.0.0.1 der localhost):

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(Host=127.0.0.1)(PORT=1521)))

Geben Sie den Befehl ipconfig (unter Windows) oder ifconfig (unter Linux) ein, um die Host-IP-Adresse anzuzeigen.

In meiner Installation funktioniert der Oracle-Dienst jedoch nicht Wenn auf localhost-Adresse festgelegt, muss ich die tatsächliche Host-IP-Adresse einstellen (zum Beispiel 192.168.10.X).

Um dieses Problem in der Zukunft zu vermeiden, verwenden Sie kein DHCP zum Zuweisen einer IP-Adresse des Hosts, sondern ein statisches.

6
Zac

Es ist wegen widersprüchlicher SID. In Ihrer Oracle12cBase\app\product\12.1.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora-Datei lautet die Verbindungsbeschreibung für ORCL beispielsweise wie folgt:

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(Host = localhost)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

Sie versuchen, eine Verbindung herzustellen, indem Sie die Verbindungszeichenfolge verwenden, wobei dieselbe SID, aber eine andere IP-Adresse (Benutzername/Kennwort) verwendet wird:

sqlplus username/[email protected]: 1521/orcl

Um dies zu beheben, nehmen Sie Änderungen in der Datei tnsnames.ora vor:

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(Host = 192.168.130.52)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
2
Ashish Jain

Problem, weil der Verbindungsaufbau oder die Kommunikation mit einem Client nicht innerhalb des zugewiesenen Zeitintervalls abgeschlossen werden konnte. Dies kann auf Netzwerk- oder Systemverzögerungen zurückzuführen sein.

1
Vishal Tathe

Überprüfen Sie das FIREWALL, um die Verbindung auf dem Server von Ihrem Client aus zuzulassen. Durch Erlauben des Domänennetzwerks oder der Regel zum Erstellen von Regeln.

1
Fajar

Ich habe die gleiche Fehlermeldung erhalten, als ich meinen "hr" -Nutzer von ORCLPDB anschloss, einer steckbaren Datenbank.

Rufen Sie zunächst den Hostnamen und die Portnummer ab, indem Sie an der Windows-Eingabeaufforderung einen Befehl lsnrctl status eingeben. In meinem Fall war es 127.0.0.1 mit der Portnummer 1521

Geben Sie anschließend den folgenden Befehl mit Ihrem Hostnamen und Ihrer Portnummer ein: 

sqlplus username/[email protected]:Port Number/PluggableDatabaseName.

Zum Beispiel:

sqlplus hr/[email protected]:1521/ORCLPDB.
0
Avatar Girase

FEHLERSUCHE (Dok. ID 730066.1)

Verbindungszeitüberschreitungsfehler ORA-3135 und ORA-3136 Ein Verbindungszeitüberschreitungsfehler kann ausgegeben werden, wenn ein Verbindungsaufbau mit der Datenbank die Verbindungs- und Authentifizierungsphasen nicht innerhalb des Zeitraums abschließt, der durch Folgendes festgelegt ist: SQLNET.INBOUND_CONNECT_TIMEOUT und/oder INBOUND_CONNECT_TIMEOUT_ serverseitige Parameter.

Beginnend mit Oracle 10.2 beträgt der Standardwert für diese Parameter 60 Sekunden, in früheren Releases waren es 0, was kein Timeout bedeutet.

Bei einem Timeout erhält das Client-Programm den Fehler ORA-3135 (oder möglicherweise TNS-3135):

Kontakt ORA-3135 verloren

und die Datenbank protokolliert den ORA-3136-Fehler in seinem Alert.log:

Sa 10. Mai 02:21:38 2008 WARNUNG: Zeitüberschreitung bei eingehender Verbindung (ORA-3136) ...

  • Authentifizierung SQL

Wenn sich eine Datenbanksitzung in der Authentifizierungsphase befindet, gibt sie eine Folge von SQL-Anweisungen aus. Die Authentifizierung ist erst abgeschlossen, wenn alle analysiert, ausgeführt und vollständig abgerufen wurden. Einige der SQL-Anweisungen in dieser Liste, z. am 10.2 sind:

select value$ from props$ where name = 'GLOBAL_DB_NAME'

select privilege#,level from sysauth$ connect by grantee#=prior privilege# 
and privilege#>0 start with grantee#=:1 and privilege#>0

select SYS_CONTEXT('USERENV', 'SERVER_Host'), SYS_CONTEXT('USERENV', 'DB_UNIQUE_NAME'),
SYS_CONTEXT('USERENV', 'INSTANCE_NAME'), SYS_CONTEXT('USERENV', 'SERVICE_NAME'), 
INSTANCE_NUMBER, STARTUP_TIME, SYS_CONTEXT('USERENV', 'DB_DOMAIN') 
from v$instance where INSTANCE_NAME=SYS_CONTEXT('USERENV', 'INSTANCE_NAME')

select privilege# from sysauth$ where (grantee#=:1 or grantee#=1) and privilege#>0

ALTER SESSION SET NLS_LANGUAGE= 'AMERICAN' NLS_TERRITORY= 'AMERICA' NLS_CURRENCY= '$'
NLS_ISO_CURRENCY= 'AMERICA' NLS_NUMERIC_CHARACTERS= '.,' NLS_CALENDAR= 'GREGORIAN'
NLS_DATE_FORMAT= 'DD-MON-RR' NLS_DATE_LANGUAGE= 'AMERICAN' NLS_SORT= 'BINARY' TIME_ZONE= '+02:00'
NLS_COMP= 'BINARY' NLS_DUAL_CURRENCY= '$' NLS_TIME_FORMAT= 'HH.MI.SSXFF AM' NLS_TIMESTAMP_FORMAT=
'DD-MON-RR HH.MI.SSXFF AM' NLS_TIME_TZ_FORMAT= 'HH.MI.SSXFF AM TZR' NLS_TIMESTAMP_TZ_FORMAT=
'DD-MON-RR HH.MI.SSXFF AM TZR'

HINWEIS: Die obige Liste von SQL ist nicht vollständig und repräsentiert nicht die Reihenfolge der Authentifizierungs-SQL. Unterschiede können auch von Release zu Release bestehen.

  • Hängt während der Authentifizierung

Die obigen SQL-Anweisungen müssen analysiert, ausgeführt und abgerufen werden, wie dies für alle SQL-Anweisungen in einer Oracle-Datenbank der Fall ist. Daraus folgt, dass jedes Problem, das während dieser Phasen aufgetreten ist und das als Hängen oder schwere langsame Leistung auftritt, zu einem Timeout führen kann.

Symptome für solche Blockierungen werden von der authentifizierenden Sitzung als wartend erkannt: • Cursor: Pin S warten auf X • Latch: Zeilen-Cache-Objekte • Zeilen-Cache-Sperre Andere Arten von Warteereignissen Sind möglich; Diese Liste ist möglicherweise nicht vollständig.

Das Problem hierbei ist, dass die Authentifizierungssitzung blockiert ist und darauf wartet, eine gemeinsam genutzte Ressource zu erhalten, die von einer anderen Sitzung in der Datenbank gespeichert wird. Diese Blockersitzung ist selbst mit einer lang andauernden Aktivität (oder einem eigenen Hang) beschäftigt, die verhindert, dass die gemeinsam genutzte Ressource, die für die Authentifizierungssitzung benötigt wird, rechtzeitig freigegeben wird. Dies führt dazu, dass das Zeitlimit schließlich an die Authentifizierungssitzung gemeldet wird.

  • Fehlerbehebung bei Authentifizierung hängt

In solchen Situationen müssen wir den Blockerprozess ermitteln, der die gemeinsam genutzte Ressource enthält, die von der Authentifizierungssitzung benötigt wird, um zu sehen, was mit ihm passiert.

Typische Diagnosen, die in solchen Fällen verwendet werden, sind folgende:

  1. Drei aufeinanderfolgende Systemzustandsabbilder auf Ebene 266 während der Zeit, in der eine oder mehrere Authentifizierungssitzungen blockiert sind. Es ist wahrscheinlich, dass die Blockierungssitzung zu Timeouts für mehr als einen Verbindungsversuch geführt hat. Daher können Systemstate-Dumps auch dann nützlich sein, wenn die Zeit, die zu ihrer Erzeugung benötigt wird, den Zeitraum eines einzelnen Timeouts überschreitet, z. 60 sek:
      $ sqlplus -prelim '/ as sysdba' 

       oradebug setmypid 
       oradebug unlimit 
       oradebug dump systemstate 266 
       ...wait 90 seconds 
       oradebug dump systemstate 266 
       ...wait 90 seconds 
       oradebug dump systemstate 266 
       quit
  • ASH-Berichte, die z. 10-15 Minuten eines Zeitraums, in dem mehrere Timeout-Fehler aufgetreten sind.
  • Wenn möglich, werden in der V $ LATCHHOLDER-Ansicht zwei aufeinanderfolgende Abfragen für den Fall angezeigt, dass die gemeinsam genutzte Ressource ein Latch ist . Select * aus v $ latchholder; Die Systemstate-Dumps sollten bei der Identifizierung der Blockersitzung helfen. Die Ebene 266 zeigt uns, in welchem ​​Code sie ausgeführt wird, was bei der Suche nach einem vorhandenen Fehler als Hauptursache hilfreich sein kann.

Beispiele für Probleme, die zu Authentifizierungsstörungen führen können

  • Nicht veröffentlichter Fehler 6879763 Fehler in gemeinsamem Pool-Simulator durch Patch behoben. __ für nicht veröffentlichten Fehler 6966286, siehe Hinweis 563149.1 
  • Unveröffentlichter Problemumgehungsparameter für Fehler 7039896 _ enable_shared_pool_durations = false siehe Hinweis 7039896.8

  • Andere Ansätze zur Vermeidung des Problems

In einigen Fällen kann es möglich sein, Probleme mit Authentication SQL zu vermeiden, indem Sie solche Anweisungen kurz nach dem Starten der Instanz im Shared Pool anheften und sie neu geladen werden. Sie können den folgenden Artikel verwenden, um darauf hinzuweisen: Dokument 726780.1 Wie wird ein Cursor mit DBMS_SHARED_POOL.KEEP im Shared Pool festgelegt?

Durch das Pinning wird verhindert, dass sie aufgrund von Inaktivität und Alterung ausgespült werden. Daher wird verhindert, dass sie in der Zukunft erneut geladen werden müssen, d. H. Sie müssen erneut geprüft und anfällig für Probleme mit der Authentifizierung werden.

0
Tagar
open sqlnet.ora  

NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
SQLNET.INBOUND_CONNECT_TIMEOUT=360
SQLNET.RECV_TIMEOUT=10
SQLNET.SEND_TIMEOUT=10

http://docs.Oracle.com/cd/B19306_01/network.102/b14213/sqlnet.htm

0