Aqui está um conjunto de slides contendo as práticas recomendadas da Oracle:
http://www.oracle .com/technetwork/topics/dotnet/ow2011-bp-performance-deploy-dotnet-518050.pdf
Você obtém automaticamente um pool de conexões ao criar um OracleConnection. Para a maioria dos aplicativos de camada intermediária, você vai querer tirar vantagem disso. Você também desejará ajustar seu pool para uma carga de trabalho realista ativando os contadores de desempenho no registro.
Consulte a ajuda online do ODP.NET para obter detalhes sobre o pool de conexões. As configurações do pool são adicionadas à cadeia de conexão.
Outro problema que as pessoas enfrentam muito com o OracleConnections é que o coletor de lixo não percebe como eles realmente consomem muitos recursos e não os limpa imediatamente. Isso é agravado pelo fato de que o ODP.NET não é totalmente gerenciado e, portanto, alguns recursos estão ocultos do coletor de lixo. Portanto, a melhor prática é Close() E Dispose() todos os objetos Oracle ODP.NET (incluindo OracleConnection) para forçá-los a serem limpos.
Esse problema específico será mitigado no provedor totalmente gerenciado da Oracle (uma versão beta será lançada em breve)
(EDIT:ODP.NET, Driver Gerenciado já está disponível.)
Christian Shay
Oráculo