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

Какво може да причини периодични грешки ORA-12519 (TNS:не е намерен подходящ манипулатор).

Не знам дали това ще бъде отговорът на всички, но след известно ровене, ето какво стигнахме.

Грешката очевидно е причинена от факта, че слушателят не приема връзки, но защо да получаваме тази грешка, когато други тестове могат да се свържат добре (можем също да се свържем без проблем чрез sqlplus)? Ключът към проблема не беше, че не можахме да се свържем, а че беше периодично

След известно разследване открихме, че има някои статични данни, създадени по време на настройката на класа, които ще поддържат отворени връзки за целия живот на тестовия клас, създавайки нови, докато върви. Сега, въпреки че всички ресурси бяха правилно освободени, когато този клас излезе извън обхвата (чрез блок finally{}, разбира се), имаше някои случаи по време на изпълнение, когато този клас щеше да погълне всички налични връзки (добре, лошо предупреждение за практика – това беше код за модулен тест, който се свързва директно, а не използва пул, така че същият проблем не може да се случи в производството).

Поправката беше този клас да не се прави статичен и да се изпълнява в настройката на класа, а вместо това да се използва в методите setUp и tearDown по метод.

Така че, ако получите тази грешка в собствените си приложения, пуснете профильор на това лошо момче и вижте дали може да имате изтичане на връзка. Надявам се това да помогне.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да извлечете данни от курсора в Oracle, използвайки For Loop

  2. ALTER &DROP Table DDL с непосредствено изпълнение в базата данни на Oracle

  3. Не може да се свърже с базата данни на Oracle чрез JDBC, ако паролата има специални символи

  4. Как мога да напиша SQL в Oracle в моя случай?

  5. oracle sql:актуализиране, ако съществува, друго вмъкване