回滚段表空间数据文件损坏处理方法
问题描述: 当一个回滚段表空间数据文件丢失或损坏时,而且又指定了另外的回归段表空间,此时数据库可以正常打开,查询、插入、删除数据等都没有问题,当新增一个表时,会提示如下错误:
具体解决步骤如下:
1、 先SHUTDOWN,以RESTRICT模式打开数据库:
SQL>STARTUP RESTRICT MOUNT;
2、 以OFFLINE DROP选项删除丢失或损坏的数据文件:
SQL>alter database datafile 44 offline drop;
3、 打开数据库:
SQL>ALTER DATABASE OPEN;
4、 修改initSID.ora的文件,并且加入如下一行:
_corrupted_rollback_segments = (,...,)
这个参数应当包含ROLLBACK_SEGMENTS中损坏的表空间的所有的回滚段,例如:
_corrupted_rollback_segments = (_SYSSMU11$,_SYSSMU12$,_SYSSMU13$,_SYSSMU14$,_SYSSMU15$,_SYSSMU16$,_SYSSMU17$,_SYSSMU18$,_SYSSMU19$,_SYSSMU20$,_SYSSMU21$)
5、 以RESTRICT模式指定pfile打开数据库:
SQL>STARTUP RESTRICT pfile="C:/oracle/product/10.2.0/db_1/database/initORCL.ORA";
6、删除掉损坏的数据文件所属的回滚段表空间:
SQL>DROP TABLESPACE "UNDOTEMP" INCLUDING CONTENTS AND DATAFILES;
7、重建回滚段表空间:
SQL>CREATE UNDO TABLESPACE UNDOTBS DATAFILE 'E:/oradata/ORCL/UNDOTBS.DBF' SIZE 100M REUSE AUTOEXTEND ON;
SQL>ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS;
SQL>DROP TABLESPACE UNDO0702 INCLUDING CONTENTS;
SQL>SELECT * FROM DBA_TABLESPACES;
8、在initSID.ora中把你重新创建的回滚段再一次包括进来,如:
undo_tablespace=UNDOTBS
9、以该pfile再次重启数据库,一切正常,表创建成功。
类似问题参考网址:http://it.china-b.com/oracle/yyjs/20090611/82193_1.html