RMAN Duplicate Fails - Suggestions?

  • From: "David Barbour" <david.barbour1@xxxxxxxxx>
  • To: "Oracle L" <oracle-l@xxxxxxxxxxxxx>
  • Date: Sun, 16 Mar 2008 09:27:09 -0400

Running an RMAN Duplicate Database to another host (clone) with a different
file structure.  I'm on Oracle 9.2.0.7 and using a catalog.  It's a
5.4TBDB, and the freakin' thing failed on the last 3 datafiles.  I
don't have
time to kick off a full new restore and our version has the bug #3202107
(fixed in 9.2.0.8) where the restore optimization - for restarting this -
doesn't work.  I've tried to follow the instructions in Metalink Note
#360692.1 using "Manual Completion of Phase 1" - "Set newname and restore of
datafiles" but it doesn't work.  Here's what they say:

Restore the remaining datafiles into the auxiliary instance using a 'normal'
rman restore and connecting to the auxiliary instance as the target. Start
RMAN in the same host / environment as the AUXILIARY instance :
$ export ORACLE_SID=<auxiliary>
$ rman target /

RMAN> run {
  set until scn 1412841;
   set newname for datafile n to '<newfilename_n>';
   set newname for datafile n2 to '<newfilename_n2>';
   ….etc
   restore datafile n,n2…etc;
}

But the auxiliary database isn't mounted and won't mount because I haven't
gotten to the controlfile piece yet.  If I connect to the target as my
production source and the auxiliary as my duplicate, I get an error
"ORA-19504: failed to create file "/oracle/QA1/sapdata3/undo_3/undo.data3"
ORA-27040: skgfrcre: create error, unable to create file" which I'm thinking
means it's trying to restore to the primary/original/source/target (can they
get more confusing with the terminology?).

Here's the script I'm using to try to finish this off:
rman <<EOF

connect target sys/<password>@pr1
connect catalog rmanadmin/<password>@rcat
connect auxiliary sys/<password>@qa1

CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS
'ENV=(TDPO_OPTFILE=/usr/tivoli/tsm/client/oracle/bin64/tdpo.opt)';

run{
allocate auxiliary channel dupdb1 type 'sbt_tape';
allocate auxiliary channel dupdb2 type 'sbt_tape';
allocate channel reg1 type 'sbt_tape';
allocate channel reg2 type 'sbt_tape';
set until scn  3864716014;
set newname for datafile  400 to
"/oracle/QA1/sapdata4/zzsws1ai_6/zzsws1ai.data6";
set newname for datafile  401 to "/oracle/QA1/sapdata3/undo_3/undo.data3";
set newname for datafile  402 to
"/oracle/QA1/sapdata2/zarixfi4i_5/zarixfi4i.data5";
restore datafile 400,401,402;
}
EOF


Do I need a duplicate database command in here somewhere?  Anybody faced
this before and can bail me out?

Other related posts: