¿Cerrar o no cerrar una conexión Oracle?

Mi aplicación tiene problemas de rendimiento, así que comencé a investigar esto desde la raíz: "La conexión con la base de datos".

Las mejores prácticas dicen: "Abrir una conexión, usarla y cerrarla lo antes posible", pero no sé la sobrecarga que esto causa, por lo que la pregunta es:

1 - "¿Abrir, usar, cerrar conexiones lo antes posible es el mejor enfoque usando ODP.NET?"

2 - ¿Hay una manera y cómo utilizar la agrupación de conexiones con ODP.NET? Estoy pensando en crear una lista para almacenar algunas cadenas de conexiones y crear una lógica para elegir la "mejor" conexión cada vez que la necesito. ¿Es esta la mejor manera de hacerlo?

Respuestas a la pregunta(3)

Su respuesta a la pregunta