ORA-01031: недостаточно прав для создания соединения JMS с темой Oracle - PullRequest
1 голос
/ 15 мая 2009

У одного из моих коллег возникла проблема с созданием (недолговечного) подписчика в очереди Oracle из Java.

Очередь принадлежит одной схеме (скажем, ВЛАДЕЛЕЦ); он пытается подключиться как другой пользователь (скажем, подписчик). АБОНЕНТ предоставил ВЛАДЕЛЬЦЕМ привилегии DEQUEUE (и ENQUEUE, для чего это стоит).

Когда он создает очередь с параметром «multiple_consumers», установленным в FALSE, все работает нормально. Если для параметра «множественные_коннекторы» задано значение ИСТИНА (нужное нам значение), произойдет сбой со следующим:

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)

Если он подключится как ВЛАДЕЛЕЦ, это удастся.

Как мне определить, какие привилегии мне нужно предоставить АБОНЕНТУ?

1 Ответ

2 голосов
/ 15 мая 2009

Вам либо нужно создать надежного подписчика, либо предоставить AQ_ADMINISTRATOR_ROLE подключаемому пользователю - не лучшая модель безопасности, но это реализация Oracle на данный момент.

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

...