In Our RAC databases I noticed EMON process consuming CPU. OEM graph like below:
So What is EMON process? From oracle doc:
EMNC / Ennn ( EMON Coordinator Process / EMON Slave Process )
EMNC coordinates event management and notification activity in the database, including Streams Event Notifications, Continuous Query Notifications, and Fast Application Notifications.
The database event management and notification load is distributed among the EMON slave processes. These processes work on the system notifications in parallel, offering a capability to process a larger volume of notifications, a faster response time, and a lower shared memory use for staging notifications.
So what that process cause on database side? Here is the answer:
So how we prevent this event?
We have 2 option
1. We can kill EMON process (Its for 11g but also work for 10g) The emon slave will automatically restart when it is next required to do so.
2. We can set SQLNET.SEND_TIMEOUT=10
It was found that after the SEND_TIMEOUT parameter was adjusted and resolved the EMN process to stop spinning and de-register the subscribers; if customer tried to re-register, the subscribers were removed as soon as new changes took place and could not re-register successfully until the EMN process was killed.
Source:
Event Monitor (EMON) slave process constantly consuming CPU (Doc ID 1603844.1)
Sessions Hang On Wait Event “WAIT FOR EMON PROCESS NTFNS” (Doc ID 1287435.1)
Master Note: Troubleshooting Oracle Background Processes (Doc ID 1509616.1)