sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo puedo evitar las conexiones automáticas recurrentes a la base de datos de Oracle?

El problema subyacente terminó siendo conexiones de base de datos inéditas. Cuando se abre una conexión, se retira del grupo de conexiones. Si la conexión nunca se cierra, el grupo cree que todavía se está utilizando. Esto hace que la lógica de administración del grupo vuelva a autenticarse periódicamente con la base de datos utilizando la cadena de conexión original. Cuando la contraseña cambia, esto conduce rápidamente a intentos de inicio de sesión fallidos y al bloqueo de la cuenta.

// Problem logic; connection is never closed/returned to the connection pool.
public static void ConnPoolTest1()
{
    OracleConnection conn = new OracleConnection(connectionStringWithPooling);
    conn.Open();

    //...Do some work

    // Sit on this line for 5-10 minutes and examine Oracle's dba_audit_trail.
    Console.ReadKey(); // Since connection was never released back to the connection pool, the
                       // data provider's pool management will regularly re-authenticate with DB.
                       // If user's password changes before this process dies (releasing the
                       // connection pools), you start accumulating failed password attempts.
}

La solución adecuada para este problema es asegurarse de que las conexiones siempre se devuelvan al grupo cuando haya terminado con ellas.

// Best practice: ALWAYS CLOSE YOUR CONNECTIONS WHEN YOU ARE DONE!
public static void ConnPoolTest2()
{
    OracleConnection conn = new OracleConnection(connectionStringWithPooling);
    conn.Open();

    //...Do some work

    conn.Close();

    // Sit on this line for 5-10 minutes and examine Oracle's dba_audit_trail.
    Console.ReadKey(); // No problem here! No recurring authentication attempts because the
                       // connection has been returned to the pool.
}

NOTA:Otras respuestas sugirieron desactivar la agrupación y borrar las antiguas agrupaciones de conexiones cuando cambió la contraseña. Estas sugerencias funcionaron para nosotros como un parche temporal mientras buscábamos los recursos inéditos y nos ayudaron mucho a aislar el problema.