RMAN> backup as compressed backupset incremental level 1 database format
'd:\rmanbak\incr_level0_%d_%T_%s_%p' tag 'incr_level_1';
# 需要在 mount 下重新备份最新的控制文件,以便最后保证最后恢复的数据文件头以及控制文件 SCN 保持一
致。
RMAN> backup current controlfile format 'd:\rmanbak\ctl_level0_%d_%T_%s_%p' tag
'ctl_bak_final';
2.4 Linux 端恢复
# 直接恢复最后一次增量
RMAN> catalog start with '/rman/windowsLinux/';
RMAN> recover database;
# datafile 应用完最后一次增量之后,重新恢复最新控制文件,保证数据文件与控制文件记录 SCN 保持一
致。
# 这步是保证数据库能一致性打开的关键,如果不回复 mount 后备份的控制文件则无法打开数据库。
RMAN> shutdown immediate;
RMAN> startup nomount;
RMAN> startup nomount;
RMAN> restore controlfile from '/rman/windowsLinux/CTL_FINAL.BAK';
RMAN> alter database mount;
# 由于新恢复的源端控制文件,清理控制文件中记录的原先备份片信息
RMAN> crosscheck backup;
RMAN> delete noprompt expired backup;
# 由于控制文件新恢复,所以原先 restore 的数据文件路径需要重新 catalog 注册到控制文件,然后
switch
RMAN> catalog start with '/oradata/orcl';
RMAN> switch database to copy;
# open read only,验证测试表
RMAN> alter database open read only;
SQL> desc test;
# 检查 redo log 位置,检查 tempfile 位置,如有需要,修正文件位置重建控制文件
alter database backup controlfile to trace as '/tmp/ctl.trc';
SQL> select member from v$logfile;
SQL> select name from v$tempfile;
# 修正 redo 举例,tempfile 可以直接添加新的 tempfile 然后 drop 旧的即可。
SQL> ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/temp01.dbf'
size 10G;
SQL> alter database rename file
'/u01/app/oracle/product/11.2.0/dbhome_1/oradata/db2/group_2.log' TO
'+DATA/db2/onlinelog/group_2.275.918765543';
# 验证无误,可以 open 打开数据库
SQL> alter database open resetlogs;
2.5 恢复后收尾工作
对 Linux 数据库进行全量备份。
@$ORACLE_HOME/rdbms/admin/utlrp.sql
生产系统上还要进行统计信息的收集
--开启计时
评论