Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak mogę zapobiec powtarzającym się automatycznym połączeniom z bazą danych Oracle?

Podstawowym problemem okazały się niewydane połączenia z bazą danych. Gdy połączenie zostanie otwarte, zostanie wyewidencjonowane z puli połączeń. Jeśli połączenie nigdy nie zostanie zamknięte, pula myśli, że jest nadal używana. Powoduje to okresowe ponowne uwierzytelnianie logiki zarządzania pulą w bazie danych przy użyciu oryginalnych parametrów połączenia. Zmiana hasła szybko prowadzi do nieudanych prób logowania i zablokowania konta.

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

Właściwym rozwiązaniem tego problemu jest upewnienie się, że połączenia są zawsze zwracane do puli po ich zakończeniu!

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

UWAGA:Inne odpowiedzi sugerowały wyłączenie poolingu i wyczyszczenie starych pul połączeń po zmianie hasła. Te sugestie działały dla nas jako tymczasowa łatka, gdy szukaliśmy niewydanych zasobów, i bardzo pomogły nam w wyizolowaniu problemu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ustawienia bazy danych Oracle Oracle

  2. Wartość CLOB w out/return z plsql (określono nieprawidłowy lokalizator LOB:ORA-22275)

  3. Jak formatować liczby w notacji naukowej w Oracle

  4. aktualizowanie kolumny sygnatury czasowej sygnaturą czasową zawierającą „T”

  5. Jak używać parametrów SQL w fragmencie SQL przeceny języka R?