Skip to content

ORA-07445 Exception Encountered - Core Dump Analysis Guide

Error Text: ORA-07445: exception encountered: core dump [string] [string] [string] [string] [string] [string]

The ORA-07445 error indicates an Oracle process has encountered an exception causing a core dump. This is a serious error typically caused by software bugs, memory corruption, or OS-level issues. Like ORA-00600, this usually requires Oracle Support assistance.

ORA-07445: exception encountered: core dump [kglic0()+1100] [SIGSEGV] [ADDR:0x0] [PC:0x1234567] [Address not mapped to object] []
^^^^^^^^^^^^^^^^ ^^^^^^^^
Function+offset Signal type
SignalDescriptionCommon Cause
SIGSEGVSegmentation violationInvalid memory access
SIGBUSBus errorMemory alignment issues
SIGFPEFloating point exceptionDivision by zero
SIGILLIllegal instructionCorrupted code
SIGABRTAbort signalProcess self-termination
-- Check if database is still running
SELECT instance_name, status, database_status
FROM v$instance;
-- Check for other affected sessions
SELECT COUNT(*) as active_sessions
FROM v$session
WHERE status = 'ACTIVE' AND type = 'USER';
-- Recent errors
SELECT originating_timestamp, message_text
FROM x$dbgalertext
WHERE message_text LIKE '%ORA-07445%'
OR message_text LIKE '%ORA-00600%'
ORDER BY originating_timestamp DESC
FETCH FIRST 20 ROWS ONLY;
Terminal window
# Find core dump location
cd $ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/cdump
ls -la core*
# Alternative locations
find $ORACLE_BASE -name "core*" -mtime -1 2>/dev/null
# Find associated trace file
cd $ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/trace
ls -lt | grep -E "(ora_|j00)" | head -20
# Check incident
cd $ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/incident
ls -la
Terminal window
# Using ADRCI
adrci
ADRCI> set home diag/rdbms/mydb/mydb
ADRCI> show incident -mode detail -p "error_text like '%07445%'"
# Create incident package
ADRCI> ips create package incident <incident_id>
ADRCI> ips add file <core_dump_path> package 1
ADRCI> ips generate package 1 in /tmp/ora7445_package
# Manual collection
tar -czf ora7445_diag.tar.gz \
$ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/trace/*ora*.trc \
$ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/cdump/core* \
$ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/alert/alert*.log
-- Check memory parameters
SHOW PARAMETER memory_target
SHOW PARAMETER sga_target
SHOW PARAMETER pga_aggregate_target
-- Flush memory structures
ALTER SYSTEM FLUSH SHARED_POOL;
ALTER SYSTEM FLUSH BUFFER_CACHE;
-- If recurring, reduce memory to avoid bad memory region
ALTER SYSTEM SET sga_target = 8G SCOPE=SPFILE;
ALTER SYSTEM SET pga_aggregate_target = 2G SCOPE=SPFILE;
-- Restart required
SHUTDOWN IMMEDIATE;
STARTUP;
Terminal window
# Check system resources
free -m
df -h
ulimit -a
# Check for OS errors
dmesg | tail -50
grep -i error /var/log/messages | tail -20
# Verify Oracle user limits (/etc/security/limits.conf)
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
oracle soft stack 10240
oracle hard stack 32768
-- Common bug indicators
-- Function names often indicate the area:
-- kgl* - Library cache
-- kks* - SQL Execution
-- ktb* - Table access
-- ktu* - Undo management
-- kcb* - Buffer cache
-- Check for known patches
SELECT patch_id, action, status, description
FROM sys.dba_registry_sqlpatch
WHERE description LIKE '%07445%'
ORDER BY action_time DESC;
-- Common feature workarounds
ALTER SYSTEM SET "_cursor_features_enabled"=2 SCOPE=BOTH;
ALTER SYSTEM SET "_optimizer_adaptive_plans"=FALSE SCOPE=BOTH;
ALTER SYSTEM SET "_px_adaptive_dist_method"='OFF' SCOPE=BOTH;
-- Disable specific optimizer features
ALTER SYSTEM SET "_optimizer_null_aware_antijoin"=FALSE SCOPE=BOTH;
ALTER SYSTEM SET "_optimizer_ansi_rearchitecture"=FALSE SCOPE=BOTH;
-- For specific sessions experiencing issues
ALTER SESSION SET optimizer_mode = RULE;
ALTER SESSION SET "_complex_view_merging"=FALSE;
ALTER SESSION SET workarea_size_policy = MANUAL;
ALTER SESSION SET sort_area_size = 524288000;
-- Use hints to avoid problematic code paths
SELECT /*+ NO_MERGE USE_NL(t1 t2) */
t1.col1, t2.col2
FROM table1 t1, table2 t2
WHERE t1.id = t2.id;
-- Rewrite problematic queries
-- Instead of complex MERGE
MERGE INTO target t
USING source s ON (t.id = s.id)
WHEN MATCHED THEN UPDATE...
WHEN NOT MATCHED THEN INSERT...;
-- Use separate UPDATE and INSERT
UPDATE target t
SET ...
WHERE EXISTS (SELECT 1 FROM source s WHERE s.id = t.id);
INSERT INTO target
SELECT * FROM source s
WHERE NOT EXISTS (SELECT 1 FROM target t WHERE t.id = s.id);
Terminal window
# Extract function call stack
grep -A 20 "Call Stack" <trace_file>
# Common problematic call stacks
# Buffer cache issues:
kcbgtcr -> kcbgcur -> ktbgcur -> ktrget
# Library cache issues:
kglLock -> kglget -> kksfbc -> kkspsc0
# Memory issues:
kghalf -> kghalp -> kghfnd -> kghalo
Terminal window
# Basic core dump analysis
gdb $ORACLE_HOME/bin/oracle core.<pid>
(gdb) where
(gdb) info registers
(gdb) x/10i $pc-20
(gdb) quit
# Extract readable information
strings core.<pid> | grep -E "(SELECT|INSERT|UPDATE|DELETE)" | head -20
-- Create monitoring procedure
CREATE OR REPLACE PROCEDURE monitor_system_health AS
v_count NUMBER;
BEGIN
-- Check for recent ORA-07445
SELECT COUNT(*) INTO v_count
FROM x$dbgalertext
WHERE message_text LIKE '%ORA-07445%'
AND originating_timestamp > SYSTIMESTAMP - INTERVAL '1' HOUR;
IF v_count > 0 THEN
-- Send alert
DBMS_OUTPUT.PUT_LINE('CRITICAL: ORA-07445 detected in last hour');
-- Can integrate with email/monitoring system
END IF;
-- Check core dump directory
-- Use UTL_FILE to check for new core files
END;
/
-- Schedule monitoring
BEGIN
DBMS_SCHEDULER.CREATE_JOB(
job_name => 'MONITOR_SYSTEM_HEALTH',
job_type => 'STORED_PROCEDURE',
job_action => 'monitor_system_health',
repeat_interval => 'FREQ=HOURLY',
enabled => TRUE
);
END;
/
Terminal window
# Regular patch checks
$ORACLE_HOME/OPatch/opatch lsinventory -detail > patch_inventory.txt
# Check for recommended patches
# Search MOS for:
# - Database version + "recommended patches"
# - "ORA-07445" + first argument function
# - Platform-specific bundle patches
# Apply patches proactively
cd $ORACLE_HOME
$ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -ph <patch_location>
$ORACLE_HOME/OPatch/opatch apply <patch_location>
  1. Complete error message from alert log
  2. Stack trace from trace file
  3. Core dump file (if under 2GB)
  4. System information:
    Terminal window
    uname -a
    cat /etc/os-release
    free -m
    ulimit -a
  5. Recent changes (patches, upgrades, application changes)
Problem: ORA-07445 [function_name]
Environment:
- Database Version: 19.15.0.0
- OS: Oracle Linux 7.9
- Platform: x86_64
Error Frequency: [Once/Intermittent/Frequent]
First Occurrence: [Date/Time]
Business Impact: [Critical/High/Medium]
Error Details:
ORA-07445: exception encountered: core dump [full_error_text]
Associated SQL: [If available from trace]
Troubleshooting Done:
1. [List steps taken]
2. [Workarounds attempted]
Diagnostic Files Uploaded:
- Incident package: [filename]
- Core dump: [filename]
- Alert log: [filename]
-- If instance crashed
STARTUP MOUNT;
ALTER DATABASE RECOVER;
ALTER DATABASE OPEN;
-- Check for corruption
RMAN> VALIDATE DATABASE;
-- Review alert log for additional errors
SELECT originating_timestamp, message_text
FROM x$dbgalertext
WHERE originating_timestamp > SYSTIMESTAMP - INTERVAL '1' HOUR
ORDER BY originating_timestamp;
-- Find and clean up affected sessions
SELECT s.sid, s.serial#, s.username, s.program, s.status,
p.spid, p.pid
FROM v$session s, v$process p
WHERE s.paddr = p.addr
AND s.status = 'KILLED';
-- Force cleanup if needed
ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE;
-- OS level cleanup
-- kill -9 <spid>
  1. ✓ Check database status
  2. ✓ Locate core dump and traces
  3. ✓ Create incident package
  4. ✓ Check for known bugs
  5. ✓ Apply workarounds if available
  6. ✓ Open Oracle SR with Severity 1 if production
  7. ✓ Monitor for recurrence
  8. ✓ Plan patching strategy
  • kgl* - Library Cache
  • kks* - SQL Compilation
  • kxs* - SQL Execution
  • kcb* - Buffer Cache
  • ktb* - Table Access
  • ktu* - Undo/Transaction
  • kge* - Error Handling
  • kgh* - Memory Management