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 |