步骤
修改trc文件(或者编写)你的create control file 的脚本(或sql语句)
类似下面的例如保存到aaasql
CREATE CONTROLFILE REUSE DATABASE SCP NORESETLOGS ARCHIVELOGARCHIVELOG
MAXLOGFILES
MAXLOGMEMBERS
MAXDATAFILES
MAXINSTANCES
MAXLOGHISTORY
LOGFILE
GROUP /home/oracle/recovery/redodbf SIZE K
GROUP /home/oracle/recovery/redodbf SIZE K
GROUP /home/oracle/recovery/redodbf SIZE K
GROUP /home/oracle/recovery/redodbf SIZE K
GROUP /home/oracle/recovery/redodbf SIZE K
GROUP /home/oracle/recovery/redodbf SIZE K
DATAFILE
/home/oracle/recovery/SYSTEM_drd
/home/oracle/recovery/TOOLS_drd
/home/oracle/recovery/RBS_drd
/home/oracle/recovery/TEMP_drd
/home/oracle/recovery/USERS_drd
/home/oracle/recovery/INDX_drd
CHARACTER SET USASCII
;
用你的有效备份覆盖现在的错误数据文件
重建控制文件就是前面的帖子的步骤
sqlplus internal或者sqlplus /nolog ; conn / as sysdba
startup nomount
@aaasql
用控制文件恢复数据库
shutdown
startup mount
recover using backup controlfile until cancel;
直到所有的archive log file都用完了alter database open resetlogs;
resetlogs open db
注意!如果你的archive 和init中定义的不一致系统会提示你输入 Specify log: {=suggested | filename | AUTO | CANCEL}你可以输入auto也可以指定你的archive log files的路径和名称或者你也可以用类似下面的命令
recover automatic from /home/oracle/recovery/arch using backup controlfile until cancel;
()丢失所有数据文件控制文件redo日志文件 (续)
成功恢复过程
拷贝旧冷备数据文件
rcp r 冷备 数据目录
mount数据库
Oracle_home>bin/svrmgrl
SVRMGR> connect internal
SVRMGR> startup mount
用using backup controlfile进行恢复
SVRMGR> recover database until cancel using backup controlfile;
出现输入提示时输入AUTO
用Open Resetlog 打开数据库
SVRMGR> alter database open RESETLOGS;
恢复结束看一下目前日志状态
SVRMGR> archive log list;
应出现
Oldest online log sequence
Next log sequence to archive
Current log sequence
其恢复过程如下
丢失所有数据文件控制文件redo日志文件
成功恢复过程
拷贝旧冷备数据文件
rcp r 冷备 数据目录
mount数据库
Oracle_home>bin/svrmgrl
SVRMGR> connect internal
SVRMGR> startup mount
用using backup controlfile进行恢复
SVRMGR> recover database until cancel using backup controlfile;
出现输入提示时输入AUTO
用Open Resetlog 打开数据库
SVRMGR> alter database open RESETLOGS;
恢复结束看一下目前日志状态
SVRMGR> archive log list;
应出现
Oldest online log sequence
Next log sequence to archive
Current log sequence