Oracle
 sql >> Database >  >> RDS >> Oracle

Come posso prevenire le connessioni automatiche ricorrenti al database Oracle?

Il problema di fondo è finito per essere connessioni al database non rilasciate. Quando una connessione viene aperta, viene estratta dal pool di connessioni. Se la connessione non viene mai chiusa, il pool pensa che sia ancora in uso. Ciò fa sì che la logica di gestione del pool venga periodicamente autenticata con il database utilizzando la stringa di connessione originale. Quando la password cambia, ciò porta rapidamente a tentativi di accesso non riusciti e al blocco dell'account.

// 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 soluzione corretta per questo problema è garantire che le connessioni vengano sempre restituite al pool quando hai finito con esse!

// 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:altre risposte hanno suggerito di disattivare il pool e di cancellare i vecchi pool di connessioni quando la password è stata modificata. Questi suggerimenti hanno funzionato per noi come una patch temporanea durante la ricerca delle risorse non rilasciate e ci hanno aiutato molto a isolare il problema.