DEV Community

umzzil nng
umzzil nng

Posted on • Originally published at oraerror.com

Oracle ORA-00472 Error: Causes and Solutions Complete Guide

ORA-00472: PMON Process Terminated with Error

ORA-00472 is a critical Oracle database error that occurs when the PMON (Process Monitor) background process terminates abnormally. PMON is responsible for cleaning up failed user processes, releasing locks, rolling back uncommitted transactions, and freeing system resources — making it indispensable to Oracle's normal operation. When PMON goes down, the entire database instance typically crashes, requiring immediate attention.


Top 3 Causes

1. Operating System Resource Exhaustion

When the OS runs out of memory, file descriptors, or semaphores, PMON cannot allocate the resources it needs and terminates. Misconfigured kernel parameters are a very common root cause on Linux/Unix systems.

-- Check current process and session usage vs. limits
SELECT
    (SELECT COUNT(*) FROM v$process) AS current_processes,
    (SELECT value FROM v$parameter WHERE name = 'processes') AS max_processes,
    (SELECT COUNT(*) FROM v$session) AS current_sessions,
    (SELECT value FROM v$parameter WHERE name = 'sessions') AS max_sessions
FROM dual;

-- Review key memory parameters
SELECT name, value
FROM v$parameter
WHERE name IN ('sga_target','sga_max_size','pga_aggregate_target','memory_target')
ORDER BY name;
Enter fullscreen mode Exit fullscreen mode

2. SGA Corruption or Memory Errors

Hardware faults or external processes writing into Oracle's shared memory can corrupt the SGA. When PMON reads a corrupted memory structure, it immediately crashes. This usually appears alongside ORA-00600 or ORA-07445 in the alert log.

-- Check alert log for related errors (Oracle 11g+)
SELECT originating_timestamp, message_text
FROM v$diag_alert_ext
WHERE message_text LIKE '%PMON%'
   OR message_text LIKE '%ORA-006%'
   OR message_text LIKE '%ORA-07445%'
ORDER BY originating_timestamp DESC
FETCH FIRST 30 ROWS ONLY;

-- Inspect SGA component health
SELECT name, bytes, resizeable
FROM v$sgainfo
ORDER BY bytes DESC;
Enter fullscreen mode Exit fullscreen mode

3. Oracle Software Bug / Missing Patch

Certain Oracle releases contain known bugs that cause PMON to crash under specific conditions. Running without the latest PSU or Release Update exposes your instance to these defects.

-- Check Oracle version and applied patches
SELECT * FROM v$version;

-- List applied patches (Oracle 12c and above)
SELECT patch_id, version, action, status, description
FROM dba_registry_sqlpatch
ORDER BY action_time DESC;

-- Verify component registry status after patching
SELECT comp_name, version, status
FROM dba_registry
ORDER BY comp_name;
Enter fullscreen mode Exit fullscreen mode

Quick Fix Solutions

Step 1 — Check the alert log and trace files first.

-- Find the diagnostic trace directory
SELECT value FROM v$diag_info WHERE name = 'Diag Trace';
Enter fullscreen mode Exit fullscreen mode

Review alert_<SID>.log for the exact sequence of errors leading up to ORA-00472.

Step 2 — Restart the database (if it has not restarted automatically) and verify all background processes are running.

-- Confirm critical background processes are alive
SELECT pname, spid, background
FROM v$process
WHERE pname IN ('PMON','SMON','DBWR','LGWR','CKPT','RECO')
ORDER BY pname;
Enter fullscreen mode Exit fullscreen mode

Step 3 — Validate OS kernel parameters against Oracle's installation guide (kernel.shmmax, kernel.sem, fs.file-max, ulimit settings for the oracle OS user).

Step 4 — Apply the latest Oracle Release Update (RU) if a known bug is identified via Oracle MOS (My Oracle Support). Open an SR if ORA-00600 or ORA-07445 appears alongside ORA-00472.


Prevention Tips

1. Continuous Background Process Monitoring

Schedule the following query via a cron job or Oracle Scheduler to detect anomalies early and trigger alerts before a full crash occurs.

-- Scheduled health check for critical background processes
SELECT
    p.pname,
    p.spid AS os_pid,
    NVL(s.status, 'NO SESSION') AS session_status,
    s.last_call_et AS idle_seconds
FROM v$process p
LEFT JOIN v$session s ON p.addr = s.paddr
WHERE p.background = 1
  AND p.pname IN ('PMON','SMON','DBWR','LGWR','CKPT','RECO')
ORDER BY p.pname;
Enter fullscreen mode Exit fullscreen mode

2. Patch Regularly and Right-Size OS Parameters

Establish a quarterly patching cadence using Oracle's recommended PSU/RU releases. Always validate OS kernel parameters (shmmax, shmall, sem, file-max) against Oracle's platform-specific installation guide before go-live and after any infrastructure changes. Keeping both the OS and Oracle software in a supported, up-to-date state is the single most effective way to prevent ORA-00472 recurrence.


Related Errors

Error Code Description
ORA-00470 LGWR process terminated with error
ORA-00471 DBWR process terminated with error
ORA-00474 SMON process terminated with error
ORA-00600 Internal Oracle error — often the root cause behind PMON crash
ORA-07445 OS signal exception — memory violation that can kill PMON

📖 Want a more detailed guide?
Check out the full in-depth version (Korean) on oraerror.com — includes detailed analysis, additional SQL examples, and prevention tips.

Top comments (0)