DEV Community

umzzil nng
umzzil nng

Posted on Originally published at oraerror.com

Oracle ORA-07445 Error: Causes and Solutions Complete Guide

ORA-07445: exception encountered: core dump — What It Means and How to Fix It

ORA-07445 is one of the most serious Oracle errors, occurring when an Oracle process encounters an unexpected internal exception that causes the operating system to generate a core dump. Unlike typical SQL errors, this error originates deep within Oracle's internal engine, often triggered by software bugs, memory corruption, or OS-level incompatibilities. When it occurs, Oracle automatically generates trace files and incident logs that are essential for diagnosing the root cause.


Top 3 Causes

1. Unpatched Oracle Bugs

The most frequent cause of ORA-07445 is a known Oracle software bug that hasn't been patched. Certain SQL patterns, query execution plans, or optimizer features can trigger faulty internal function calls, leading to a crash.

-- Check your current Oracle version and applied patches
SELECT * FROM V$VERSION;

-- View recently applied patches (Oracle 12c and above)
SELECT PATCH_ID, VERSION, ACTION, STATUS, DESCRIPTION,
       TO_CHAR(ACTION_TIME, 'YYYY-MM-DD HH24:MI:SS') AS APPLIED_ON
FROM DBA_REGISTRY_SQLPATCH
ORDER BY ACTION_TIME DESC
FETCH FIRST 10 ROWS ONLY;
Enter fullscreen mode Exit fullscreen mode

Fix: Search My Oracle Support (MOS) using the function name from the trace file (e.g., kkqctdrvTD or qkebCreateBinds) to find the exact bug number and apply the corresponding one-off patch or PSU/RU.


2. SGA/PGA Memory Corruption or Misconfiguration

Insufficient or improperly configured memory parameters can cause Oracle processes to access invalid memory addresses, resulting in a core dump.

-- Review current memory configuration
SELECT NAME, VALUE
FROM V$PARAMETER
WHERE NAME IN (
    'sga_target', 'sga_max_size',
    'pga_aggregate_target',
    'memory_target', 'memory_max_target'
);

-- Check SGA component usage
SELECT COMPONENT,
       ROUND(CURRENT_SIZE/1024/1024, 2) AS CURRENT_MB,
       ROUND(MAX_SIZE/1024/1024, 2)     AS MAX_MB
FROM V$SGA_DYNAMIC_COMPONENTS
ORDER BY CURRENT_SIZE DESC;

-- Adjust PGA if needed
ALTER SYSTEM SET PGA_AGGREGATE_TARGET = 2G SCOPE=BOTH;
ALTER SYSTEM SET SGA_TARGET = 8G SCOPE=BOTH;
Enter fullscreen mode Exit fullscreen mode

Fix: Increase memory parameters based on actual workload and ensure the OS has enough physical RAM and swap space to support the configured values.


3. Problematic SQL Triggering a Specific Code Path

Certain complex SQL statements — particularly those involving view merging, join predicate push-down, or parallel execution — can hit a buggy code path inside Oracle's query optimizer.

-- Temporarily work around the issue using hints
SELECT /*+ NO_MERGE NO_PUSH_PRED NO_PARALLEL */
    e.employee_id,
    e.last_name,
    d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.department_id;

-- Disable specific optimizer features at the session level
ALTER SESSION SET "_complex_view_merging"  = FALSE;
ALTER SESSION SET "_push_join_predicate"   = FALSE;

-- Disable parallel processing if parallel query is involved
ALTER SESSION DISABLE PARALLEL QUERY;
ALTER SESSION DISABLE PARALLEL DML;
Enter fullscreen mode Exit fullscreen mode

Fix: Identify the problem SQL from the trace file, then apply hints or hidden parameter changes as a short-term workaround while the proper patch is being scheduled.


Quick Fix Checklist

-- Step 1: Find the trace file location
SELECT VALUE FROM V$DIAG_INFO WHERE NAME = 'Default Trace File';

-- Step 2: List recent ORA-07445 incidents
SELECT INCIDENT_ID, CREATE_TIME, PROBLEM_KEY
FROM V$DIAG_INCIDENT
WHERE PROBLEM_KEY LIKE '%ORA 7445%'
ORDER BY CREATE_TIME DESC
FETCH FIRST 20 ROWS ONLY;

-- Step 3: Check for invalid objects that may contribute
SELECT OBJECT_TYPE, COUNT(*) AS INVALID_COUNT
FROM DBA_OBJECTS
WHERE STATUS = 'INVALID'
GROUP BY OBJECT_TYPE
ORDER BY INVALID_COUNT DESC;

-- Recompile invalid objects
EXEC UTL_RECOMP.RECOMP_SERIAL();
Enter fullscreen mode Exit fullscreen mode

Prevention Tips

1. Maintain a Regular Patching Schedule
Apply Oracle's quarterly Release Updates (RU) or Critical Patch Updates (CPU) consistently. The majority of ORA-07445 incidents are caused by known bugs that already have patches available. Always validate patches in a test environment before applying to production.

2. Automate Alert Log Monitoring
Set up automated monitoring for ORA-07445 in your alert log using Oracle Enterprise Manager, custom shell scripts, or third-party tools. Early detection of intermittent ORA-07445 occurrences allows you to act before a full system outage occurs.

-- Monitor ORA-07445 frequency over the past 30 days
SELECT TRUNC(CREATE_TIME, 'DD') AS INCIDENT_DATE,
       COUNT(*)                  AS INCIDENT_COUNT
FROM V$DIAG_INCIDENT
WHERE PROBLEM_KEY LIKE '%ORA 7445%'
  AND CREATE_TIME >= SYSDATE - 30
GROUP BY TRUNC(CREATE_TIME, 'DD')
ORDER BY INCIDENT_DATE DESC;
Enter fullscreen mode Exit fullscreen mode

Related Errors

  • ORA-00600 — Oracle internal error; often appears alongside ORA-07445 and indicates a similar internal code-level failure.
  • ORA-04031 — Shared memory exhaustion in the SGA; memory pressure can indirectly trigger ORA-07445.
  • ORA-27300 / ORA-27301 — OS-level signal handling failures that may accompany core dump events.

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