Understanding ORA-01122

The ORA-01122 error indicates that a database file has failed the verification check performed by Oracle during startup or when accessing the file. The full error message typically appears as:

ORA-01122: database file %s failed verification check

ORA-01110: data file %s: '%s'

This error is commonly accompanied by additional diagnostic errors such as ORA-01110 (identifying the specific datafile) and may include ORA-01207 (file is more recent than control file) or ORA-01206 (file is not part of database).

Common Causes

1. Control File and Datafile Inconsistency

The most common cause is a mismatch between the control file and the datafile headers. This can occur when:

  • Restoring a backup without proper recovery
  • Using an old control file with newer datafiles
  • Incomplete RMAN restore operations

2. Datafile Header Corruption

Physical corruption in the datafile header blocks prevents Oracle from reading vital information such as checkpoint SCN and database ID.

3. Incorrect File Restoration

Restoring datafiles from different databases or incompatible backup sets can cause verification failures.

4. Block Size Mismatch

Attempting to use a datafile with a different block size than the database expects will trigger this error.

Diagnostic Steps

Step 1: Identify the Problem File

-- Check datafile status
SELECT file#, status, name FROM v$datafile;

-- Verify file headers
SELECT file#, checkpoint_change#, checkpoint_time 
FROM v$datafile_header;

Step 2: Examine the Alert Log

-- Location varies by OS, typically:
$ORACLE_BASE/diag/rdbms/{db_name}/{instance}/trace/alert_{instance}.log

Look for additional context around the ORA-01122 error.

Step 3: Use DBV Utility

dbv file=/u01/oradata/ORCL/users01.dbf blocksize=8192

This will identify specific corrupted blocks within the file.

Resolution Methods

Method 1: Media Recovery

If you have RMAN backups available:

RMAN> restore datafile 4;
RMAN> recover datafile 4;
RMAN> alter database datafile 4 online;

Method 2: Reset Logs (No Backup Available)

⚠️ Warning: Data Loss Risk

This method may result in data loss and should only be used as a last resort.

-- Take datafile offline
ALTER DATABASE DATAFILE '/path/to/file.dbf' OFFLINE DROP;

-- Open database with resetlogs
ALTER DATABASE OPEN RESETLOGS;

Method 3: Using DBRECOVER for Oracle

When standard methods fail, DBRECOVER can extract data directly from corrupted datafiles:

DBRECOVER> open datafile '/u01/oradata/ORCL/users01.dbf'
[INFO] Datafile header corrupted
[INFO] Scanning for data blocks...
[INFO] Found 45,678 valid data blocks

DBRECOVER> list objects
[INFO] Found 234 tables, 156 indexes

DBRECOVER> recover table SCOTT.EMPLOYEES
[INFO] Extracting 1,247 rows...
✓ Recovery complete

Prevention Best Practices

  1. Regular Backups: Implement RMAN backup strategy with multiple retention policies
  2. Backup Validation: Use RMAN VALIDATE to verify backup integrity
  3. Control File Multiplexing: Maintain multiple control file copies
  4. Archive Log Mode: Enable archive logging for point-in-time recovery
  5. Storage Monitoring: Monitor disk health and I/O errors

Need Professional Help?

For complex ORA-01122 scenarios or when standard recovery methods have failed, contact our experts at [email protected]