暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 12c EMON处理功能

askTom 2021-09-07
448

问题描述

我读了一篇文章,标题是:

Event Monitor Process: Architecture and Known Issues (Doc ID 105067.1)



通知实现了高水印方案,在该方案中,当通知事件的积压达到内存中的限制时,如果设置了水印,则消息会溢出到磁盘上,并进入SYS.AQ_Event_ TABLE_Q队列。在9.2中,水印的默认值为0 ,这意味着没有消息会溢出到磁盘上,并且整个共享池可以用于通知事件。在10.1起的过程DBMS_AQADM.GIT_水标记和DBMS_AQADM.SET_水标记可用于设置通知事件的内存量,但消息不再溢出到磁盘上。相反,入队进程受流控制的制约,直到积压已被mon进程清除。



这对我作为一个开发人员意味着什么?我在Linux ( 64位)下建立了一个12.2EE数据库,注册了一个通知回调过程。

在将消息排入队列时,我如何知道我的消息将被EMON批准,或者将被放置到积压工作中?
我为什么要知道?是吗"直到Emon进程清除积压"意思是整个积压将丢失,而不需要EMON进行任何进一步处理?

我多次注意到队列中存在消息,同时EMON的作业PLSQL_NTFN挂起状态为“等待队列中的消息”。而且这些消息似乎从未被处理过。

可能是清理积压的情况吗?我在哪里可以找到关于清除积压的信息(在服务器日志中,在数据库对象中)和有关已清除的消息的MSGID的信息?

蒂亚,

安德鲁。

专家解答

How can I know , when enqueuing a message to the queue, that my message will be approved by EMON, or it will be placed to the backlog?

你不知道也不需要知道。这只是内存管理问题。EMON仍然负责向客户端发送通知,无论这些通知消息是否暂存到磁盘。

当您说EMON作业在“等待消息”时“挂起”时,我的理解是,如果您找不到要向其发送通知的客户端,则该消息将不会被处理,它将继续等待发送新通知的信号。因此,对于消息来说,不被处理*和*让EMON在消息上等待是非常可行的。

在调试方面,您引用的MOS说明包含了一些有关在EMON上执行跟踪以查看其是否挂起的详细信息,还可以监视V$EMON以确保其不时地“跳转”。

https://docs.oracle.com/en/database/oracle/oracle-database/19/refrn/V-EMON.html#GUID-E9C0B5B5-B3CA-426D-85C6-7FC1304D9662

但是如果你怀疑自己在后台进程( EMON或其他)上有问题,那么SR总是你的最佳选择。
文章转载自askTom,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论