2017-10-19 77 views
1

我試圖通過執行註銷甲骨文12C變更通知:刪除甲骨文更改通知

DBMS_CQ_NOTIFICATION.DEREGISTER(24906); 

但是,這給出了一個錯誤:

ORA-29970: Specified registration id does not exist

雖然當我查詢USER_CHANGE_NOTIFICATION_REGS查看它清楚地說明正確的regid

任何人遇到此問題?

回答

1

(文檔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將其刪除 –

1

解決方案:

  • 使用修補的Oracle版本(包括在12.1或更高且11.2錯誤修復。 0.4數據庫和客戶端補丁集)
  • 啓用以下事件以消耗修復程序:事件「10865 trace name context forever,level 1」。