ablog

不器用で落着きのない技術者のメモ

ORA-24039 複数コンシューマ用のキュー表にキューstringが作成されませんでした

サブスクライバを作成したら、Oracle Messaging Gateway のログに ORA-24039 が出力された。

原因
ADD_SUBSCRIBER、ALTER_SUBSCRIBERまたはREMOVE_SUBSCRIBERプロシージャ、または空でない受信者リストのENQUEUEが、複数のコンシューマに対して作成されていないキューに対し発行されました。

処置
複数のコンシューマに対して作成されたキュー表にキューを作成し、コールを再試行してください。

OTN Japan - Oracleエラーメッセージ検索(Oracleメッセージ検索)

キュー表をサブスクライブしたい場合は、「multiple_consumers => true」にしろってことみたいなので、「multiple_consumers => true」を指定してキュー表を再作成してみたら解決した。

  • 修正前
begin
   dbms_aqadm.create_queue_table (queue_table => 'sample_queue_table', 
   queue_payload_type => 'sys.mgw_basic_msg_t');
end;
/
  • 修正後(「multiple_consumers => true」を追加)
begin
   dbms_aqadm.create_queue_table (queue_table => 'sample_queue_table', 
   queue_payload_type => 'sys.mgw_basic_msg_t', multiple_consumers => true);
end;
/