ORA-26793: Number of capture processes that enqueued message to queue “string”.”string” not equal to one ORACLE 报错 故障修复 远程处理

文档解释

ORA-26793: Number of capture processes that enqueued message to queue “string”.”string” not equal to one

Cause: Split-merge API requires only one capture process enqueued message to the queue where the propagation originated

Action: Please drop one capture, or split or merge another propagation.

ORA-26793: Number of capture processes that enqueued message to queue “string”.”string” not equal to one

这是一个Oracle数据库中的错误代码,用户在抓取队列(存储消息)时可能会遇到这个错误信息,报告提示用户注意队列存储信息的两个抓取进程并不相等。

官方解释

ORA-26793是在使用系统消息队列(AQ)时报告的Oracle错误。 这可能是由于重叠抓取进程(OP)抓取以前消息时发生的。 星期五,AQ*进程可能会重新启动,重叠的抓取和发布进程可能会导致包含消息的块/ partitions具有多个重叠的抓取进程。

常见案例

ORA-26793: Number of capture processes that enqueued message to queue “string”.”string” not equal to one 错误通常发生在Oracle 11g数据库中,当AQ在用户的事务中引发时也可能发生。

一般处理方法及步骤

1. 首先,检查Oracle系统以确保没有重叠的抓取进程。 如果存在多个重叠的抓取进程,则可以使用下面命令来终止重叠抓取进程:

ALTER SYSTEM KILL ‘capture process string’ IMMEDIATE;

2. 根据情况,从当前正在运行的AQ进程中断开:

ALTER SYSTEM DISCONNECT SESSION ‘string’;

3. 确保所有AQ进程正常运行。使用下面的命令获取AQ进程列表:

SELECT * FROM V$AQ;

4. 确保在存储消息的块/partitions中只有一个抓取进程。 使用以下SQL语句查询所有与AQ关联的抓取进程:

SELECT qcsname, capture_name, sid, serial# FROM sys.v_$aq_pq_process;

5. 如果存在多个抓取进程,请使用ALTER SYSTEM KILL语句将其杀死。

6. 最后,重新连接AQ会话:

ALTER SYSTEM CONNECT SESSION ‘string’;

7. 重新加载AQ存储过程。 有关加载AQ存储过程的更多信息,请参阅Oracle文档。


数据运维技术 » ORA-26793: Number of capture processes that enqueued message to queue “string”.”string” not equal to one ORACLE 报错 故障修复 远程处理