问题标签 [advanced-queuing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database - Oracle aq 传播,ORA-25215:user_data 类型和队列类型不匹配
我正在处理从一个数据库到另一个数据库的 AQ 传播,但是当我安排传播并将第一条消息排队到 LOCAL AQ 表时,我在 DBA_QUEUE_SCHEDULES.LAST_ERROR_MSG 中遇到错误,“ORA-25215:user_data 类型和队列类型不匹配”。请注意,AQ 表中使用的两种对象类型是相同的,出于测试目的,我使用的是这个:
并且两个 AQ 表也是相同的,我使用相同的脚本创建它们并且只更改了名称,一个 LOCAL 另一个 REMOTE。LOCAL AQ 表在 LOCAL 数据库中,REMOTE 表在 SCHEMA_NAME.REMOTE 数据库中。
这是我用来创建 AQ 表的脚本:
以下是用于创建订阅者、出列程序等的脚本:
本地数据库:
远程数据库:
将消息排队到 LOCAL AQ 表的脚本:
另请注意,在 SYS.AQ$_MESSAGE_TYPES 表(LOCAL db)中,已验证状态 = 'F' 用于创建传播,并且:
返回 0,这意味着表类型不兼容。在我进行了一些挖掘之后,我发现如果 LOCAL 和 REMOTE 数据库 NLS_LENGTH_SEMANTICS 不同,则无法进行远程传播,但是在这种情况下并非如此。我已经检查过了。任何想法是我做错了什么,或者我怎样才能找到这两个表之间的不同之处以及如何解决它?或者它可能是某些数据库参数值之间的差异?
Oracle 数据库 11g 版本 11.2.0.3.0
database - 具有不同 NLS_LENGTH_SEMANTICS 的数据库之间的 AQ 传播
是否可以在具有不同的两个数据库之间传播 AQ 消息NLS_LENGTH_SEMANTICS
,即 LOCAL 数据库具有 BYTE( nls_database_parameters
view) 和 REMOTE 数据库具有 CHAR( nls_database_parameters
view),如果可以,那么如何?我已经尝试将会话NLS_LENGTH_SEMANTICS
参数值设置为BYTE
然后重新创建远程数据库 AQ OBJECT_TYPE,用 BYTE 覆盖对象类型属性声明并在本地数据库中创建 OID 类型并在传播中使用转换,但它没有成功,仍然得到
“ORA-25215: user_data 类型和队列类型不匹配”
传播时。
这是我在 AQ 表中使用的对象类型:
oracle - Oracle 高级队列 - ORA-38818 - 对已编辑对象的非法引用
似乎需要一些帮助。我正在尝试根据以下脚本基于对象类型构建一些队列表;
0。
1.
2.
类型及其主体编译没有错误,问题发生在;
3.
我收到了这个错误描述;
ORA-38818:非法引用已编辑对象 SCH_UTL.O_UTL_Q_LOG
ORA-06512:在“SYS.DBMS_AQADM”第 81 行
ORA-06512:在第 2 行
38818. 00000 - “非法引用已编辑对象 %s.%s”
*原因: 试图违反“非编辑对象
可能不依赖于已编辑对象”的规则。
以防万一,我正在开发 XE 11g R2。
非常感谢任何人的帮助!
c++ - 从 OCCI / C++ 设置 SYS.AQ$_JMS_TEXT_MESSAGE 类型的 Oracle AQ
我有一个用 C++ 编写的应用程序,它需要填充 SYS.AQ$_JMS_TEXT_MESSAGE 类型的队列。
我正在使用 OCCI,一个 C++ API 来操作 Oracle 数据库,并且我已经成功地填充了其他类型的队列。
是否可以使用 OCCI 填充 SYS.AQ$_JMS_TEXT_MESSAGE 类型的队列?
plsql - 传播时是否可以在远程数据库中指定转换?
Fe 在一个数据库中我有有效载荷类型(varchar2,数字)。在传播时,我添加了转换,指定此有效负载需要转换为 sys.xmlType,因为我在数据库之间有不同的 nls_length_semantics,我不能简单地传播这些对象类型。到目前为止一切顺利,我已经尝试过了,它传播成功。我想要实现的是,在远程数据库中排队时,sys.xmlType 有效负载将转换为类型(varchar2,数字)。可能吗?
所以总而言之,它看起来像这样:
将消息排入本地队列;
传播开始;
Payload从对象类型转换为sys.xmlType;
消息正在排队到远程数据库;
Payload 从 sys.xmlType 转换为 objectType;
消息已入队。
oracle - 通过多个队列传播消息
是否可以通过几个队列传播消息?我有两个远程和本地数据库,在远程我有一个 aq 表 AQ1,在本地我有两个 aq 表 AQ2 和 AQ3。是否可以安排从 AQ1 到 AQ2 再从 AQ2 到 AQ3 的传播,所以我在 AQ2 中从 AQ1 收到的消息会自动传播到 AQ3?
我问这个原因我有这个问题,当消息从 AQ1 传播到 AQ2 时,它不会自动传播到 AQ3。当我查看时user_queue_schedules
,甚至没有触发到 AQ3 的传播。但是,如果我将消息排队到 AQ2,它确实会传播到 AQ3。
plsql - Oracle Advanced QUEUE 不存在是其他模式
我有这个问题中描述的相同问题:Grant permission to queues to another schema in oracle。
但是授予其他用户的权限根本不起作用。
我的队列:
使用 schema 创建的此队列USER1
。在这个模式中,pkg1
当我调用它时,我有一个带有过程的包,它的入队:
我有第二个模式 USER2,他有权pkg1
由特定角色 (ROLE1) 执行。但是当他调用 proc1 时,收到下一个错误:
我已经在 USER1 中执行了这个特权命令,但没有成功:
我真的开始了解 Ad.Queues 是如何工作的。我在这里错过了什么吗?谢谢。
EDIT1: 授予此队列特权后:
xml - 如何使用 Oracle Advanced 通知 XML 更改
我们有一个带有包含 XMLType 属性的 UDT 有效负载的 Oracle 12c AQ。我们可以创建一个在 XMLType 属性匹配某些条件时触发的通知程序吗?
我在网上没有看到任何这样的例子。
edit=> 仅在有效负载的 xml 部分与某些条件匹配的新消息时收到通知。就像是:
仅当有效负载的 XML 部分与条件匹配时,此订阅者才会收到通知。<=结束编辑
java - 如何将 Spring Boot JMS 从 ActiveMQ 迁移到 Oracle Advanced Queuing
我正在研究 Spring Boot 和 JMS 示例,是的,我对此很陌生
由于我们使用 Oracle,因此我想将 Spring Boot 和 JMS 示例从 ActiveMQ 迁移到 Oracle Advanced Queueing。但是,我真的发现这方面的信息很少。
据我所知,我需要为 Oracle 版本替换下面的代码,但我没有设法找出方法。
}
源代码可以在Github找到
帮助将不胜感激!
java - 如何在 Spring Boot 中实现 Oracle AQ 队列?
我已经了解了如何使用 AQ (Streams?) 包创建 Oracle 数据库。我还在 Oracle 中创建了一些队列(手动)。(使用 PL/SQL 和 SQL)。
但是,我很难从 Spring 建立正确的连接。
以下作品(使用oracle.AQ
java包):
(基于https://docs.oracle.com/cd/B10501_01/appdev.920/a96587/apexampl.htm)
这表明我可以连接到 Oracle 并使用 AQ 功能。
现在,我正在尝试创建 Java 配置的 bean,以便使用JmsTemplate
.
(是的,队列已经存在;-))
使用以下配置类:
并具有 yml 属性:
但是有了这个,我得到了我无法理解的错误:
我相信发生 Cast 异常是因为它是一个ProxyConnection[PooledConnection[oracle.jdbc.driver.T4CConnection@40016ce1]]
. 但我不知道如何解决这个问题。