Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle.DataAccess.Client.OracleException ORA-03135:utrata połączenia

Dzieje się tak, ponieważ Twój kod żąda połączenia z puli połączeń Oracle, a pula połączeń zwraca rozłączone/nieaktualne połączenie z bazą danych Oracle. ODP.NET sam nie testuje stanu połączenia wysyłanego do klienta.

Aby być bezpiecznym, sprawdź connection status == Open dla połączenia otrzymanego z puli podczas wykonywania Connection.Open()

LUB

pozwól ODP.NET sprawdzić za Ciebie, ustawiając Validate Connection = true w ciągu połączenia w web.config.

Obie te metody mają wpływ na wydajność, ponieważ testują stan połączenia za każdym razem, gdy musisz połączyć się z bazą danych.

Trzecią opcją, z której korzystam, jest stosowanie wyjątków. Najpierw bądź optymistyczny i używaj tego, co jest zwracane z puli połączeń. Jeśli otrzymasz ORA - 3135, poproś o nowe połączenie i wykonaj zapytanie ponownie, jak w pętli while. W najlepszym przypadku możesz uzyskać pierwsze połączenie jako prawidłowe, a zapytanie zostanie wykonane. W najgorszym przypadku wszystkie połączenia w Twojej puli są przestarzałe, w którym to przypadku kod zostanie wykonany N czasu (gdzie N to rozmiar puli połączeń).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Programista SQL nie chce się uruchomić

  2. Instalowanie przykładowych schematów dla Oracle 12c za pomocą Asystenta konfiguracji bazy danych

  3. Błąd instalacji klienta Oracle — zbyt długa ścieżka

  4. Dostawca nie jest kompatybilny z wersją klienta Oracle

  5. Podział chmury Oracle — koszty hostingu bazy danych w OCI