ORA-01031:権限が不十分です。Oracle トピックへの JMS 接続を作成しています

StackOverflow https://stackoverflow.com/questions/870165

質問

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

役に立ちましたか?

解決

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top