您现在的位置是:首页 >技术交流 >RAC 到单实例恢复rman网站首页技术交流

RAC 到单实例恢复rman

2301_76957510 2023-06-13 08:00:04
简介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、重启数据库正常。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。