Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle.DataAccess.Client.OracleException ORA-03135:връзката загубена, контакт

Това се случва, защото вашият код изисква връзка от пула за връзки на Oracle и пулът за връзки връща прекъсната / остаряла връзка към Oracle DB. ODP.NET сам по себе си не тества състоянието на връзката на връзката, изпратена до клиента.

Така че, за да сте в безопасност, или проверете connection status == Open за връзката, получена от пула, когато правите Connection.Open()

ИЛИ

оставете ODP.NET да извърши проверката вместо вас, като зададете Validate Connection = true във вашия низ за връзка в web.config.

И двата метода оказват влияние върху производителността, тъй като тестват състоянието на връзката всеки път, когато трябва да се свържете с базата данни.

Третата опция, която използвам, е използването на изключения. Първо бъдете оптимисти и използвайте дори връзката, която се връща от пула за връзки. Ако получите ORA - 3135, тогава поискайте нова връзка и изпълнете заявката си отново като while цикъл. В най-добрия случай можете да получите първата си връзка като валидна и вашата заявка ще се изпълни. В най-лошия случай всички връзки във вашия пул са остарели, в който случай кодът ще бъде изпълнен N пъти (където N е размерът на пула от връзки).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да намеря първите три най-високи заплати в таблицата emp в oracle?

  2. Топ 9 полезни заявки за принтери за приложения на Oracle

  3. Най-добри практики:Задачи за поддръжка и подобряване на Oracle Cloud

  4. Клъстери за броене на SQL Oracle

  5. Метод за събиране:функция COUNT в базата данни на Oracle