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

Quy trình làm việc và thời gian chờ thông báo thay đổi dữ liệu của Oracle

Các bản ghi bạn đã lưu giữ trong user_change_notification_regs bảng phải được xóa một cách rõ ràng vì DBMS không theo dõi điều đó 'Kết nối JDBC đã chuẩn bị kết nối này vẫn còn tồn tại' mà yêu cầu một cơ chế đập của tim. Do đó, khi máy chủ của bạn khởi động lại, bạn phải xóa (hủy đăng ký) các bản ghi đó một cách rõ ràng. Đây là một ví dụ.

try (Connection conn = ConnManager.getConnection();) {
         if (conn.isWrapperFor(OracleConnection.class)) {

                try (OracleConnection oracleConnection = conn.unwrap(OracleConnection.class);
                        Statement stmt = oracleConnection.createStatement()) {
                    ResultSet rs = stmt.executeQuery("select regid,callback from USER_CHANGE_NOTIFICATION_REGS");

                    while (rs.next()) {
                        long regid = rs.getLong(1);
                        String callback = rs.getString(2);
                        ((OracleConnection) stmt.getConnection()).unregisterDatabaseChangeNotification(regid, callback);
                    }
                }
            }
        } catch (SQLException ex) {
            Logger.getLogger(TableBase.class.getName()).log(Level.SEVERE, null, ex);
        } 

Bạn có thể chỉ cần đặt mã này trong một khối tĩnh của một lớp hoặc một phương thức khởi tạo sẽ chỉ được thực thi một lần. Nếu bạn đặt thời gian chờ cho trình nghe, trình điều khiển phía máy chủ oracle sẽ bật cơ chế nhịp tim cho kết nối của bạn, điều này có thể làm giảm nhẹ hiệu suất ứng dụng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mẫu phân tầng trên các phạm vi

  2. Kết nối JDBC với Oracle Clustered

  3. Nhà cung cấp Oracle bên thứ ba cho .Net có hỗ trợ kiểu đối tượng

  4. Tại sao Hibernate ném org.hibernate.exception.LockAcquisitionException?

  5. No usename HR trong Oracle 12c