Pergunta

Um dos meus colegas está tendo um problema criando um assinante (não duráveis) para uma fila de Oracle de Java.

A fila é de propriedade de um esquema (digamos proprietário); ele está tentando se conectar como outro usuário (Subscriber digamos). ASSINANTE recebeu privilégios DEQUEUE (e enfileirar, para o que vale a pena) pelo proprietário.

Quando ele cria a fila com o "multiple_consumers" opção definido como falso, tudo funciona bem. Quando "multiple_consumers" é definido como TRUE (o ajuste que precisamos), ele falha com o seguinte:

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)

Se ele se conecta como proprietário, ele consegue.

Como faço para descobrir o que privilégios eu preciso conceder ao assinante?

Foi útil?

Solução

Você tem que criar um assinante durável, ou ter o AQ_ADMINISTRATOR_ROLE concedidos ao usuário conectar -. Não um grande modelo de segurança, mas que é a implementação da Oracle por enquanto

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top