oracle controlfile backup and recovery(二)

2014-11-24 12:27:29 · 作者: · 浏览: 1
47469.dbf
ORA-00280: change 122694280130 for thread 1 is in sequence #1
Specify log: {=suggested | filename | AUTO | CANCEL}
/database/oradata/skyread/redo01.log
Log applied.
Media recovery complete.
重置日志文件打开数据库
SQL> alter database open resetlogs;
Database altered.
2.控制文件损坏后利用trace文件重建控制文件(正常关机)
备份控制文件为文本格式
SQL> alter database backup controlfile to trace as '/home/oracle/controlfile.sql' reuse;
Database altered.
干净关闭数据库并破坏所有控制文件
SQL> shutdown immediate;
mv /database/oradata/skyread/control01.ctl /database/oradata/skyread/control01.ctl.bak
mv /database/oradata/skyread/control02.ctl /database/oradata/skyread/control02.ctl.bak
mv /database/oradata/skyread/control03.ctl /database/oradata/skyread/control03.ctl.bak
打开数据库出错
SQL> startup;
ORACLE instance started.
Total System Global Area 5049942016 bytes
Fixed Size 2090880 bytes
Variable Size 1375733888 bytes
Database Buffers 3657433088 bytes
Redo Buffers 14684160 bytes
ORA-00205: error in identifying control file, check alert log for more info
在nomount模式用/home/oracle/controlfile.sql中的语句重建控制文件,注意这里用的是NORESETLOGS,这里因为我们是干净关闭数据做的测试,相当于数据文件和日志文件都是没有损坏的,这里是基于数据文件头
和日志文件头的信息构建出控制文件,所以这个控制文件和数据文件头和日志文件头都是一致的,既然是一致的,那么都不需要recover,直接打开数据库即可。
注意:这里如果是用二进制备份控制文件进行恢复,还是需要recover的,因为你备份的二进制文件和当前的数据文件头信息一般是不一致的。
CREATE CONTROLFILE REUSE DATABASE "SKYREAD" NORESETLOGS FORCE LOGGING ARCHIVELOG
MAXLOGFILES 20
MAXLOGMEMBERS 5
MAXDATAFILES 1000
MAXINSTANCES 8
MAXLOGHISTORY 2337
LOGFILE
GROUP 1 '/database/oradata/skyread/redo01.log' SIZE 512M,
GROUP 2 '/database/oradata/skyread/redo02.log' SIZE 512M,
GROUP 3 '/database/oradata/skyread/redo03.log' SIZE 512M,
GROUP 4 '/database/oradata/skyread/redo04.log' SIZE 512M,
GROUP 5 '/database/oradata/skyread/redo05.log' SIZE 512M
DATAFILE
'/database/oradata/skyread/system01.dbf',
'/database/oradata/skyread/tbs_test.dbf',
'/database/oradata/skyread/sysaux01.dbf',
'/database/oradata/skyread/users01.dbf',
'/database2/oradata/skyread/TBS_MRPMUSIC01.dbf',
'/database/oradata/skyread/sf01.dbf',
'/database2/oradata/skyread/undotbs02'
CHARACTER SET UTF8;
SQL> alter database open;
Database altered