ORA-01031: недостаточно прав для создания соединения JMS с темой Oracle

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

Очередь принадлежит одной схеме (скажем, ВЛАДЕЛЬЦУ); он пытается подключиться как другой пользователь (скажем, ПОДПИСЧИК). ВЛАДЕЛЕЦ предоставил SUBSCRIBER привилегии 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)

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

Как мне определить, какие привилегии мне нужно предоставить SUBSCRIBER?


person Hobo    schedule 15.05.2009    source источник


Ответы (1)


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

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

person dpbradley    schedule 15.05.2009
comment
Отлично - ура за быстрый ответ. Очень признателен. - person Hobo; 16.05.2009
comment
исправлено имя роли (отсутствует буква «я» в середине), чтобы сэкономить время других на его выяснении. - person Vlad; 17.04.2012