Oracle 等待事件 Streams AQ: waiting for messages in the queue 官方解释,作用,如何使用及优化方法

本站中文解释

Oracle Streams AQ,又被称为Streams 异步队列,是Oracle数据库提供给开发者的一个消息队列处理服务,其基本的特点是可以将结构化信息(构成消息体的数据)作为异步处理的一部分从一个数据库复制到另一个数据库。它可以在多个架构中,如两个或多个不同实例之间,单点实例中或者一个实例中多个数据库之间使用消息队列。简单的说,Streams AQ是Oracle数据库用来支持在数据库之间传送消息的技术。

每个Streams AQ 队列都有两个端点:生产者和消费者。生产者通过Streams AQ 在队列中写入消息,消费者负责从队列中读取消息,消费者可以是应用程序等外部客户端,也可以是Streams子系统(如XStream)。消息可以是原子的,也可以是比较复杂的多条消息(在消息头中定义)事务,具体取决于应用程序的实现。

在这种等待模式下,消费者调用oracle包中的dbms_aq. LISTEN函数,该函数等待来自队列的消息(当消息到达时,函数立即返回)。然后,消费者调用dbms_aq. dequeue 从队列中取出消息或事务,然后处理消息和消息位置上的元数据。一旦消息或事务处理完成,消费者可以调用dbms_aq. delete_message 删除关联的消息或事务,以便消息或事务不会被重新检索。此外,oracle 还提供dbms_aq.unlisten函数来停止listen函数检查新消息。

优势:

1、Streams AQ提供有效的分布式数据处理。
2、Streams AQ支持基于事务的单向和双向消息传递。
3、在消息接受过程中,它可以进行消息可靠性的强制确认。
4、它支持数据库之间的高度消息通信。
5、它具有高度扩展性,可以适应不同的容量的需求。
6、它能够安全的支持跨数据库的消息传递。
7、它具有良好的可靠性,确保消息的完整性和正确性。
8、它可以明确的在消息发送和接收之间传递更新数据,从而实现即时数据同步,内容一致。

尽管Streams AQ具有许多优势,但它有一些局限性,存在一些不足之处,如:

1、它需要较复杂的安装和管理维护工作。
2、它有一个功能偏重的学习曲线,耗时较长。
3、它只能在Oracle 10g(和更高版本)中运行。
4、它的维护和更新不如其他消息中间件充分和及时,有一些功能比较落后。
5、它只支持一种消息传递(点对点)方式,而没有支持发布/订阅(pub/sub)模型。

总体来说,Streams AQ是一种有效的消息处理服务,能够实现流中的结构化消息传输和发布/订阅模式,从而支持应用程序的实现。它具有以上提到的高可用性、高可靠性,在Oracle数据库中是一种很好的机制,它不仅能够支持事务性和可靠的消息处理,还能支持动态的和及时的消息传递。

官方英文解释

The session is waiting on an empty OLTP queue (Advanced Queuing) for a message to arrive so that the session can dequeue that message.

Wait Time: The amount of time that the session wants to wait is determined by the parameter wait time

Parameter Description

queue id

The ID of the OLTP queue for which this session is waiting

process#

The process number of the process in which this session runs

wait time

The intended wait time for this session


数据运维技术 » Oracle 等待事件 Streams AQ: waiting for messages in the queue 官方解释,作用,如何使用及优化方法