您现在的位置是:首页 >技术交流 >RAC 到单实例恢复rman网站首页技术交流
RAC 到单实例恢复rman
1.备份源库并copy到目标环境中
2.恢复控制文件。
将数据库启动至nomount状态
restore controlfile from '控制文件备份集';
3. 注册备份集
RMAN下:catalog start with '备份集所在目录';
4. 还原数据库
获取datafile
select 'set newname for datafile ' || file# || ' to '||chr(39)||replace(name,'+DATAC1/fjprd/datafile/','/fjdev/')||chr(39)||';' from v$datafile;
恢复脚本(这种情况适合文件分布在不通目录下)
ORACLE_SID=FJPRD
export ORACLE_SID
$ORACLE_HOME/bin/rman target / log=/export/home/orafjdev/rman_fjprd_20190122.log <<EOF
run {
set newname for datafile 1 to '/data2/fjdev/fjdevdata/system.1088.890937449';
restore database;
switch datafile all;
recover database;
}
EOF
如果数据文件都在一个目录使用
set newname for database to '/home/oradata/hbdb/%b'; 即可
注意这个switch datafile all; 很重要
5. 最后在alter database open resetlogs的时候碰到了错误:
由于rac环境的redolog在asm中,需要重建controlfile重定向redolog文件路径.
SQL> alter database backup controlfile to trace as '/home/orafjdev/kkk.sql';
SQL> shutdown immediate
修改一下控制文件中日志文件路径, 接着重建控制文件
去除thread2# 的log,保留几个就行,不用全部。
6、使用 recover database using backup controlfile until cancel; 恢复
按照提示恢复归档:
restore archivelog sequence between 61148 and 61155 thread 1;
restore archivelog sequence between 65008 and 65012 thread 2;
重新 recover database using backup controlfile until cancel;
7. 完成之后执行alter database open resetlogs;
提示:ORA-38856: Cannot mark instance UNNAMED_INSTANCE_2 (redo thread 2) as enabled
此为bug,pfile添加:_ no_recovery_through_resetlogs=TRUE
重新resetlogs。恢复完成后,注释no_recovery_through_resetlogs=TRUE
8、select THREAD#, STATUS, ENABLED from v$thread;
处理删除没用的thread#
alter database disable thread 2;
9、添加tempfile
select tablespace_name from dba_tablespaces where contents='TEMPORARY';
ALTER TABLESPACE TEMP01 ADD TEMPFILE '/data6/fjdev/fjdevdata/temp01.764.890940701' size 4000M autoextend off;
10、处理undo
show parameter undo
select tablespace_name from dba_tablespaces where contents='UNDO';
rop tablespace APPS_UNDOTBS2 including contents and datafiles;
11、重启数据库正常。