RMAN利用auxiliary复制数据库(转)

转自(https://blog.csdn.net/knuuy/article/details/46987471)

只需要利用rman智能管理复制,无需手工操作。关键字是auxiliary,在rman中使用到,其实不是什么技术名称。操作过程整理及错误收集如下。

1 在主库上备份数据库
RMAN> backup database plus archivelog;


2 把备份片scp到目标库,路径同原库一样
    scp /home/oracle/rmanbk/VICDB_1711386261_15_1_20141023.bkp 10.1.1.2:/home/oracle/rmanbk/   --包含数据文件的bkp
     
    scp /home/oracle/rmanbk/VICDB_1711386261_16_1_20141023.bkp 10.1.1.2:/home/oracle/rmanbk/    --包含控制文件的bkp
     
    scp /home/oracle/rmanbk/VICDB_1711386261_20_1_20141023.bkp 10.1.1.2:/home/oracle/rmanbk/    --包含了归档


3、编辑参数文件,使得数据库启动到nomount状态,sid与主库一致
    vi initvicdb.ora
    db_name='vicdb'
   
    SQL> startup nomount pfile='oradata/vicl/initvicl.ora'

4、在目标数据库上创建密码文件(用于远程连接)

orapwd file=orapwvicdb password=oracle  

5、配置网络
5.1 在原库和目标库上配置listener

在原库和目标库上配置listener,需要使用静态注册(原因是目标库上的数据库库只能启动到nomount状态,如果使用动态注册,那么listener的状态为blocked状态,block状态表示只能在本机进行连接是收到限制的连接)

    LISTENER=
      (DESCRIPTION=
        (ADDRESS_LIST=
          (ADDRESS=(PROTOCOL=tcp)(HOST=10.1.1.2)(PORT=1521))
          ))
    SID_LIST_LISTENER=
      (SID_LIST=
        (SID_DESC=
          (GLOBAL_DBNAME=vicdb)
          (ORACLE_HOME=/oracle/app/db)
          (SID_NAME=vicdb))
          )


5.2 配置tnsnames

配置tns(rman可以在任何机器上发起连接,但是需要有tns,如目前准备在10.1.1.11上使用rman发起连接,那么就需要在10.1.1.11上配置去目标库和原库的tns)

    to_2 =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.2)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = vicdb)
        )
      )
     
    to_11 =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.1.11)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = vicdb)
        )
      )


测试连接

    rman target sys/oracle@to_2
    connected to target database: VICDB (not mounted)
     
     
     
    rman target sys/oracle@to_11
    connected to target database: VICDB (DBID=1711386261


6、开始做数据库复制

    rman target sys/oracle@to_11 auxiliary sys/oracle@to_2     --此处的target database为10.1.1.11,auxiliary为10.1.1.2,表示要把10.1.1.11复制到10.1.1.2上)
     
    RMAN> duplicate target database to orcl nofilenamecheck;


常见问题

    现象:
    RMAN-04006: error from auxiliary database: ORA-01034: ORACLE not available
    ORA-27101: shared memory realm does not exist
    Linux Error: 2: No such file or directory
     
     
    原因:目标数据库没有启动到nomount状态
     
    解决:启动目标数据库到nomount状态


    现象:
    RMAN-03002: failure of Duplicate Db command at 10/23/2014 23:08:42
    RMAN-05520: database name mismatch, auxiliary instance has VCDB, command specified VICDB
     
    原因:目标库参数文件中的db_name和原库的db_name不一致导致
     
    解决:在目标库上修改参数文件的db_name


    现象:
    RMAN-06053: unable to perform media recovery because of missing log
    RMAN-06025: no backup of archived log for thread 1 with sequence 39 and starting SCN of 2144142 found to restore
    RMAN-06025: no backup of archived log for thread 1 with sequence 38 and starting SCN of 2144139 found to restore
    RMAN-06025: no backup of archived log for thread 1 with sequence 37 and starting SCN of 2142826 found to restore
     
     
    原因:数据库需要恢复到原库当前log的first_change# 处,目前只有sequence#为36的归档被cp到了目标库,缺少37 38 39,故报错
    解决:
    方法一:
    在sqlplus中执行不完全恢复
    recover database using backup controlfile until cancel
     
    cancel;
    方法2   将需要的归档cp到对应目录
    原库上执行
    [oracle@vicdb arc]$ scp * 10.1.1.2:/home/oracle/arc/
     
     
    目标库上执行:
    alter system set log_archive_dest_1='location=/home/oracle/arc/' ;  (原因:由于log_archive_dest_1没设置,恢复的时候回去/oracle/app/db/dbs/中寻找归档文件,肯定是找不到的,故我们可以把归档路径设置为和原库一样,这样就可以找到了)
     
    SQL> recover database using backup controlfile ;
    ORA-00279: change 2142775 generated at 10/23/2014 22:46:17 needed for thread 1
    ORA-00289: suggestion : /home/oracle/arc/1_36_861363552.dbf
    ORA-00280: change 2142775 for thread 1 is in sequence #36
     
     
    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    auto
    SQL> recover database using backup controlfile until cancel
————————————————
版权声明:本文为CSDN博主「Knuuy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/knuuy/java/article/details/46987471

posted @ 2020-06-22 12:48  码头搬运工  阅读(843)  评论(0)    收藏  举报