Oracle 高階佇列(AQ)

  • 永遠不要對 dbms_aqadm.create_queue_table 建立的表使用 DDL 或 DML。僅使用 dbms_aqadm 和 dbms_aq 來處理這些表。Oracle 可能會製作一些你不會注意到的支援表,索引等。針對表手動執行 DDL 或 DML 可能會導致 Oracle 支援需要你刪除並重新建立表和佇列以解決此問題。

  • 強烈建議你不要使用 dbms_aq.forever 作為等待選項。這導致了過去的問題,因為 Oracle 可能會開始安排過多的工作人員作業來處理不必要的佇列(請參閱 Oracle Doc ID 2001165.1)。

  • 建議你不要在 10.1 及更高版本中設定 AQ_TM_PROCESSES 引數。特別是避免將其設定為零,因為這將禁用維護佇列所必需的 QMON 後臺作業。你可以使用以下命令將此值重置為 Oracle 預設值並重新啟動資料庫。alter system reset aq_tm_processes scope=spfile sid='*';