我們擁有基於Oracle AQ的消息傳遞系統 - 它運行良好,入隊和出隊沒有任何問題。以編程方式檢查Oracle AQ隊列是否存在
現在我們得到了一個請求,在啓動之前和運行時添加一些完整性檢查,例如「檢查提供的db用戶是否真的存在隊列」和「定期檢查隊列中的消息數量」。
後者似乎相當容易解決,查找queuetable,計數的消息數,但第一個怪異的我。 通過文檔和DatabaseMetaData
可用的方法,我沒有看到一種方法來實際檢查這一點,而不嘗試排隊/出隊。數據庫告訴我關於表,鍵,模式等的所有信息,但是我不能爲我的生活尋找隊列。奇怪的是,我也找不到可排隊的球員,雖然這些可能根本不是古典方式中的「桌子」。
我錯過了什麼嗎?信息不可用或在其他地方?
這通常足夠好。但是請注意,在某些情況下,v $ aq中的統計信息可能是明顯錯誤的。例如,即使有數據要讀取,隊列深度也可以列爲負數。最安全的方法是在隊列表上使用select count來過濾狀態。 – user2612030