Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como limpar o pool de conexão ODP.NET em erros de conexão?


Se você pode usar odac (odp) 11g , você configurou Validate Connection para seu pool. Ele pode validar a conexão antes de usá-la.

A Conexão de Validação atributo valida as conexões que saem do pool. Esse atributo deve ser usado apenas quando absolutamente necessário, pois faz uma viagem de ida e volta ao banco de dados para validar cada conexão imediatamente antes de ser fornecida ao aplicativo. Se conexões inválidas forem incomuns, os desenvolvedores poderão criar seu próprio manipulador de eventos para recuperar e validar uma nova conexão, em vez de usar o atributo Validate Connection. Isso geralmente fornece melhor desempenho.

Se não for bom o suficiente - você pode tentar este documento da oracle.

Gerenciamento do pool de conexões

O gerenciamento de pool de conexão ODP.NET fornece controle de pool de conexão explícito para aplicativos ODP.NET. Os aplicativos podem limpar conexões explicitamente em um pool de conexões.

Usando o gerenciamento do pool de conexões, os aplicativos podem fazer o seguinte:

Observação:essas APIs não são suportadas em um procedimento armazenado .NET. Limpar conexões de pools de conexão usando o ClearPool método.

Limpe as conexões em todos os pools de conexão em um domínio de aplicativo, usando o ClearAllPools método.

Quando as conexões são limpas de um pool, o ODP.NET repovoa o pool com novas conexões que têm pelo menos o número de conexões definido pelo tamanho mínimo do pool na cadeia de conexão. Novas conexões não significam necessariamente que o pool terá conexões válidas. Por exemplo, se o servidor de banco de dados estiver inativo quando ClearPool ou ClearAllPools for chamado, o ODP.NET cria novas conexões, mas essas conexões ainda são inválidas porque não podem se conectar ao banco de dados, mesmo que o banco de dados seja ativado posteriormente.

Recomenda-se que ClearPool e ClearAllPools não sejam chamados até que o aplicativo possa criar conexões válidas de volta ao banco de dados. Os desenvolvedores .NET podem desenvolver código que verifica continuamente se uma conexão de banco de dados válida pode ou não ser criada e chama ClearPool ou ClearAllPools quando isso for verdade.

Além disso, pode ser que este post irá ajudá-lo.

Atualizar :Como apontado por @MPelletier, para o oracle 12 o link é diferente.