ORA-01031: privilégios suficientes criação de conexão JMS ao Oracle tópico
-
22-08-2019 - |
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?
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