I am using devart dotConnect for Oracle with Oracle 12c database. My application has an OracleDependency
object instanced to read notifications when I got a table changed.
It is working fine for Oracle 12C. Recently, I have created a new instance using Oracle 18c. I realized that the notifications were delaying to arrive in my application, sometimes it was getting missed.
I tried to dig deep and find the issue. I found out that the table USER_CHANGE_NOTIFICATION_REGS
SELECT * from USER_CHANGE_NOTIFICATION_REGS
was showing old notifications registered. It seems that it was not cleared when I have stopped and started my web application from IIS.
I have tried to clean manually those notifications using DBMS_CHANGE_NOTIFICATION.DEREGISTER
, but it doesn't work because was created using a different session. My application only starts to work again after a few hours when that list clean by itself.
I wonder if there are some new parameters/settings in Oracle 18c to define some kind of timeout. Should I change something in my application to clear the notifications registered before stopping it?
Those records in the image below are old. I suspect is delaying to send new notifications because it is trying to call the callback function (IP:Port) from that old notifications registered. When that list gets cleared (I have no idea how it clear by itself), then the application works again.
Image: