注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Oracle、MySQL资料及经验

.

 
 
 

日志

 
 

把RAC的rman备份恢复到单实例上  

2013-06-03 09:47:59|  分类: 备份恢复 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

RAC的rman备份恢复到单实例上
方法一  广泛采用的方式
1.把rman备份拷到异库对应路径下
如原库rman备份到了/home/oracle/rman,此时需要把rman备份拷到异库的/home/oracle/rman中。
如果原库跟异库不一致,rman恢复时会多做一些额外的处理。

2.建立异库的参数文件
使用异库的参数文件或从其他库复制一份参数文件并修改或自己写一个,也可以从rman备份中恢复spfile并修改。

3.恢复控制文件
rman target /
startup nomount;
restore controlfile from '/home/oracle/rman/ctf_orcl_09oattcj_20130530.ctl';
alter database mount;
如果此时直接restore,会把数据恢复到+DATA等ASM磁盘组,而单实例上并没有+DATA磁盘组,因此下面4、5步对恢复出来的控制文件做一些修改。

4.备份控制文件
sqlplus / as sysdba
alter database backup controlfile to trace as '/home/oracle/controllfile';
备份出来的控制文件为/home/oracle/controllfile

5.制作恢复脚本
打开备份出来的控制文件:vi /home/oracle/controllfile
参考其中的数据文件和临时文件(在controllfile文件中的最下方)信息,完成如下脚本,并执行。
rman target /
run {
set newname for datafile '+DATA/orcl/datafile/system.284.816695749' to '/u01/oracle/oradata/orcl/system.dbf';
set newname for datafile '+DATA/orcl/datafile/sysaux.273.816695749' to '/u01/oracle/oradata/orcl/sysaux.dbf';
set newname for datafile '+DATA/orcl/datafile/undotbs1.259.816695749' to '/u01/oracle/oradata/orcl/undotbs1.dbf';
set newname for datafile '+DATA/orcl/datafile/users.258.816695749' to '/u01/oracle/oradata/orcl/users.dbf';
set newname for datafile '+DATA/orcl/datafile/undotbs2.268.816695995' to '/u01/oracle/oradata/orcl/undotbs2.dbf';
set newname for datafile '+DATA/orcl/datafile/user1tbs.260.816700529' to '/u01/oracle/oradata/orcl/user1tbs1.dbf';
set newname for datafile '+DATA/orcl/datafile/user1tbs.274.816700535' to '/u01/oracle/oradata/orcl/user1tbs2.dbf';
set newname for datafile '+DATA/orcl/datafile/user1idxtbs.275.816700549' to '/u01/oracle/oradata/orcl/user1idxtbs1.dbf';
set newname for datafile '+DATA/orcl/datafile/user1idxtbs.276.816700555' to '/u01/oracle/oradata/orcl/user1idxtbs2.dbf';
set newname for datafile '+DATA/orcl/datafile/user2tbs.277.816700571' to '/u01/oracle/oradata/orcl/user2tbs1.dbf';
set newname for datafile '+DATA/orcl/datafile/user2tbs.278.816700577' to '/u01/oracle/oradata/orcl/user2tbs2.dbf';
set newname for datafile '+DATA/orcl/datafile/user2idxtbs.279.816700589' to '/u01/oracle/oradata/orcl/user2idxtbs1.dbf';
set newname for datafile '+DATA/orcl/datafile/user2idxtbs.280.816700593' to '/u01/oracle/oradata/orcl/user2idxtbs2.dbf';
set newname for tempfile '+DATA/orcl/tempfile/temp.269.816695923' to '/u01/oracle/oradata/orcl/temp.dbf';
set newname for tempfile '+DATA/orcl/tempfile/user1temp01.285.816700605' to '/u01/oracle/oradata/orcl/user1temp01.dbf';
set newname for tempfile '+DATA/orcl/tempfile/user1temp02.286.816700605' to '/u01/oracle/oradata/orcl/user1temp02.dbf';
set newname for tempfile '+DATA/orcl/tempfile/user1temp03.290.816700607' to '/u01/oracle/oradata/orcl/user1temp03.dbf';
restore database;
switch datafile all;
switch tempfile all;
recover database;
}

6.重建控制文件
此时启库会在/u01/oracle/fast_recovery_area/orcl/onlinelog建redo文件,我们希望把redo文件放到跟数据文件一样的路径,此时可通过重建控制文件来解决这个问题。
先关库:
sqlplus / as sysdba
shut immediate
打开备份的控制文件:vi /home/oracle/controllfile
复制出Set #2. RESETLOGS case中的如下部分并修改redo文件的路径,然后在sqlplus中执行。
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "orcl" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 192
    MAXLOGMEMBERS 3
    MAXDATAFILES 1024
    MAXINSTANCES 32
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/u01/oracle/oradata/orcl/redo1.log'  SIZE 1024M BLOCKSIZE 512,
  GROUP 2 '/u01/oracle/oradata/orcl/redo2.log'  SIZE 1024M BLOCKSIZE 512,
  GROUP 3 '/u01/oracle/oradata/orcl/redo3.log'  SIZE 1024M BLOCKSIZE 512,
  GROUP 4 '/u01/oracle/oradata/orcl/redo4.log'  SIZE 1024M BLOCKSIZE 512,
  GROUP 5 '/u01/oracle/oradata/orcl/redo5.log'  SIZE 1024M BLOCKSIZE 512
DATAFILE
  '/u01/oracle/oradata/orcl/system.dbf',
  '/u01/oracle/oradata/orcl/sysaux.dbf',
  '/u01/oracle/oradata/orcl/undotbs1.dbf',
  '/u01/oracle/oradata/orcl/users.dbf',
  '/u01/oracle/oradata/orcl/undotbs2.dbf',
  '/u01/oracle/oradata/orcl/user1tbs1.dbf',
  '/u01/oracle/oradata/orcl/user1tbs2.dbf',
  '/u01/oracle/oradata/orcl/user1idxtbs1.dbf',
  '/u01/oracle/oradata/orcl/user1idxtbs2.dbf',
  '/u01/oracle/oradata/orcl/user2tbs1.dbf',
  '/u01/oracle/oradata/orcl/user2tbs2.dbf',
  '/u01/oracle/oradata/orcl/user2idxtbs1.dbf',
  '/u01/oracle/oradata/orcl/user2idxtbs2.dbf'
CHARACTER SET UTF8
;

7.启库
sqlplus / as sysdba
alter database open resetlogs;
启库的过程中会重建redo文件,过程比较慢。

8.重建temp文件
库起来后,temp文件并没有创建,参考/home/oracle/controllfile中最后一部分,创建tempfile。
ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/oracle/oradata/orcl/temp.dbf' size 50m;
ALTER TABLESPACE user1TEMP01 ADD TEMPFILE '/u01/oracle/oradata/orcl/user1temp01.dbf' size 10m;
ALTER TABLESPACE user1TEMP02 ADD TEMPFILE '/u01/oracle/oradata/orcl/user1temp02.dbf' size 10m;
ALTER TABLESPACE user1TEMP03 ADD TEMPFILE '/u01/oracle/oradata/orcl/user1temp03.dbf' size 10m;

9.删除已关闭实例及其redo文件:
SQL> select thread#,status,enabled from v$thread;

   THREAD# STATUS ENABLED
---------- ------ --------
         1 OPEN   PUBLIC
         2 CLOSED PUBLIC

删除已关闭的实例:
alter database disable thread 2;

清除未使用实例的redo日志组,操作如下
select 'alter database drop logfile group '||group#||';' from v$log where thread#>1;

10.删除多余的undo表空间
select name from v$tablespace where name like 'UNDO%';
show parameter undo_tablespace
drop tablespace undotbs2 including contents and datafiles;

 

更多详细内容,可参考http://www.5ienet.com/note/html/rman_rac/oracle-rac-database-restore-to-single-instance.shtml

  评论这张
 
阅读(281)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018