删除甲骨文更改通知
我试图通过执行注销甲骨文12C变更通知:删除甲骨文更改通知
DBMS_CQ_NOTIFICATION.DEREGISTER(24906);
但是,这给出了一个错误:
ORA-29970: Specified registration id does not exist
虽然当我查询USER_CHANGE_NOTIFICATION_REGS
查看它清楚地说明正确的regid
。
任何人遇到此问题?
(文档ID 971412.1)
怎样才能数据库更改通知未建立PL/SQL被删除?
[最后更新于2017年7月5日]
Applies to:
Oracle数据库 - 企业版 - 版本10.2.0.1 to 11.2.0.2
[发布10.2 to 11.2
]
的Oracle数据提供.NET - 版本10.2.0.1 to 11.2.0.1
[发布10.2 to 11.2
]
本文档中的信息适用于任何平台。 检查相关的二○一六年十二月十四日
Symptoms
你必须创建通过暴露这个功能,如ODP.Net
的OCI API
或a higher level API
数据库更改通知的应用程序。它不会通过PL/SQL
,either through a stored procedure or PL/SQL block
创建通知。
此应用程序在没有清理这些通知的情况下退出,通常通过致命错误进行退出,因为任何受控关机都应该删除任何通知。或者可能是应用程序仍在开发中,删除通知的代码有一个错误,或尚未添加。
这会在数据库中留下孤立的通知,这些通知无法删除,因为它们只能在与创建时相同的会话中删除。既不可以它们与the PL/SQL function
DBMS_CQ_NOTIFICATION.DEREGISTER();
被除去,这将引发的误差,根据所述MOS-注
ORA-29970: Specified registration id does not exist.
解决方案:
- 使用修补的Oracle版本(包括在12.1或更高且11.2错误修复。 0.4数据库和客户端补丁集)
- 启用以下事件以消耗修复程序:事件“10865 trace name context forever,level 1”。
这解释了很多。但是,这是什么解决方案呢?注册确实是由.NET服务触发的,但我需要能够通过PL/SQL将其删除 –