【问题标题】:ORA-01031: insufficient privileges creating JMS connection to Oracle topicORA-01031: 创建与 Oracle 主题的 JMS 连接的权限不足
【发布时间】:2023-03-13 14:55:01
【问题描述】:

我的一位同事在使用 Java 创建 Oracle 队列的(非持久)订阅者时遇到问题。

队列由一个模式拥有(比如 OWNER);他正试图以另一个用户(比如订阅者)的身份连接。 SUBSCRIBER 已被 OWNER 授予 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)

如果他以 OWNER 身份连接,则成功。

如何确定需要授予 SUBSCRIBER 哪些权限?

【问题讨论】:

    标签: java oracle queue jms privileges


    【解决方案1】:

    您要么必须创建一个持久订阅者,要么将 AQ_ADMINISTRATOR_ROLE 授予连接用户 - 这不是一个很好的安全模型,但目前这是 Oracle 的实现。

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

    【讨论】:

    • 优秀 - 为快速响应欢呼。非常感谢。
    • 更正了角色名称(中间缺少“我”)以节省其他人弄清楚它的时间。
    猜你喜欢
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 2020-12-10
    • 2010-09-13
    • 2014-09-09
    • 2013-04-14
    • 2021-12-30
    • 2016-09-04
    相关资源
    最近更新 更多