Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm cách nào để ngăn kết nối tự động định kỳ với cơ sở dữ liệu Oracle?

Vấn đề cơ bản cuối cùng là các kết nối cơ sở dữ liệu chưa được phát hành. Khi một kết nối được mở, nó sẽ được đưa ra khỏi nhóm kết nối. Nếu kết nối không bao giờ đóng, nhóm sẽ nghĩ rằng nó vẫn đang được sử dụng. Điều này khiến logic quản lý nhóm định kỳ xác thực lại với cơ sở dữ liệu bằng cách sử dụng chuỗi kết nối ban đầu. Khi mật khẩu thay đổi, điều này nhanh chóng dẫn đến việc đăng nhập không thành công và khóa tài khoản.

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

Cách khắc phục thích hợp cho sự cố này là đảm bảo các kết nối luôn được đưa trở lại nhóm khi bạn hoàn thành chúng!

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

LƯU Ý:Các câu trả lời khác đề xuất tắt tính năng gộp và xóa các nhóm kết nối cũ khi mật khẩu thay đổi. Những đề xuất này phù hợp với chúng tôi như một bản vá tạm thời trong khi chúng tôi tìm kiếm các tài nguyên chưa được phát hành và chúng đã giúp chúng tôi giải quyết vấn đề một cách đáng kể.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tên người dùng và mật khẩu nào nên được nhập khi kết nối với SQL * Plus sau khi cài đặt Oracle 11g?

  2. Cách chèn giá trị nhận dạng trong Oracle bằng Entity Framework bằng cách sử dụng một chuỗi

  3. Làm thế nào để gọi một thủ tục được lưu trữ với con trỏ ref làm tham số đầu ra bằng cách sử dụng Spring?

  4. thời gian làm mới chế độ xem oracle cụ thể hóa

  5. Buộc phân biệt chữ hoa chữ thường của mã định danh trong oracle