使用RMAN迁移数据库到异机

  迁移数据库的方法有多种,较为常用的则是使用RMAN来迁移。使用RMAN迁移数据库属于数据库的物理备份与恢复范畴,整个过程中数据库的相关信息是完整地镜像。因此,基于此种方式还原恢复的数据库用于测试会使得与真实的生产环境差异相对较小。本文描述了使用RMAN来还原Oracle 10g数据库的过程。

 

一、主要步骤
     1、备份数据库
     2、ftp备份到目的服务器
     3、为目标数据库创建项目目录
     4、为目标数据库创建pfile或spfile(使用RMAN还原或复制原pfile到目的服务器)
     5、还原控制文件
     6、还原数据文件
     7、OPEN 数据库
  
  其实,这几个步骤比较好理解,整个实质是对数据库体系结构以及数据库整个启动过程的理解。
  关于体系结构和启动过程可以参考
       Oracle实例和Oracle数据库(Oracle体系结构) 
       Oracle 数据库实例启动关闭过程

  下面对此进行一下描述
       a、首先需要为实例的运行环境创建相应的目录,如dump位置,datafile位置,以及archive位置等等
             如果是恢复到不同的路径,则后续RMAN时需要使用set newname for datafile 方式更新到控制文件
       b、实例需要pfile来启动,因此需要恢复pfile或spfile,然后将数据库切换到nomount状态
       c、接下来的一步是通过控制文件将数据库切换到mount状态,因此需要恢复控制文件,然后再mount
       d、mount之后就可以对数据库进行还原(restore)操作
       e、还原完毕之后是对数据库进行恢复(recovery)操作(restore和recover需要基于控制文件的备份信息或恢复目录)
       f、最后是open数据库


二、迁移演示

[python]  view plain copy print ?
  1. 1、备份原数据库  
  2.   此处演示的源数据库与目标数据库使用相同的版本为Oracle 10g R2(10.2.0.3),操作系统都为suse 10 +Sp3  
  3.   备份过程略,有关备份脚本,请参考:linux 下RMAN备份shell脚本 http://blog.csdn.net/robinson_0612/article/details/8029245  
  4.   
  5. 2、ftp所有的备份文件到需要恢复的服务器上  
  6.   打包整个备份集ftp到目标服务器或scp到目标服务器  
  7.   下面是ftp到目标服务器解压后包含的文件  
  8.   oracle@2go-devDB01uv:/u02/database/SY5221_RMAN/20121013> ls -hltr  
  9.   total 9.4G  
  10.   -rw-r--r-- 1 oracle oinstall 3.0K 2012-10-16 09:48 initSY5221.ora  
  11.   -rw-r--r-- 1 oracle oinstall 2.7G 2012-10-16 10:02 SY5221_lev0_201210130630_4unnkjvi_1_1  
  12.   -rw-r--r-- 1 oracle oinstall 3.1G 2012-10-16 10:04 SY5221_lev0_201210130630_4vnnkjvi_1_1  
  13.   -rw-r--r-- 1 oracle oinstall 938M 2012-10-16 10:07 SY5221_lev0_201210130630_arc_51nnkk2h_1_1  
  14.   -rw-r--r-- 1 oracle oinstall 935M 2012-10-16 10:08 SY5221_lev0_201210130630_arc_52nnkk2h_1_1  
  15.   -rw-r--r-- 1 oracle oinstall 930M 2012-10-16 10:10 SY5221_lev0_201210130630_arc_53nnkk31_1_1  
  16.   -rw-r--r-- 1 oracle oinstall  15M 2012-10-16 10:10 SY5221_lev0_cntl_bak_c-1468911009-20121013-00  
  17.   -rw-r--r-- 1 oracle oinstall  15M 2012-10-16 10:10 SY5221_lev0_cntl_bak_c-1468911009-20121013-01  
  18.   -rw-r--r-- 1 oracle oinstall 910M 2012-10-16 10:11 SY5221_lev0_201210130630_arc_54nnkk32_1_1  
  19.   
  20. 3、创建所需的目录(使用oracle用户)  
  21.   oracle@2go-devDB01uv:~> more mkdir_sy5221.sh  
  22.   mkdir -p /u02/database/SY5221/flash_recovery_area  
  23.   mkdir -p /u02/database/SY5221  
  24.   mkdir -p /u02/database/SY5221/archive  
  25.   mkdir -p /u02/database/SY5221/backup  
  26.   mkdir -p /u02/database/SY5221/bdump  
  27.   mkdir -p /u02/database/SY5221/cdump  
  28.   mkdir -p /u02/database/SY5221/udump  
  29.   mkdir -p /u02/database/SY5221/controlf  
  30.   mkdir -p /u02/database/SY5221/oradata  
  31.   mkdir -p /u02/database/SY5221/redolog  
  32.   mkdir -p /u02/database/SY5221/undo  
  33.   mkdir -p /u02/database/SY5221/temp  
  34.   mkdir -p /u02/database/SY5221/ref_data  
  35.   mkdir -p /u02/database/SY5221/BNR  
  36.   mkdir -p /u02/database/SY5221/BNR/full  
  37.   mkdir -p /u02/database/SY5221/BNR/dump  
  38.   mkdir -p /u02/database/SY5221/dbcreatelogs  
  39.     
  40.   ORACLE_SID=SY5221; export ORACLE_SID  
  41.   oracle@2go-devDB01uv:~> chmod u+x mkdir_sy5221.sh  
  42.   oracle@2go-devDB01uv:~> ./mkdir_sy5221.sh  
  43.   
  44. 4、创建密码文件  
  45.   oracle@2go-devDB01uv:~> cd $ORACLE_HOME/dbs  
  46.   oracle@2go-devDB01uv:~/OraHome10g/dbs> orapwd file=orapwSY5221 password=oracle force=y entries=10  
  47.   # Author : Robinson   
  48.   # Blog : http://blog.csdn.net/robinson_0612  
  49.   
  50. 3、使用pfile启动实例到nomount状态  
  51.   oracle@2go-devDB01uv:~> cp /u02/database/SY5221_RMAN/20121013/initSY5221.ora $ORACLE_HOME/dbs  
  52.   oracle@2go-devDB01uv:~> export ORACLE_SID=SY5221  
  53.   oracle@2go-devDB01uv:~> sqlplus / as sysdba  
  54.   SQL> startup nomount;  
  55.   
  56. 4、恢复控制文件并切换到mount状态  
  57.   #再开一个session  
  58.   oracle@2go-devDB01uv:~> export ORACLE_SID=SY5221  
  59.   oracle@2go-devDB01uv:~> $ORACLE_HOME/bin/rman target /  
  60.   RMAN> restore controlfile from '/u02/database/SY5221_RMAN/20121013/SY5221_lev0_cntl.bak_c-1468911009-20121013-01';  
  61.   RMAN> alter database mount;  
  62.   
  63. 5、指定备份文件所在目录   
  64.   RMAN> catalog start with '/u02/database/SY5221_RMAN/20121013'#此命令用于扫描整个目录的备份片或者归档日志文件等  
  65.   
  66. 6、还原数据库  
  67.   RMAN> restore database;  
  68.   
  69. 7、恢复数据库  
  70.   RMAN> recover database;  
  71.   
  72.   unable to find archive log  
  73.   archive log thread=1 sequence=143388  
  74.   RMAN-00571: ===========================================================  
  75.   RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============  
  76.   RMAN-00571: ===========================================================  
  77.   RMAN-03002: failure of recover command at 10/16/2012 11:32:54  
  78.   RMAN-06054: media recovery requesting unknown log: thread 1 seq 143388 lowscn 608805162  
  79.   #由于未复制联机日志文件,此时提示需要seqence 143388,scn 608805162   
  80.   
  81.    #在sqlplus提示符下继续介质恢复  
  82.   SQL> conn / as sysdba  
  83.   Connected.  
  84.   idle> recover database until cancel;  
  85.   ORA-00283: recovery session canceled due to errors  
  86.   ORA-01610: recovery using the BACKUP CONTROLFILE option must be done  
  87.     
  88.   SQL> recover database using backup controlfile until cancel;  
  89.   ORA-00279: change 608805162 generated at 10/13/2012 06:31:44 needed for thread 1  
  90.   ORA-00289: suggestion : /u02/database/SY5221/archive/arch_668881377_1_143388.arc  
  91.   ORA-00280: change 608805162 for thread 1 is in sequence #143388  
  92.     
  93.   Specify log: {<RET>=suggested | filename | AUTO | CANCEL}  
  94.   cancel      #输入cancel,完成介质恢复  
  95.   Media recovery cancelled.  
  96.   
  97. 8、open 数据库  
  98.   #如果open 不成功,请尝试shutdown 之后再次open,如果仍然不成功使用隐藏参数_allow_resetlogs_corruption打开数据库  
  99.   SQL> alter database open resetlogs;  
  100.     
  101.   Database altered.  
  102.   
  103. 9、一致性关闭数据库并重启数据库  
  104.   SQL> shutdown immediate;  
  105.     
  106.   SQL> startup  


来源:http://blog.csdn.net/robinson_0612/article/details/8076841


三、更多参考

有关Oracle 网络配置相关基础以及概念性的问题请参考:
        配置ORACLE 客户端连接到数据库 
        配置非默认端口的动态服务注册 
        配置sqlnet.ora限制IP访问Oracle 
       Oracle 监听器日志配置与管理 
       设置 Oracle 监听器密码(LISTENER)
       Oracle RAC 监听配置
       ORACLE RAC 下非缺省端口监听配置(listener.ora tnsnames.ora)

       Oracle RAC 客户端连接负载均衡(Load Balance)

       配置RAC负载均衡与故障转移

   

有关基于用户管理的备份和备份恢复的概念请参

    Oracle 冷备份

    Oracle 热备份

    Oracle 备份恢复概念

    Oracle 实例恢复

    Oracle 基于用户管理恢复的处理

   SYSTEM 表空间管理及备份恢复

    SYSAUX表空间管理及恢复

   Oracle 基于备份控制文件的恢复(unsing backup controlfile)

 

有关RMAN的备份恢复与管理请参

    RMAN 概述及其体系结构

    RMAN 配置、监控与管理

    RMAN 备份详解

    RMAN 还原与恢复

    RMAN catalog 的创建和使用

    基于catalog 创建RMAN存储脚本

    基于catalog 的RMAN 备份与恢复

    RMAN 备份路径困惑

 

有关ORACLE体系结构请参

    Oracle 表空间与数据文件

    Oracle 密码文件

    Oracle 参数文件

    Oracle 联机重做日志文件(ONLINE LOG FILE)

    Oracle 控制文件(CONTROLFILE)

    Oracle 归档日志

    Oracle 回滚(ROLLBACK)和撤销(UNDO)

    Oracle 数据库实例启动关闭过程

    Oracle 10g SGA 的自动化管理

    Oracle 实例和Oracle数据库(Oracle体系结构)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值