RMAN利用auxiliary复制数据库

来源:互联网 发布:java开发新技术 编辑:程序博客网 时间:2024/05/16 07:21
 RMAN利用auxiliary复制数据库


目录(?)[+]
这个是经理给的一份复制备份计划,只需要利用rman智能管理复制,无需手工操作。关键字是auxiliary,在rman中使用到,其实不是什么技术名称。操作过程整理及错误收集如下。


1 在主库上备份数据库
[html] view plain copy
RMAN> backup database plus archivelog;  




2 把备份片scp到目标库,路径同原库一样
[html] view plain copy
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与主库一致
[html] view plain copy
vi initvicdb.ora  
db_name='vicdb'  
  
  
SQL> startup nomount pfile='oradata/vicl/initvicl.ora'  




4、在目标数据库上创建密码文件(用于远程连接)
[html] view plain copy
orapwd file=orapwvicdb password=oracle    
5、配置网络
5.1 在原库和目标库上配置listener
在原库和目标库上配置listener,需要使用静态注册(原因是目标库上的数据库库只能启动到nomount状态,如果使用动态注册,那么listener的状态为blocked状态,block状态表示只能在本机进行连接是收到限制的连接)
[html] view plain copy
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)


[html] view plain copy
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)  
    )  
  )  


测试连接
[html] view plain copy
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、开始做数据库复制
[html] view plain copy
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;  






最后测试下面方式恢复成功!
先在standy端设置tns
CRM2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.117)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = crm)
    )
  )




CRM =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.116)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = crm)
    )
  )
[oracle@siedb2 admin]$ rman target sys/oracle@crm auxiliary sys/oracle@crm2


Recovery Manager: Release 11.2.0.1.0 - Production on Tue Aug 8 08:11:02 2017


Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.


connected to target database: CRM (DBID=3759797127)
connected to auxiliary database: CRM (not mounted)


RMAN> duplicate target database to crm nofilenamecheck;


Starting Duplicate Db at 08-AUG-17
using target database control file instead of recovery catalog
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=18 device type=DISK


contents of Memory Script:
{
   sql clone "alter system set  db_name = 
 ''CRM'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   sql clone "alter system set  db_unique_name = 
 ''CRM'' comment=
 ''Modified by RMAN duplicate'' scope=spfile";
   shutdown clone immediate;
   startup clone force nomount
   restore clone primary controlfile;
   alter clone database mount;
}
executing Memory Script


sql statement: alter system set  db_name =  ''CRM'' comment= ''Modified by RMAN duplicate'' scope=spfile


sql statement: alter system set  db_unique_name =  ''CRM'' comment= ''Modified by RMAN duplicate'' scope=spfile


Oracle instance shut down


Oracle instance started


Total System Global Area     619360256 bytes


Fixed Size                     1338280 bytes
Variable Size                180356184 bytes
Database Buffers             432013312 bytes
Redo Buffers                   5652480 bytes


Starting restore at 08-AUG-17
allocated channel: ORA_AUX_DISK_1
channel ORA_AUX_DISK_1: SID=19 device type=DISK


channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: restoring control file
channel ORA_AUX_DISK_1: reading from backup piece /data/arch/flashcovery/CRM/backupset/2017_08_08/o1_mf_ncnnf_TAG20170808T142155_drn0b50m_.bkp
channel ORA_AUX_DISK_1: piece handle=/data/arch/flashcovery/CRM/backupset/2017_08_08/o1_mf_ncnnf_TAG20170808T142155_drn0b50m_.bkp tag=TAG20170808T142155
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:00:04
output file name=/opt/oracle/oradata/crm/control01.ctl
output file name=/data/arch/flashcovery/crm/control02.ctl
Finished restore at 08-AUG-17


database mounted


contents of Memory Script:
{
   set until scn  904598;
   set newname for datafile  1 to 
 "/opt/oracle/oradata/crm/system01.dbf";
   set newname for datafile  2 to 
 "/opt/oracle/oradata/crm/sysaux01.dbf";
   set newname for datafile  3 to 
 "/opt/oracle/oradata/crm/undotbs01.dbf";
   set newname for datafile  4 to 
 "/opt/oracle/oradata/crm/users01.dbf";
   restore
   clone database
   ;
}
executing Memory Script


executing command: SET until clause


executing command: SET NEWNAME


executing command: SET NEWNAME


executing command: SET NEWNAME


executing command: SET NEWNAME


Starting restore at 08-AUG-17
using channel ORA_AUX_DISK_1


channel ORA_AUX_DISK_1: starting datafile backup set restore
channel ORA_AUX_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_AUX_DISK_1: restoring datafile 00001 to /opt/oracle/oradata/crm/system01.dbf
channel ORA_AUX_DISK_1: restoring datafile 00002 to /opt/oracle/oradata/crm/sysaux01.dbf
channel ORA_AUX_DISK_1: restoring datafile 00003 to /opt/oracle/oradata/crm/undotbs01.dbf
channel ORA_AUX_DISK_1: restoring datafile 00004 to /opt/oracle/oradata/crm/users01.dbf
channel ORA_AUX_DISK_1: reading from backup piece /data/arch/flashcovery/CRM/backupset/2017_08_08/o1_mf_nnndf_TAG20170808T141949_drn065rr_.bkp
channel ORA_AUX_DISK_1: piece handle=/data/arch/flashcovery/CRM/backupset/2017_08_08/o1_mf_nnndf_TAG20170808T141949_drn065rr_.bkp tag=TAG20170808T141949
channel ORA_AUX_DISK_1: restored backup piece 1
channel ORA_AUX_DISK_1: restore complete, elapsed time: 00:01:35
Finished restore at 08-AUG-17


contents of Memory Script:
{
   switch clone datafile all;
}
executing Memory Script


datafile 1 switched to datafile copy
input datafile copy RECID=1 STAMP=951466497 file name=/opt/oracle/oradata/crm/system01.dbf
datafile 2 switched to datafile copy
input datafile copy RECID=2 STAMP=951466497 file name=/opt/oracle/oradata/crm/sysaux01.dbf
datafile 3 switched to datafile copy
input datafile copy RECID=3 STAMP=951466497 file name=/opt/oracle/oradata/crm/undotbs01.dbf
datafile 4 switched to datafile copy
input datafile copy RECID=4 STAMP=951466497 file name=/opt/oracle/oradata/crm/users01.dbf


contents of Memory Script:
{
   set until scn  904598;
   recover
   clone database
    delete archivelog
   ;
}
executing Memory Script


executing command: SET until clause


Starting recover at 08-AUG-17
using channel ORA_AUX_DISK_1


starting media recovery


archived log for thread 1 with sequence 11 is already on disk as file /data/arch/flashcovery/CRM/archivelog/2017_08_08/o1_mf_1_11_drn09p5x_.arc
Oracle Error: 
ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below
ORA-01194: file 2 needs more recovery to be consistent
ORA-01110: data file 2: '/opt/oracle/oradata/crm/sysaux01.dbf'


RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of Duplicate Db command at 08/08/2017 08:15:00
RMAN-03015: error occurred in stored script Memory Script
RMAN-06053: unable to perform media recovery because of missing log
RMAN-06025: no backup of archived log for thread 1 with sequence 13 and starting SCN of 856791 found to restore
RMAN-06025: no backup of archived log for thread 1 with sequence 12 and starting SCN of 841675 found to restore


RMAN>