DEV Community

umzzil nng
umzzil nng

Posted on • Originally published at oraerror.com

Oracle ORA-01077 Error: Causes and Solutions Complete Guide

ORA-01077: Background Process Initialization Failure — Causes, Fixes & Prevention

ORA-01077 is a critical Oracle error that occurs when one or more background processes (such as PMON, SMON, DBWn, LGWR, or CKPT) fail to initialize during database instance startup. This error effectively prevents the database from reaching an open state, making it one of the more urgent issues an Oracle DBA will face. Understanding its root causes is key to resolving it quickly and minimizing downtime.


Top 3 Causes

1. Insufficient SGA Memory or OS Shared Memory Limits

Oracle requires the operating system to allocate shared memory segments for the SGA at startup. If the OS kernel parameters (kernel.shmmax, kernel.shmall on Linux) are set lower than the configured SGA size, background processes cannot acquire the memory they need and fail to initialize.

-- Check current SGA parameter settings
SHOW PARAMETER SGA_TARGET;
SHOW PARAMETER MEMORY_TARGET;

-- Review SGA component sizes
SELECT COMPONENT, CURRENT_SIZE / 1024 / 1024 AS "SIZE_MB"
FROM V$SGA_DYNAMIC_COMPONENTS;
Enter fullscreen mode Exit fullscreen mode
# Check OS shared memory limits (Linux)
sysctl kernel.shmmax
sysctl kernel.shmall

# Update /etc/sysctl.conf if values are too low (example for 8GB SGA)
# kernel.shmmax = 8589934592
# kernel.shmall = 2097152
sysctl -p
Enter fullscreen mode Exit fullscreen mode

2. Corrupt or Misconfigured Initialization Parameters (spfile/init.ora)

A corrupted spfile or incorrect parameter values — such as referencing a non-existent undo tablespace or setting an unrealistically large PROCESSES value — will cause background processes to fail during startup. This is one of the most common causes and is often introduced after a poorly tested ALTER SYSTEM SET command.

-- Check undo tablespace configuration
SELECT TABLESPACE_NAME, STATUS
FROM DBA_TABLESPACES
WHERE CONTENTS = 'UNDO';

-- Recreate spfile from a known-good pfile
STARTUP PFILE='/tmp/init_recovery.ora';

-- Once up, regenerate the spfile
CREATE SPFILE FROM PFILE='/tmp/init_recovery.ora';
SHUTDOWN IMMEDIATE;
STARTUP;

-- Fix a bad parameter (e.g., wrong undo tablespace)
ALTER SYSTEM SET UNDO_TABLESPACE = 'UNDOTBS1' SCOPE=SPFILE;
Enter fullscreen mode Exit fullscreen mode

3. Stale IPC Resources from a Previous Abnormal Shutdown

When an Oracle instance is forcefully killed (e.g., kill -9 or a hard server reboot), shared memory segments and semaphores may not be properly released by the OS. When a new instance attempts to start, it cannot allocate the required IPC resources because they are still occupied by the defunct session.

# Check for leftover shared memory and semaphores owned by oracle
ipcs -m | grep oracle
ipcs -s | grep oracle

# Remove stale shared memory segments
for i in $(ipcs -m | awk '/oracle/{print $2}'); do ipcrm -m $i; done

# Remove stale semaphores
for i in $(ipcs -s | awk '/oracle/{print $2}'); do ipcrm -s $i; done
Enter fullscreen mode Exit fullscreen mode
-- After cleanup, start the instance and verify background processes
STARTUP;

SELECT PNAME, DESCRIPTION
FROM V$BGPROCESS
WHERE PADDR <> '00'
ORDER BY PNAME;
Enter fullscreen mode Exit fullscreen mode

Quick Fix Summary

Cause Fix
SGA > OS shared memory limit Increase kernel.shmmax / reduce SGA_TARGET
Corrupt/bad spfile Boot with pfile, fix params, recreate spfile
Stale IPC resources Clean up with ipcrm, then restart

Prevention Tips

1. Always shut down Oracle gracefully and back up your spfile regularly.
Never use kill -9 on Oracle processes. Always use SHUTDOWN IMMEDIATE or SHUTDOWN NORMAL. Before any parameter change, back up the current spfile:

-- Back up spfile before making changes
CREATE PFILE='/backup/pfile_backup_before_change.ora' FROM SPFILE;

-- Review recent parameter change history
SELECT NAME, VALUE, UPDATE_COMMENT
FROM V$PARAMETER_HISTORY
ORDER BY NAME;
Enter fullscreen mode Exit fullscreen mode

2. Monitor OS kernel parameters and alert logs proactively.
Set up automated monitoring for shared memory usage, semaphore counts, and file descriptor limits. Regularly review the Oracle alert log for early warning signs such as ORA-00445 (background process did not start), which often precedes ORA-01077.


Related Errors

  • ORA-27102out of memory: Often appears alongside ORA-01077 when SGA allocation fails at the OS level.
  • ORA-00445background process did not start after N seconds: A direct precursor to ORA-01077, logged in the alert log before the instance aborts.
  • ORA-04031 – Shared pool memory exhaustion, related to overall SGA memory misconfiguration.

📖 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)