2009-05-15 13 views
1

Un de mes collègues rencontre un problème lors de la création d'un abonné (non durable) dans une file d'attente Oracle à partir de Java.ORA-01031: Privilèges insuffisants pour créer une connexion JMS à un sujet Oracle

La file d'attente appartient à un schéma (disons OWNER); il essaie de se connecter en tant qu'un autre utilisateur (par exemple ABONNE). ABONNE a été accordé des privilèges DEQUEUE (et ENQUEUE, pour ce que ça vaut) par OWNER.

Lorsqu'il crée la file d'attente avec l'option "multiple_consumers" définie sur FALSE, tout fonctionne correctement. Lorsque « multiple_consumers » est réglé sur TRUE (paramètre dont nous avons besoin), il échoue avec les éléments suivants:

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) 

S'il se connecte en tant que propriétaire, il réussit.

Comment puis-je définir les privilèges que je dois accorder à ABONNEMENT?

Répondre

2

Vous devez créer un abonné durable ou attribuer AQ_ADMINISTRATOR_ROLE à l'utilisateur qui se connecte, ce qui n'est pas un excellent modèle de sécurité, mais c'est l'implémentation d'Oracle pour l'instant.

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

+0

Excellent - bravo pour la réponse rapide. Très appréciée. – Hobo

+0

a corrigé le nom du rôle (manque 'I' au milieu) pour sauver le temps de l'autre sur le comprendre. – Vlad