Tente envolver uma instrução using com o OracleConnection em torno de sua instrução using assim:
try
{
using (OracleConnection conn = new OracleConnection(connectionString))
{
using (OracleCommand cmd = new OracleCommand(cmdStr, conn))
{
....
}
}
}
catch (OracleException e)
{
....
}
Isso eliminaria o objeto OracleConnection o mais rápido possível - mesmo quando uma OracleException ocorresse dentro das instruções using.