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;
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;
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;
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();
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;
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)