ОРА-01031:недостаточные привилегии для создания JMS-соединения с темой Oracle

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

Вопрос

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

Очередь принадлежит одной схеме (скажем, OWNER);он пытается подключиться как другой пользователь (скажем, ПОДПИСЧИК).ВЛАДЕЛЕЦ предоставил ПОДПИСЧИКУ привилегии ОТКЛЮЧИТЬ ИЗ ОЧЕРЕДИ (и ВСТУПИТЬ В ОЧЕРЕДЬ, чего бы это ни стоило).

Когда он создает очередь с параметром «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)

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

Как мне определить, какие привилегии мне нужно предоставить ПОДПИСЧИКУ?

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top