私の同僚の 1 人が、Java から Oracle キューへの (永続的ではない) サブスクライバーを作成する際に問題を抱えています。
キューは 1 つのスキーマ (たとえば、OWNER) によって所有されます。彼は別のユーザー (SUBSCRIBER など) として接続しようとしています。SUBSCRIBER は、OWNER によって DEQUEUE 権限 (およびその価値がある ENQUEUE 権限) を付与されています。
「multiple_consumers」オプションを FALSE に設定してキューを作成すると、すべて正常に機能します。"multiple_consumers" が TRUE (必要な設定) に設定されている場合、次のように失敗します。
oracle.jms.AQjmsException: ORA-01031: insufficient privileges
ORA-06512: at "SYS.DBMS_AQADM_SYS", line 5757
ORA-06512: at line 1
ORA-06512: at "SYS.DBMS_AQJMS", line 129
ORA-06512: at line 1
at oracle.jms.AQjmsSession.addDurableSubscriber(AQjmsSession.java:3708)
at oracle.jms.AQjmsSession.createSubInOldMode(AQjmsSession.java:2742)
at oracle.jms.AQjmsSession.createDurableSubscriber(AQjmsSession.java:2400)
at oracle.jms.AQjmsSession.forceCreateOldSubscriber(AQjmsSession.java:2884)
at oracle.jms.AQjmsSession.createConsumer(AQjmsSession.java:6820)
彼が OWNER として接続すると、成功します。
SUBSCRIBER に付与する必要がある特権をどのように判断すればよいですか?