sql >> Database teknologi >  >> RDS >> Oracle

Hvad kan forårsage intermitterende ORA-12519 (TNS:ingen passende handler fundet) fejl

Ved ikke, om dette vil være alles svar, men efter lidt gravearbejde, er her, hvad vi kom frem til.

Fejlen skyldes naturligvis, at lytteren ikke accepterede forbindelser, men hvorfor skulle vi få den fejl, når andre tests kunne forbinde fint (vi kunne også oprette forbindelse uden problemer gennem sqlplus)? Nøglen til problemet var ikke, at vi ikke kunne oprette forbindelse, men at det var intermitterende

Efter nogle undersøgelser fandt vi ud af, at der var nogle statiske data, der blev oprettet under opsætningen af ​​klassen, som ville holde åbne forbindelser i hele testklassens levetid og skabe nye, efterhånden. Nu, selvom alle ressourcerne blev frigivet korrekt, da denne klasse gik uden for scope (via en endelig{} blok, selvfølgelig), var der nogle tilfælde under kørslen, hvor denne klasse ville opsluge alle tilgængelige forbindelser (okay, dårligt øvelsesadvarsel - dette var enhedstestkode, der tilsluttede sig direkte i stedet for at bruge en pool, så det samme problem kunne ikke ske i produktionen).

Rettelsen var ikke at gøre den klasse statisk og køre i klasseopsætningen, men i stedet bruge den i metoderne per metode opsætning og tearDown.

Så hvis du får denne fejl i dine egne apps, skal du smække en profiler på den dårlige dreng og se, om du måske har en forbindelseslækage. Håber det hjælper.



  1. Forøg et databasefelt med 1

  2. En oversigt over volumenniveaureplikering til PostgreSQL ved hjælp af DRBD

  3. Om RM-formatelementet i Oracle

  4. Sådan fungerer RPAD()-funktionen i MySQL