System表空间在非归档模式下丢失怎么办?
思路 :
第一步:
全备数据库
第二步:
试着用备份还原,然后忽略一致性打开数据库。
如果不能,则把所有的还原,启动即可。
操作:
shutdown immediate
删除system表空间。
rm -rf ....
startup
此时启动数据库会报错,说system表空间丢失
将损坏之前全备的system表空间复制到system表空间的位置
SQL>ho cp /u02/orcl/system01.dbf /u01/oracle/oradata/orcl/
打开数据库:
SQL>alter database open ;
此时会报错,说 介质需要恢复。
解决办法:
SQL>recover database ;
注:如果丢失的切换日志次数比较多是恢复不了的。因为日志文件不足以来还原。
然后打开数据库:
SQL>alter database open ;
如果是 丢失的切换日志次数比较多。
SQL> recover database ;
这个命令是恢复不了的。
使用recover database ;
此时会提示输入 ,输入 cancel 来恢复到此为止。
这个时候可以加隐藏参数,不去检验一致性了。
alter system set "_allow_resetlogs_corruption"=true scope=spfile ;
SQL>startup force
这时候也会提示数据文件system不存在。
使用如下命令来恢复
SQL>recover database until cancel ;
SQL>alter database open resetlogs ;
--此时会说会话中断 , 重新连接一下就可以了。
最后取消隐藏参数:
alter system set "_allow_resetlogs_corruption"=false scope=spfile ;
alter system reset "_allow_resetlogs_corruption" scope=spfile sid='*' ;
这种方法会丢失部分数据。
思路 :
第一步:
全备数据库
第二步:
试着用备份还原,然后忽略一致性打开数据库。
如果不能,则把所有的还原,启动即可。
操作:
shutdown immediate
删除system表空间。
rm -rf ....
startup
此时启动数据库会报错,说system表空间丢失
将损坏之前全备的system表空间复制到system表空间的位置
SQL>ho cp /u02/orcl/system01.dbf /u01/oracle/oradata/orcl/
打开数据库:
SQL>alter database open ;
此时会报错,说 介质需要恢复。
解决办法:
SQL>recover database ;
注:如果丢失的切换日志次数比较多是恢复不了的。因为日志文件不足以来还原。
然后打开数据库:
SQL>alter database open ;
如果是 丢失的切换日志次数比较多。
SQL> recover database ;
这个命令是恢复不了的。
使用recover database ;
此时会提示输入 ,输入 cancel 来恢复到此为止。
这个时候可以加隐藏参数,不去检验一致性了。
alter system set "_allow_resetlogs_corruption"=true scope=spfile ;
SQL>startup force
这时候也会提示数据文件system不存在。
使用如下命令来恢复
SQL>recover database until cancel ;
SQL>alter database open resetlogs ;
--此时会说会话中断 , 重新连接一下就可以了。
最后取消隐藏参数:
alter system set "_allow_resetlogs_corruption"=false scope=spfile ;
alter system reset "_allow_resetlogs_corruption" scope=spfile sid='*' ;
这种方法会丢失部分数据。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29196873/viewspace-1120695/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29196873/viewspace-1120695/