Skip to Main Content

ODP.NET

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

(CI)CQN recovery on reconnect

User_WPD5LJul 4 2023

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

Comments
Post Details
Added on Jul 4 2023
2 comments
814 views