Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana Saya Dapat Mencegah Koneksi Otomatis Berulang ke Database Oracle?

Masalah mendasar akhirnya menjadi koneksi database yang belum dirilis. Ketika koneksi dibuka, itu akan diperiksa dari kumpulan koneksi. Jika koneksi tidak pernah ditutup, kolam mengira itu masih digunakan. Ini menyebabkan logika manajemen kumpulan untuk mengotentikasi ulang secara berkala dengan database menggunakan string koneksi asli. Saat sandi berubah, ini dengan cepat menyebabkan upaya login dan penguncian akun gagal.

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

Perbaikan yang tepat untuk masalah ini adalah memastikan koneksi selalu dikembalikan ke kumpulan saat Anda selesai menggunakannya!

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

CATATAN:Jawaban lain menyarankan untuk mematikan pengumpulan dan menghapus kumpulan koneksi lama ketika kata sandi diubah. Saran ini berfungsi untuk kami sebagai tambalan sementara saat kami mencari sumber daya yang belum dirilis, dan saran tersebut sangat membantu kami untuk mengisolasi masalah.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa driver Oracle JDBC tipe 4 terbaik?

  2. ORA-00937:Bukan fungsi grup grup tunggal - Kesalahan kueri

  3. perbarui menggunakan for loop di plsql

  4. Bagaimana cara membatasi jumlah baris yang dikembalikan dari Oracle di tingkat sumber data JDBC?

  5. Bagaimana menemukan kesalahan yang menyebabkan ora-06575?