---------------------------------------------------
各种故障恢复案例
--------------------------------------------------
1、 SPFILE 丢失
startup nomount;set dbid 3988862108;
restore spfile from autobackup;
或者通过某个文件
restore spfile from 'path/file_name'';
shutdown immediate;
set dbid 3988862108;
startup;
2、controlfile 全部丢失
控制文件做了 3个冗余,很少会发生全部丢失的情况,当遇到控制文件所有都丢失,恢复需要以下步骤 :
RMAN>set dbid 3988862108;
RMAN>startup nomount;
RMAN>restore controlfile from autobackup;
或从文件恢复
RMAN>restore controlfile from ‘file_name ';
RMAN>alter database mount;
RMAN>recover database;(保证数据一致,因为控制文件里 scn scn发生改变)
RMAN>alter database open resetlogs;
resetlogs命令表示一个数据库逻辑生存期 的结束和另命令表示一个数据库逻辑生存期 的结束和另的开始,每次使用 resetlogs命令的时候,SCN不会被重置,不过 oracle 会重置 日志序列号,而且会重置联机做内容 日志序列号,而且会重置联机做内容 . 这样做是为了防止不完全恢复后日 志序列会发生冲突(因为现有日和数据文件间了时差)。
3、UNDO 损坏的情况
出现这种情况, 大多数是因为异常宕机,在启动的时候报错误。 DB 不能启动:
比如: ORA -00600: internal error code, arguments: [4194]
对于 Undo 损坏的情况,能用备份恢复最好如果不就只通过一些特的方发来恢复:
方法一 : 使用 system segment
(1)用 spfile 创建 pfile ,然后修改参数:
#*.undo_tablespace='UNDOTBS1'
#*.undo_management='AUTO'
#*. undo_tablespace
#*.undo_retention
undo_management='MANUAL'
rollback_segments='SYSTEM'
(2)用修改之后的 pfile,重启 DB
SQL> STARTUP MOUNT pfile= 'F:\initorcl.ora' ;
(3)删除原来的 表空间,创建新UNDO 表空间
SQL&g