回滚段表空间数据文件损坏处理方法

回滚段表空间数据文件损坏处理方法

问题描述: 当一个回滚段表空间数据文件丢失或损坏时,而且又指定了另外的回归段表空间,此时数据库可以正常打开,查询、插入、删除数据等都没有问题,当新增一个表时,会提示如下错误:

 1

 

 

 

具体解决步骤如下:

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

你可能感兴趣的:(c,数据库,database,System)