2009-05-15 19 views
1

私の同僚の一人がJavaからOracleキューへの(耐久性のない)サブスクライバを作成する際に問題が発生しています。ORA-01031:OracleへのJMS接続の作成に関する権限が不十分です

キューは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) 

、それが成功します。

サブスクライバーにどのような特権を与える必要がありますか?

答えて

2

堅牢なサブスクライバを作成するか、接続するユーザーにAQ_ADMINISTRATOR_ROLEを付与するか(偉大なセキュリティモデルではありませんが、当面はOracleの実装です)。

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

+0

優れた応答性を提供します。とても有難い。 – Hobo

+0

は、他の時間を計算するためにロール名(真ん中に「I」がない)を修正しました。 – Vlad

関連する問題