Hi,
In our project, we have been trying to improve the way we use both Client Initiated Continuous Query Notifications (CICQN) and the traditional Continuous Query Notification (CQN) in the ODP.NET provider. We noticed that each time the connection is dropped or database is rebooted, there is no automatic reconnect/re-registration of this CQN. We wanted to handle this by retrying to register the CQN again ourselves when we encounter an OracleNotificationType.Subscribe event in the OracleDependency.OnChange event handler.
This isn't working as expected (no events are triggered), since the previous registration is still visible in the USER_CHANGE_NOTIFICATION_REGSUSER_CHANGE_NOTIFICATION_REGS table. Trying to remove the existing one with the function OracleDependency.RemoveRegistration function results in an error, because it has been registered in another connection:
The notification registration is in an unregistered state
at Oracle.ManagedDataAccess.Client.OracleDependency.RemoveRegistration(OracleConnection conn)
at
In the JDBC provider there is a function that allows a connection to remove registrations of a CQN that were registered by another connection: OracleConnection.unregisterDatabaseChangeNotification , but this does not seem to be existing in the ODP.NET provider: https://docs.oracle.com/en/database/oracle/oracle-database/23/jjdbc/continuos-query-notification.html#GUID-17D0D7C5-77C9-420D-9D13-F668C1056792
Is there any similar functionality available to do this in the OPD.NET provider or is this something that can be added?
Thanks in advance,
Bjarne Callewaert