a.如果备份的数据库可以访问,那么执行执行生产转化脚本:
select 'set newname for datafile ' || file# || ' to ''' ||replace( name,'/old/data/path','/new/data/path' ) || ''';' from v$datafile;
b.如果备份的数据库不可以访问,可以trace控制文件内容:
alter database backup controlfile to trace;
在alert查看生成的trace文件路径和名称;
编辑恢复脚本:
vi recover.txt
run{
allocate channel c1 type sbt;
allocate channel c2 type sbt;
allocate channel c3 type sbt;
allocate channel c4 type sbt;
allocate channel c5 type sbt;
allocate channel c6 type sbt;
allocate channel c7 type sbt;
allocate channel c8 type sbt;
set newname for datafile 1 to '/s01/oracle/oradata/prod/system.156.952859152';
set newname for datafile 2 to '/s01/oracle/oradata/prod/sysaux.157.952859154';
set newname for datafile 3 to '/s01/oracle/oradata/prod/undotbs1.258.952859453';
set newname for datafile 4 to '/s01/oracle/oradata/prod/users.159.952855153';
set newname for datafile 5 to '/s01/oracle/oradata/prod/undotbs2.168.956859305';
set newname for datafile 6 to '/s01/oracle/oradata/prod/data.176.952859731';
set newname for datafile 7 to '/s01/oracle/oradata/prod/data.177.952857539';
set newname for datafile 8 to '/s01/oracle/oradata/prod/data.178.952850557';
restore database;
switch datafile all;
recover database;
release channel c1;
release channel c2;
release channel c3;
release channel c4;
release channel c5;
release channel c6;
release channel c7;
release channel c8;
}
放在后台恢复:
nohup rman target / @recover.txt log backup.log &