2016-07-04 48 views
0

我們在應用程序中實現了多個AQ。由於很少發生異常情況,消息不能傳送到AQ之一。所以我們需要實現監控,以便在過去10分鐘內隊列中沒有入隊/出隊時生成警報。我嘗試在隊列表上使用SCN_TO_TIMESTAMP(MAX(ora_rowscn))函數,但是如果此時隊列爲空,它不會返回任何結果。如何監視Oracle高級隊列中的零活動

請建議實施此的最佳方法..謝謝!

回答

0

創建一個狀態表 - 1行(每個想要監視的隊列)。

任何時候DEQUEUE都會針對您要監控的隊列觸發。 只需簡單地更新該記錄的「LAST_DEQUEUE_TIME」即可。 ;)

現在你只需要一個過程來喚醒​​每個〜10分鐘,並偷看那條記錄。

可能會有更多「優雅」的解決方案,但是,這可能是最簡單的方法。

您還可以添加一列來判斷DEQUEUE此時是否處於打開/關閉狀態(例如,如果您爲了某些維護而禁用了DEQUEUE,例如,此狀態表會知道,並且掃描它的過程會能夠說 - 而不是「恐慌」);)

0

感謝您的快速解決方案同上,是的,這將工作。儘管我發現使用GV $ PERSISTENT_QUEUES的LAST_ENQUEUE_TIME和LAST_DEQUEUE_TIME字段的內置解決方案。