sql >> Databasteknik >  >> RDS >> Oracle

Hur rensar man ODP.NET-anslutningspoolen vid anslutningsfel?

Om du kan använda odac (odp) 11g , har du ställt in Validera anslutning för din pool. Den kan validera anslutningen innan du använder den.

Validera anslutning attribut validerar anslutningar som kommer ut ur poolen. Det här attributet bör endast användas när det är absolut nödvändigt, eftersom det orsakar en rundresa till databasen för att validera varje anslutning omedelbart innan den ges till applikationen. Om ogiltiga anslutningar är ovanliga kan utvecklare skapa sin egen händelsehanterare för att hämta och validera en ny anslutning, istället för att använda attributet Validate Connection. Detta ger generellt bättre prestanda.

Om det inte är tillräckligt bra - kan du prova detta dokument från oracle.

Anslutningspoolhantering

ODP.NET-anslutningspoolhantering ger explicit anslutningspoolkontroll till ODP.NET-applikationer. Applikationer kan uttryckligen rensa anslutningar i en anslutningspool.

Genom att använda anslutningspoolhantering kan applikationer göra följande:

Obs:Dessa API:er stöds inte i en lagrad .NET-procedur. Rensa anslutningar från anslutningspooler med ClearPool metod.

Rensa anslutningar i alla anslutningspooler i en applikationsdomän med ClearAllPools metod.

När anslutningar rensas från en pool fyller ODP.NET poolen på nytt med nya anslutningar som har minst det antal anslutningar som anges av Min Pool Size i anslutningssträngen. Nya anslutningar betyder inte nödvändigtvis att poolen kommer att ha giltiga anslutningar. Till exempel, om databasservern är nere när ClearPool eller ClearAllPools anropas, skapar ODP.NET nya anslutningar, men dessa anslutningar är fortfarande ogiltiga eftersom de inte kan ansluta till databasen, även om databasen kommer upp vid ett senare tillfälle.

Det rekommenderas att ClearPool och ClearAllPools inte anropas förrän programmet kan skapa giltiga anslutningar tillbaka till databasen..NET-utvecklare kan utveckla kod som kontinuerligt kontrollerar om en giltig databasanslutning kan skapas eller inte och anropar ClearPool ellerClearAllPools när detta är sant.

Det här inlägget kanske också kan hjälpa dig.

Uppdatera :Som påpekat av @MPelletier, för Oracle 12 är länken annorlunda.



  1. Använder COALESCE för att hantera NULL-värden i PostgreSQL

  2. Kodtäckningsstatistik

  3. Hur återskapar man en raderad tabell med Django Migrations?

  4. När du använder GETDATE() på många ställen, är det bättre att använda en variabel?