最近处理一起因UNDO表空间的数据文件损坏,而导致数据库服务无法启动的情况。
按理说,undo表空间数据文件的损坏,是不会影响到已提交的数据的,所以,该数据库能在没有备份的情况下恢复,并且不损失已提交的数据。
以下是实验过程:
1、破坏undotbs01.dbf(用ultraEdit编辑,将头部删除),然后启动数据库,报:
SQL> startup
ORACLE 例程已经启动。
Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 171969412 bytes
Database Buffers 432013312 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。
ORA-01157: 无法标识/锁定数据文件 2 - 请参阅 DBWR 跟踪文件
ORA-01110: 数据文件 2: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF'
2、将UNDOTBS离线:
SQL>ALTER DATABASE DATAFILE ‘D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF' OFFLINE DROP;
数据库已更改
3、创建pfile:
SQL> create pfile='d:\init.ora' from spfile;
文件已创建
4、修改pfile,添加参数:
*.undo_management='MANUAL'
_corrupted_rollback_segme