客户的一个测试环境,主机异常断电,启动后发现undo文件损坏,无法启动,在open阶段报错如下:
Errors in file /u01/app/oracle/diag/rdbms/cdrdb/CDRDB/trace/CDRDB_ora_4109.trc:
ORA-01122: database file 3 failed verification check
ORA-01110: data file 3: '/u01/app/oracle/oradata/CDRDB/undotbs01.dbf'
ORA-01210: data file header is media corrupt
ORA-1122 signalled during: ALTER DATABASE OPEN...
由于是测试环境,没有备份,但是又需要里边的一些数据,所以我尝试使用非常规恢复方法进行了尝试。
先冷备份现有环境!!!!!!!!!!!!!!!!
创建pfile文件:
create pfile from spfile;
在pfile中修改这两个参数
#*.undo_tablespace='UNDOTBS1'
*.undo_management= MANUAL
之后用这个pfile启动:
SYS@CDRDB>startup force pfile='/u01/app/oracle/product/11.2.0/dbhome_1/dbs/initCDRDB.ora';
ORACLE instance started.
Total System Global Area 523108352 bytes
Fixed Size 1337632 bytes
Variable Size 364906208 bytes
Database Buffers 150994944 bytes
Redo Buffers 5869568 bytes
Database mounted.
ORA-01122: database file 3 failed verification check
ORA-01110: data file 3: '/u01/app/oracle/oradata/CDRDB/undotbs01.dbf'
ORA-01210: data file header is media corrupt
仍然报错
之后尝试drop掉这个undo
SYS@CDRDB>alter database datafile 3 offline dro