프린트 하기

OS환경 : Oracle Linux5.8(64bit)


DB 환경 : Oracle Database 10.2.0.4


설명 : 

QMON 백그라운드 프로세스란?

QMON은 Oracle Streams Advanced Queuing (AQ), Streams 및 시스템 및 사용자 소유 AQ 영구 및 버퍼링 된 객체를 모니터하고 유지 관리하는 다양한 기타 데이터베이스 제품과 연결됩니다. 예를 들어, Oracle 작업 스케줄러는 AQ를 사용하고 스케줄 된 시간과 간격으로 작업을 조정할 수 있도록 다양한 데이터베이스 구성 요소의 클라이언트 역할을합니다. 마찬가지로, Oracle Grid Control은 AQ를 사용하여 경보 및 서비스 메트릭을 지원하고 데이터 펌프와 같은 데이터베이스 서버 유틸리티는 이제 AQ를 사용합니다. 또한 오라클 애플리케이션은 상당 기간 AQ를 사용해 왔으며 앞으로도 계속 진행될 것입니다. 


QMON은 주로 메시지 만기, 재시도, 지연, 대기열 통계 유지, 대기열 테이블에서 PROCESSED 메시지 제거 및 필요에 따라 대기열에서 IOT를 갱신하는 메커니즘과 연관됩니다.


QMON은 영구적 인 메시지 처리 및 버퍼링 된 메시지 처리 기능을 제공합니다. 


qmon 프로세스가 실패하면 인스턴스가 실패해서는 안됩니다. 이는 작업 큐 프로세스의 경우에도 해당됩니다. 


QMON 자체는 대기열에서 작동하지만 자체 작업 및 시간 기반 작업 처리를 위해 데이터베이스 대기열을 사용하지 않습니다. 


QMON은 큐 모니터 프로세스 또는 서버에 의해 실행되는 여러 개별 태스크로 구상 될 수 있습니다.


10g 이전 : 10g  이전의 Oracle에는 QMNx (x = 0 ... .n)가있어 qmno_라는 백그라운드 프로세스를 볼 수 있습니다. 10g 이전 릴리스에서는 QMON 프로세스가 aq_tm_processes 매개 변수에 의해 제어되었습니다 . 이것은 AQ 슬레이브의 생성 (고급 큐잉을위한 최대 슬레이브 프로세스 수)의 동작을 제어하는 ​​데 사용되었으며 aq_tm_processes 는 절대로 0 값으로 설정 되어서 는 안됩니다.


10g 이상 :  10g 이상에서는 QMON이라고하는 프로세스가 없습니다. 쿼리 모니터 (QMON)는 쿼리 모니터 코디네이터 (큐 모니터 코디네이터 (QMNC) 및 QMNC 에서 생성 된 모든 하위 프로세스를 설명하는 용어입니다 . 이름 Q01, Q02 등으로 공정 이 QMNC 프로세스가 QMNC 프로세스가 10g 릴리스 1에서 소개되었습니다. 고급 큐 (AQ) 및 오라클 스트림에 필요한 다양한 배경의 활동을 촉진 할 책임이 있으며, 그것은에 작업을 할당하는 책임이있다 QMON 하위 프로세스 (q01, q02, ...) 10g 이상에서는 aq_tm_processes 매개 변수가 사용되지 않습니다. 


-> 10g 이전까지만 있는 백그라운드 프로세스로 10g 이후 버전에는 QMON 프로세스가 없음


10g awr report에 나온 QMON Coordinator 란

코디네이터는 10.1에서 소개되었으며 QMON 프로세스에 작업을 할당합니다. 이러한 작업 중 일부는 예정된 시간 기반 활동이고 다른 작업은 이벤트 기반입니다. 


RAC 환경에서 버퍼링 된 메시징의 경우, RAC 인스턴스가 실패하면 기존 QMON 프로세스는 필요에 따라 대기 소유권을 새 소유 인스턴스로 이동시킵니다. 이는 1 차 / 2 차 인스턴스가 정의 된 경우와 같이 Streams 구성과 관련이 있습니다. Streams의 목적은 인스턴스가 다운되었을 때 메모리에 메시지를 유지하는 것입니다. 버퍼링 된 메시지의 처리는 남아있는 인스턴스에서 수행되어야합니다 (관련 Capture 또는 Apply 프로세스도 재배치해야합니다). 일단 소유 인스턴스가 변경되면 QMON은이 인스턴스의 버퍼링 된 큐에서 활동을 재개 할 수 있습니다.

11.2.0.1부터 코디네이터는 GV $ QMON_COORDINATOR_STATS에 표시됩니다.



QMON 작업

태스크는 QMON 서버 프로세스에 할당 될 특정 조치와 관련됩니다. 


11.2.0.1에서 GV $ QMON_TASK_STATS 뷰는이 버전에서 사용 가능한 모든 태스크와 태스크 처리에서 오류가 발생했는지 여부를 보여줍니다. 이 뷰는 다음 참조 태스크 (Oracle 참조 안내서에서 자세히 설명 된 것처럼 task_name 및 remark)에 관련된 세부 사항을 표시합니다.



원문

Applies to:

Oracle Server - Enterprise Edition - Version: 8.1.7.0 to 11.2.0.2 - Release: 8.1.7 to 11.2

Oracle Server - Standard Edition - Version: 9.2.0.1 to 11.2.0.1   [Release: 9.2 to 11.2]

Information in this document applies to any platform.



Purpose

In this article, we will discuss the following


1. Queue Monitor Coordinator (QMNC) , Qmon Server Processes (QXXX) and Task Operations which can be assigned to Servers. Collectively named QMON.


2. Known issues which affect these processes.


3. How to collect useful diagnostic information when problems arise with them.



Scope and Application

Database administrators of Advanced Queueing (AQ) and Streams databases.



Master Note for AQ Queue Monitor Process (QMON)


Queue Monitor - QMON

QMON is connected with Oracle Streams Advanced Queueing (AQ), Streams and a variety of other Database products which monitor and maintain system and user-owned AQ persistent and buffered objects. For example, the Oracle job scheduler uses AQ and serves as a client to various database components to allow operations to be coordinated at scheduled times and intervals. Similarly, Oracle Grid Control relies on AQ for its Alerts and Service Metrics and database server utilities such as datapump now use AQ. Furthermore, Oracle Applications has been using AQ for a significant period of time and this will continue. 


QMON is primarily associated with the mechanisms for message expiration, retry, delay, maintaining queue statistics, removing PROCESSED messages from a queue table and updating the dequeue IOT as necessary.


QMON has a part to play in permanent and buffered message processing. 


If a qmon process should fail, this should not cause the instance to fail. This is also the case with job queue processes. 


QMON itself operates on queues but does not use a database queue for its own processing of tasks and time based operations.


QMON can be envisaged as a number of discrete tasks which are run by Queue Monitor processes or servers.




QMON coordinator

The coordinator was introduced in 10.1 and is responsible for allocating tasks to QMON processes. Some of these tasks are scheduled, time based activities whereas others are event driven.


In the case of buffered messaging in a RAC environment, if a RAC instance should fail, an existing QMON process will move ownership of the queues, where necessary to a new owning instance. This would be relevant in a Streams configuration for example where a primary / secondary instance is defined. As an aim of Streams is to maintain messages in memory when an instance is down, the processing of buffered messages has to be done on a surviving instance (a related Capture or Apply process would also need to be relocated); once the owning instance has been changed, QMON can then resume activity on the buffered queue on this instance. 


Starting with 11.2.0.1, the coordinator is visible in GV$QMON_COORDINATOR_STATS.



QMON tasks

Tasks relate to a specific action which will be allocated to a QMON server process. 


In 11.2.0.1, the view : GV$QMON_TASK_STATS shows all the tasks available at this version in addition to whether any errors may have been encountered in the task processing. The view shows details relating to the following tasks (based on columns : task_name and remark - as detailed in the Oracle Reference Guide) :



참조 : https://blogs.oracle.com/db/oracle-support-master-note-for-aq-queue-monitor-process-qmon-doc-id-3056621

Oracle Support Master Note for AQ Queue Monitor Process (QMON) (Doc ID 305662.1) _ Oracle DB_EM Support Blog.pdf


http://www.dba-oracle.com/t_qmon_background_process.htm