曾经写过一篇关于如何将RAC的备份异地恢复到单点上的实验过程,连接如下:
http://blog.csdn.net/jyjxs/article/details/8727492
其中用到了RMAN的SET NEWNAME选项,在10g中针对每个数据文件都要set newname一下,如果数据文件多达上百个可能就要晕菜了!
前几天偶然翻看文档发现11g新特性,可以根据表空间set newname。
RMAN支持下列命令列出的优先顺序:
1、SET NEWNAME FOR DATAFILE and SET NEWNAME FOR TEMPFILE
2、SET NEWNAME FOR TABLESPACE
3、SET NEWNAME FOR DATABASE
也就是说不光支持表空间的重新制定,还包括数据文件及整个数据库的重新制定。
————————————————————————————————————————————
变量 概述
—————————————————————————————————————————————
%b 指定的文件名 的目录路径中剥离。例如,如果一个数据文件被命名为/ ORADATA /prod/ financial.dbf,%b可以代表financial.dbf结果。
%f 指定新的名称生成的数据文件的绝对文件号。例如,如果被复制的数据是文件2,然后%F产生的值为2。
%I 指定DBID
%N 指定表空间名称
%U 指定的格式如下:data-D-%d_id-%I_TS-%N_FNO-%f
————————————————————————————————————————————
一、使用SET NEWNAME制定新的文件名:
RUN
{
SET NEWNAME FOR DATAFILE 1 TO '/oradata1/system01.dbf';
SET NEWNAME FOR DATAFILE 2 TO '/oradata2/sysaux01.dbf';
SET NEWNAME FOR DATAFILE 3 TO '/oradata3/undotbs01.dbf';
SET NEWNAME FOR DATAFILE 4 TO '/oradata4/users01.dbf';
SET NEWNAME FOR DATAFILE 5 TO '/oradata5/users02.dbf';
SET NEWNAME FOR TEMPFILE 1 TO '/oradatat/temp01.dbf';
DUPLICATE TARGET DATABASE TO dupdb
SKIP TABLESPACE tools
LOGFILE
GROUP 1 ('/duplogs/redo01a.log',
'/duplogs/redo01b.log') SIZE 4M REUSE,
GROUP 2 ('/duplogs/redo02a.log',
'/duplogs/redo02b.log') SIZE 4M REUSE;
}
二、使用SET NEWNAME制定新的表空间和新的文件名
RUN
{
SET NEWNAME FOR TABLESPACE USERS TO '/ ORADATA%f /%b';
SET NEWNAME FOR DATAFILE 1 TO '/ oradata1/system01.dbf ';
SET NEWNAME FOR DATAFILE 2 TO '/ oradata2/sysaux01.dbf ' ;
SET NEWNAME FOR DATAFILE 3 TO '/ oradata3/undotbs01.dbf ';
SET NEWNAME FOR TEMPFILE 1 TO '/ oradatat/temp01.dbf ';
DUPLICATE TARGET DATABASE TO dupdb
SKIP TABLESPACE tools
LOGFILE
GROUP 1('/ duplogs/redo01a.log ',
'/ duplogs/redo01b.log')SIZE 4M REUSE,
GROUP 2('/ duplogs/redo02a.log ',
' / duplogs/redo02b.log')SIZE 4M REUSE;
}
三、使用SET NEWNAME制定新的数据库
RUN
{
SET NEWNAME FOR DATABASE '/ ORADATA /%U';
DUPLICATE TARGET DATABASE TO dupdb
SKIP TABLESPACE tools
LOGFILE
GROUP 1('/ duplogs/redo01a.log',
'/ duplogs/redo01b.log)SIZE 4M REUSE,
GROUP 2('/ duplogs/redo02a.log',
' / duplogs/redo02b.log')SIZE 4M REUSE;
}
下表为SET NEWNAME FOR database转换后的结果:
变换前的文件名 | 表空间名 | 数据文件号 | 转换为'/oradata/%U'格式后的结果 |
---|---|---|---|
|
|
1 |
|
|
|
2 |
|
|
|
3 |
|
|
|
4 |
|
|
|
5 |
|
|
|
1 |
|