Oracle
 sql >> база данни >  >> RDS >> Oracle

Как мога да предотвратя повтарящи се автоматични връзки към Oracle Database?

Основният проблем се оказа неиздадени връзки към база данни. Когато се отвори връзка, тя се проверява от пула за връзки. Ако връзката никога не се затваря, пулът смята, че тя все още се използва. Това кара логиката за управление на пула периодично да се удостоверява повторно с базата данни, като използва оригиналния низ за връзка. Когато паролата се промени, това бързо води до неуспешни опити за влизане и заключване на акаунта.

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

Правилното решение за този проблем е да гарантирате, че връзките винаги се връщат към пула, когато приключите с тях!

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

ЗАБЕЛЕЖКА:Други отговори предложиха изключване на пуловете и изчистване на стари пулове за връзки, когато паролата се промени. Тези предложения ни свършиха работа като временна корекция, докато търсихме непубликувани ресурси, и много ни помогнаха да изолираме проблема.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-12519 TNS:не е намерен подходящ манипулатор на услугата

  2. JDBC ResultSet getDate губи прецизност

  3. Динамична параметризирана заявка с харесване

  4. Как да проверите NULL или не е валидно в HQL заявка

  5. ResultSet#getDate() семантика