1

私の同僚の 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 に付与する必要がある特権をどのように判断すればよいですか?

4

1 に答える 1

2

永続的なサブスクライバーを作成するか、接続ユーザーに AQ_ADMINISTRATOR_ROLE を付与する必要があります。優れたセキュリティ モデルではありませんが、これは当面の Oracle の実装です。

https://forums.oracle.com/forums/thread.jspa?messageID=9793091

于 2009-05-15T19:27:41.690 に答える