sql >> Databáze >  >> RDS >> Oracle

Jak mohu zabránit opakovaným automatickým připojením k databázi Oracle?

Základním problémem byla nevydaná databázová připojení. Když je připojení otevřeno, je odhlášeno z fondu připojení. Pokud se připojení nikdy neuzavře, fond si myslí, že se stále používá. To způsobí, že se logika správy fondu pravidelně znovu ověřuje s databází pomocí původního připojovacího řetězce. Když se heslo změní, vede to rychle k neúspěšným pokusům o přihlášení a uzamčení účtu.

// 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.
}

Správným řešením tohoto problému je zajistit, aby se připojení vždy vrátila do fondu, když je dokončíte!

// 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.
}

POZNÁMKA:Další odpovědi navrhovaly vypnout sdružování a vymazat staré fondy připojení při změně hesla. Tyto návrhy nám fungovaly jako dočasná oprava, když jsme hledali nevydané zdroje, a velmi nám pomohly problém izolovat.



  1. Spouštěče vs. JPA @PrePersist pro vytváření a aktualizaci časových razítek pro a proti

  2. Jak GROUP BY DESC vybírá své pořadí?

  3. Jak nastavit časové pásmo xampp mysql a Apache?

  4. Kód chyby:1305. FUNKCE nebo PROCEDURE neexistuje