A única razão para o pooling é o desempenho, portanto, se seu trabalho noturno for executado dentro de sua janela, não há nada de errado com o que você está fazendo, especialmente porque mantém sua implementação simples por não ter que se preocupar com conexões inativas.
Dito isto, eu não faria esta prática padrão. Eu raramente escrevo código para lidar com conexões obsoletas e mesmo assim é uma fábrica simples. A questão começa com por que você tem conexões obsoletas? Normalmente, isso está relacionado a um firewall ou a um trabalho de DBA que encerra conexões ociosas, sendo que ambos devem ser alterados ou relaxados para uma conta de aplicativo. Mesmo nesse caso, você pode fazer o seguinte:
- Especifique Min Pool Size=0 em sua string de conexão. Isso permite que o ODP.net limpe até mesmo a última conexão do seu aplicativo, permitindo que ele se desconecte completamente quando estiver ocioso por um período suficientemente longo.
- Especifique um tamanho de pool Decr maior em sua string de conexão. Isso permitirá que mais conexões ociosas sejam fechadas a cada 3 minutos pelo ODP.net.
- Você pode tentar definir Validate Connection =true - Meu palpite é que há menos sobrecarga validando a conexão do que com a abertura de uma.
Mais informações podem ser encontradas aqui:http:// docs.oracle.com/cd/E15296_01/doc.111/e15167/featConnecting.htm#i1006228