zoukankan      html  css  js  c++  java
  • oracle数据库rman异地恢复

    自己想做两组rac之间的data guard,由于datafile,controlfile,甚至是archivelog都是存放在asm上的,直接复制数据有点不现实,asm磁盘总归都是要用的,所以想从a库做rman全备份,然后把备份文件拷贝到b库上做rman恢复,初衷就是这么简单,结果却遇到了n多的折腾,无法实现,下面是我自己经过无数次测试得到的方法。

    oracle版本:11.2.0.0

    第一组RAC A PS:前面的hostname,冒号后面是instancename
    rac1:orcl1
    rac2:orcl2
    rac3:orcl3

    第二组RAC B
    rac8:orcl1
    rac9:orcl2

    我已经创建好了两组rac,并且在上面分别创建了orcl数据库,我在A组rac的数据库里做了一些操作,我希望这些新建的表数据什么的在RAC B上也同样出现,我现在要做的就是在rac1上使用rman做数据库全备份然后把备份文件拷贝到rac8上,然后做rman恢复,使得rac8是rac1上oracle数据库的一个拷贝

    1、rac1做rman全备份

    登录到rac1上,使用rman全备份数据库,如下:
    [oracle@rac1 ~]$ rman target /
    RMAN> backup database format ‘/u01/app/oracle/backup/orcl01.dbf’;
    备份成功了会告诉我:
    数据文件备份文件为/u01/app/oracle/backup/orcl01.dbf’
    controlfile,spfile备份文件为/u01/app/oracle/backup/c-1351646173-20130822-00
    注意:我这边加了format参数备份成我指定的文件路径和名称,原因就是在异地恢复的时候,rman读取备份文件的目录和需要和备份时的目录一致,如果这边不使用format,备份到默认的asm磁盘上,则备份文件想要复制到异地的asm磁盘上有一定的难度,比如我遇到的问题就是默认备份到asm上的文件名称参数很长无法复制到异地的asm磁盘上

    2、从rac1上拷贝备份文件到rac8

    需要拷贝的文件如上:
    数据文件备份文件为/u01/app/oracle/backup/orcl01.dbf’
    controlfile,spfile备份文件为/u01/app/oracle/backup/c-1351646173-20130822-00
    拷贝到rac8上之后仍然放在相同的路径下,设置具有相同的权限,一般是oracle:oinstall权限

    3、rac8上做rman恢复

    我们这边只需要恢复controlfile和datafile。

    按理来说备份恢复应该使用一样的spfile,但是我们看到A组(www.111cn.net)rac是3个节点,B组rac是2个节点,我这里还要说的是这两组rac server的配置是有差异的,spfile中定义了节点的信息,还定义了相关的初始化信息,A组RAC的这些信息在B组上并不适用的,所以我这里只恢复controlfile和datafile。

    网上看到说异地rman恢复需要设置异地的dbid为本地的值,折腾了好久,发现这个是不需要的,dbid已经定义在controlfile当中,只要恢复了controlfile,dbid自然是相同的了。

    恢复controlfile需要数据库置于nomount状态
    [oracle@rac8 ~]$ uniread sqlplus ‘/ as sysdba’
    SQL> shutdown immediate;
    SQL> shutdown nomount;
    [oracle@rac8 ~]$ uniread rman target /
    RMAN> restore controlfile from ‘/u01/app/oracle/backup/c-1351646173-20130822-00′;
    完了会告诉你恢复成功

    恢复数据文件需要数据库置于mount状态
    [oracle@rac8 ~]$ uniread sqlplus ‘/ as sysdba’
    SQL> shutdown immediate;
    SQL> shutdown mount;
    注意:启动到mount的状态可能需要加参数resetlogs
    [oracle@rac8 ~]$ uniread rman target /
    RMAN> list backup of database;
    可以看到备份文件信息
    RMAN> restore database;
    RMAN> recover database;
    这样就恢复结束了

    4、rac8上启动oracle到open状态

    单独讲这个是有意义的,恢复之后,因为rac8上的数据字典等信息已经改变,所有他会报错ORA-39700: database must be opened with UPGRADE option
    那我们就需要启动到升级模式了
    SQL> startup UPGRADE;
    报错:ORA-39701: database must be mounted EXCLUSIVE for UPGRADE or DOWNGRADE
    这个报错的解决方法是要禁掉集群参数
    SQL> STARTUP NOMOUNT;
    SQL> ALTER SYSTEM SET CLUSTER_DATABASE=FALSE scope=spfile ;
    SQL> SHUTDOWN IMMEDIATE;
    SQL> startup UPGRADE;
    这样就启动成功了,再有就是记得把集群参数开启。
    from:http://www.111cn.net/database/Oracle/50477.htm

  • 相关阅读:
    drawcall优化
    Java基础:动态代理在RPC框架中应用
    ACdream ACfun
    图片压缩之处理小图片压缩策略
    ASP内置对象—Request、Response 、Server、Application 、ObjectContent(一)
    alter
    UltraISO制作U盘启动盘安装Win7/8/10系统攻略
    Libcurl的初步实现tfp上传下载功能
    微信企业号开发:获取AccessToken
    Ubuntu 安装OpenGL
  • 原文地址:https://www.cnblogs.com/alibai/p/4055223.html
Copyright © 2011-2022 走看看