ORA-1157, ORA-1110的错误解决方法

回滚段表空间中的一个数据文件丢失或者损坏导致数据库无法识别它,在启动数据库的时候会出现ORA-1157, ORA-1110的错误,或者操作系统级别的错误,例如ORA-7360。在关闭数据库的时候(normal或者immediate)会出现ORA-1116, ORA-1110的错误,或者操作系统级别的错误,例如ORA-7368。
当然,这种时候也会有很多种不同的情况,下面就一一讲述一下在各种情况下一般的恢复方法。
一。数据库此时处于关闭的状态。
这种时候又可以分成两种情况:
A。数据库是正常的关闭的(normal或者immediate)
这种情况下最简单的方法就是offline drop掉这个坏了的或者丢失的数据文件,然后以restricted模式打开数据库然后删除并且重建包含损坏文件的回滚段表空间。

回滚段表空间中的一个数据文件丢失或者损坏导致数据库无法识别它,在启动数据库的时候会出现ORA-1157, ORA-1110的错误,或者操作系统级别的错误,例如ORA-7360。在关闭数据库的时候(normal或者immediate)会出现ORA-1116, ORA-1110的错误,或者操作系统级别的错误,例如ORA-7368。
当然,这种时候也会有很多种不同的情况,下面就一一讲述一下在各种情况下一般的恢复方法。
一。数据库此时处于关闭的状态。
这种时候又可以分成两种情况:
A。数据库是正常的关闭的(normal或者immediate)
这种情况下最简单的方法就是offline drop掉这个坏了的或者丢失的数据文件,然后以restricted模式打开数据库然后删除并且重建包含损坏文件的回滚段表空间。
具体步骤如下:
1。确定数据库是正常的关闭的。方法是可以去查看alert文件,到最后看是否有如下信息:
"alter database dismount
Completed: alter database dismount"
如果有的话,就证明数据库是正常关闭的,否则就不能用这个方法去恢复。
2。修改init参数文件,移去ROLLBACK_SEGMENTS中包含的损坏数据文件的回滚段表空间的回滚段,如果你不能确定哪些回滚段是坏的,简单的方法是你可以注释掉整个ROLLBACK_SEGMENTS。
3。以restricted模式去mount数据库。
STARTUP RESTRICT MOUNT
4。offline drop掉那个坏的数据文件
ALTER DATABASE DATAFILE '<full_path_file_name>' OFFLINE DROP;
5。打开数据库
ALTER DATABASE OPEN
如果你看到如下信息"Statement processed",则跳到第7步,如果你看到ORA-604, ORA-376, and ORA-1110的错误信息,继续第6步。
6。正常的关闭数据库,然后在init文件中注释掉ROLLBACK_SEGMENTS,并加入隐含参数
_corrupted_rollback_segments = ( <rollback1>,...., <rollbackN> )
然后以restricted模式打开数据库
STARTUP RESTRICT
7。删除掉那个包含损坏文件的回滚段表空间。
DROP TABLESPACE <tablespace_name> INCLUDING CONTENTS;
8。重建回滚段表空间,记得创建后要把回滚段都online。
9。重新使数据库对所有用户可用。
ALTER SYSTEM DISABLE RESTRICTED SESSION;
10。然后正常关闭数据库,修改init文件,如果开始只是注释掉了ROLLBACK_SEGMENTS的,就去掉注释即可,如果加了隐含参数的,注释掉它,并在ROLLBACK_SEGMENTS加入所有的回滚段。
11。正常启动数据库。
startup

展开全文