Para fechar ou não fechar um Oracle Connection?

Meu aplicativo tem problemas de desempenho, então eu comecei a investigar isso a partir da raiz: "A conexão com o banco de dados".

As melhores práticas dizem: "Abrir uma conexão, usá-la e fechar é o mais rápido possível", mas eu não sei a sobrecarga que isso causa, então a pergunta é:

1 - "Abrir, usar, fechar conexões o mais rápido possível é a melhor abordagem usando o ODP.NET?"

2 - Existe uma maneira e como usar o pool de conexão com o ODP.NET? Estou pensando em criar uma lista para armazenar algumas cadeias de caracteres de conexões e criar uma lógica para escolher a melhor conexão sempre que precisar. Esse é o melhor jeito de fazer isso?

questionAnswers(3)

yourAnswerToTheQuestion