删除甲骨文更改通知

删除甲骨文更改通知

问题描述:

我试图通过执行注销甲骨文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.NetOCI APIa higher level API数据库更改通知的应用程序。它不会通过PL/SQL,either through a stored procedure or PL/SQL block创建通知。

此应用程序在没有清理这些通知的情况下退出,通常通过致命错误进行退出,因为任何受控关机都应该删除任何通知。或者可能是应用程序仍在开发中,删除通知的代码有一个错误,或尚未添加。

这会在数据库中留下孤立的通知,这些通知无法删除,因为它们只能在与创建时相同的会话中删除。既不可以它们与the PL/SQL functionDBMS_CQ_NOTIFICATION.DEREGISTER();被除去,这将引发的误差,根据所述MOS-注

ORA-29970: Specified registration id does not exist.

+0

这解释了很多。但是,这是什么解决方案呢?注册确实是由.NET服务触发的,但我需要能够通过PL/SQL将其删除 –

解决方案:

  • 使用修补的Oracle版本(包括在12.1或更高且11.2错误修复。 0.4数据库和客户端补丁集)
  • 启用以下事件以消耗修复程序:事件“10865 trace name context forever,level 1”。