Oracle RMAN Duplicate database from Netbackup Tape by LAN-FREE

来源:互联网 发布:java nestedinteger 编辑:程序博客网 时间:2024/05/16 09:28
通过磁带库备份集Duplicate数据库,源库通过FC-Tape(LAN-FREE)备份到Netbackup带库,在目标主机通过备份恢复数据库,并保证数据恢复到源库最新的归档日志。

源数据库:
Q1DIMSVR02-R + QDIM10 + Oracle 11.2.0.2
.0 + Windows 2008 R2
目标数据库:

Q1DIMSRV02 + NBUTEST + Oracle 11.2.0.2.0 + Windows 2008 R2


######################
Oracle 异机恢复测试准备
######################
1,调试好新NC DB作为Media Server能正常连接访问磁带库。
2,到NBU Server上修改/usr/openv/netbackup/db/altnames/No.Restrictions
3,修改Master Server->General Server->Add(q1dimsvr02-r->q1dimsrv02),重启NBU服务。不修改的,这里失败,提示找不到新Media Server的路径。
4,关闭原备份磁带路径及NBU服务器的磁带路径,只保留新的NC DB磁带路径,以保证数据走的是新的数据库Media Server连的光纤通道。
5,恢复测试

run
{
allocate channel t1 type 'SBT_TAPE'
parms="ENV=(NB_ORA_SERV=q1dimsvr02-r,NB_ORA_CLIENT=q1dimsvr02-r)";
restore spfile to 'C:\restore\SPFILEQDIM10.ora' from 'full_s37_p1_t654273013';
release channel t1;
}

run
{
allocate channel t1 type 'SBT_TAPE'
parms="ENV=(NB_ORA_SERV=q1dimsvr02-r,NB_ORA_CLIENT=q1dimsvr02-r)";
restore controlfile to 'C:\restore\ControlfileQDIM10.ctl' from 'ctrl_s40_p1_t654273065';
release channel t1;
}

创建pfile->spfile
创建目录audit,数据文件

修改tnsnames.ora,添加NBUTEST,及P1DIMSVR02-R上的原QDIM10数据库字串。
这里没catalog,也无法直接读到备份集目录,所以需要访问备份只能通过target数据库,否则,报错无法连接目标库,其实就是无法找到备份集信息。

a,一定要使用auxiliary连接rman,这是duplicate复制的基本连接。
b,一定要dbid,否则不知道要恢复哪个数据库,会显示无法恢复控制文件。恢复控制文件会通过dbid去寻找。
c,一定要target或这catalog或者直接放备份集的目录。
d,一定要配置target数据库的TNS连接。
e,一定要写2条通道
f,一起要启动原DB监听,让target连进去。

duplicate时还可以设置
set until time "to_date('2012-03-19 20.19','YYYY-MM-DD hh24.mi')";
SET ARCHIVELOG DESTINATION TO '/u03/archivelogs';然后将新产生的日志提前放进去,让数据库去应用最新的日志。

###############
DUPLICATE步骤
###############
set ORACLE_SID=NBUTEST
set NB_ORA_CLIENT=q1dimsvr02-r(原数据库)
sqlplus / as sysdba
startup nomount;
rman auxiliary / target sys/Amaxgs123@OLDQDIM10
set dbid=1936688443 --(duplicate带有target或catalog可以不要设置dbid)
run{
#allocate channel c1 type 'SBT_TAPE'
#parms="ENV=(NB_ORA_SERV=q1dimsvr02-r,NB_ORA_CLIENT=q1dimsvr02-r)";
#allocate auxiliary channel t1 type 'SBT_TAPE'
#parms="ENV=(NB_ORA_SERV=q1dimsvr02-r,NB_ORA_CLIENT=q1dimsvr02-r)";
allocate auxiliary channel t2 type 'SBT_TAPE'
parms="ENV=(NB_ORA_SERV=q1dimsvr02-r,NB_ORA_CLIENT=q1dimsvr02-r)";
SET ARCHIVELOG DESTINATION TO 'C:\restore';
SET NEWNAME FOR DATABASE TO 'C:\app\Administrator\oradata\NBUTEST\%b';
SET NEWNAME FOR TEMPFILE 1 TO 'C:\app\Administrator\oradata\NBUTEST\%b';
DUPLICATE DATABASE QDIM10 DBID 1936688443 TO NBUTEST NOFILENAMECHECK BACKUP LOCATION 'sbt_tape'
LOGFILE GROUP 1 ('C:\app\Administrator\oradata\NBUTEST\redo01a.log','C:\app\Administrator\oradata\NBUTEST\redo01b.log') SIZE 50M,
        GROUP 2 ('C:\app\Administrator\oradata\NBUTEST\redo02a.log','C:\app\Administrator\oradata\NBUTEST\redo02b.log') SIZE 50M,
        GROUP 3 ('C:\app\Administrator\oradata\NBUTEST\redo03a.log','C:\app\Administrator\oradata\NBUTEST\redo03b.log') SIZE 50M;
#release channel c1;
#release channel t1;
release channel t2;
}

##############
############################
DUPLICATE时找不到未备份的归档日志问题解析

########################################
##
Oracleinstance shut down

RMAN-00571:===========================================================

RMAN-00569:=============== ERROR MESSAGE STACK FOLLOWS ===============

RMAN-00571:===========================================================

RMAN-03002:failure of Duplicate Db command at 05/09/2008 16:39:01

RMAN-05501:aborting duplication of target database

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 4 and starting SCN of1883508 found to restore


问题原因:
恢复的SCN信息是通过target数据库库获取的,它默认会定位到源库最新归档日志的结束SCN,由于新的归档没有备份,最新的归档日志在旧的备份控制文件里没有记录,而duplicate也无法通过catalogstart with '';进行指定新拷贝过去的归档日志,所以无法找到日志。解决办法要么是指定可以恢复的SCN进行duplicate,但这样恢复的数据会少一点;或者在target数据库将最新的日志备份一下,再进行duplicate。

 

解决方法1--测试后发现不行

http://oracleinstance.blogspot.hk/2010/07/rman-03002-failure-of-duplicate-db.html

ADDNOFILENAMECHECK WITH DUPLICATE COMMAND
Example: DUPLICATE TARGET DATABASE TO "clone" NOFILENAMECHECK;

 

解决方法2--将4之后的归档日志备份一下到磁带库即可解决

run{

allocatechannel ch01 type 'sbt_tape';

#backuparchivelog all tag 'ARCH' format 'ARCH_%d_%T_%s';

backuparchivelog all not backed up 1 times tag 'ARCH' format 'ARCH_%d_%T_%s';

releasechannel ch01;}


########
参考文档
########
NBU查看备份信息,也可以看到文件的备份集信息
/usr/openv/netbackup/bin/admincmd/bpcatlist –server q1dimsvr-02 -client q1dimsrv02

参考文档
http://lefterhs.blogspot.com/2012/06/clone-database-using-rman-duplicate.html
http://oraclenutsandbolts.net/knowledge-base/rman/29-how-to-duplicate-replicate-a-database-in-oracle
http://learnwithme11g.wordpress.com/2011/07/04/rman-duplication-from-tape-backups/
http://dbakevin.blogspot.hk/2012/07/rman-senior-duplicate-database-from.html
0 0
原创粉丝点击