sql >> Database >  >> RDS >> Oracle

Wat kan intermitterende ORA-12519 (TNS:geen geschikte handler gevonden) fouten veroorzaken?

Ik weet niet of dit het antwoord van iedereen zal zijn, maar na wat speurwerk kwamen we hier op uit.

De fout wordt duidelijk veroorzaakt door het feit dat de luisteraar geen verbindingen accepteerde, maar waarom zouden we die fout krijgen als andere tests prima konden verbinden (we konden ook geen probleem verbinden via sqlplus)? De sleutel tot het probleem was niet dat we geen verbinding konden maken, maar dat het intermitterend was

Na enig onderzoek ontdekten we dat er enkele statische gegevens waren gecreëerd tijdens het opzetten van de klas die open verbindingen zouden houden voor de levensduur van de testklasse, terwijl er nieuwe werden gecreëerd. Hoewel alle bronnen correct werden vrijgegeven toen deze klasse buiten bereik ging (uiteraard via een definitief{}-blok), waren er tijdens de uitvoering enkele gevallen waarin deze klasse alle beschikbare verbindingen zou opslokken (oké, slecht oefenwaarschuwing - dit was eenheidstestcode die rechtstreeks verbinding maakte in plaats van een pool te gebruiken, dus hetzelfde probleem kon niet optreden tijdens de productie).

De oplossing was om die klasse niet statisch te maken en te laten draaien in de klassenconfiguratie, maar in plaats daarvan te gebruiken in de methodes per methode setUp en tearDown.

Dus als je deze fout in je eigen apps krijgt, sla dan een profiler op die slechterik en kijk of je een verbindingslek hebt. Ik hoop dat dat helpt.



  1. Bijhouden op kolom- en rijniveau bij samenvoegreplicatie

  2. Hoe de standaardbeperking van SQL te laten vallen zonder de naam te kennen?

  3. Postgresql-socketfout op OSX 10.7.3 bij het uitvoeren van Django's syncdb

  4. Elementen retourneren van een JSON-array in MariaDB