RMAN DUPLICATION复制概述
DUPLICATE命令可以创建完整的运行良好的数据库副本(clone DB)或Physical standby数据库。
DUPLICATE命令自动为duplicate数据库分配不同的DBID,以便它可以注册在与源数据库相同的catalog中。
DUPLICATION可以是数据库级别,也可以指定表空间级别。
RMAN必须执行基于时间点的恢复,即使没有指定明确的时间点,因为源数据库中的联机重做日志文件未备份,不能应用于备份数据库。
备份数据库的最远的恢复点是源数据库归档的最近的重做日志文件。
一、 Active Database Duplication 和 Backup-based duplication对比
-------------------------------------------------------------
Active database duplication功能是从11g开始引入的一个新功能
Active database duplication 直接复制源数据库,通过网络传输数据库到复制服务器,因此复制时对源库有一定的压力,而且数据传输时对网络条件要求较高。简单的概括为:
Backup-based duplication :需要提前备份数据库,磁盘空间大小能够满足备份的需要。
Active Database Duplication 不需要提前备份,但在复制的过程中,对源库有一定的压力,需要一定的网络带宽。源数据库一定是规定模式。
Active Database Duplication 原理
-------------------------------------
1. 手动创建一个临时的pfile文件,pfile文件至少包括一个参数DB_NAME,然后启动到nomount状态。
2. RMAN从源库拷贝spfile文件到复制数据库上,并且修改spfile的名字。
3. RMAN从源库拷贝最新的control file到复制数据库,并且mount 复制数据库。
4. RMAN从源库拷贝datafile和必要的归档日志到复制数据库。
5. RMAN执行不完全的恢复。
6. RMAN创建新的control file,并且设置新的DBID。
7. 以RESETLOGS方式打开复制的database。
1) active database duplication(在线数据库复制,不需要backup文件):
1.必须创建密码文件和配置tns连通性。密码文件只是临时的,因为它会在duplicate过程中被覆盖。
must create a password file for the auxiliary instance and establish Oracle Net connectivity
2.创建备库的pfile,设置db_file_name_convert和log_file_name_convert
3.确定target主库处于mounted或者open状态,并且启用归档。
4.RMAN TARGET sys/manager@bbkesale AUXILIARY sys/manager@bbkesalestd
5.执行duplicate命令
DUPLICATE TARGET DATABASE
FOR STANDBY
FROM ACTIVE DATABASE
DORECOVER nofilenamecheck;
--nofilenamecheck告诉RMAN不用检查备库和主库是否使用相同的文件名。
--如果主备数据文件目录相同(或pfile中配置了db_file_name_convert),需使用nofilenamecheck
2) backup-based duplication(需要数据库备份文件)
1.with target connection
2.without target connection,but with recovery catalog connection
3.without target connection and recovery catalog connection
RMAN连接实例:
RMAN> CONNECT TARGET SYS/sysdba@prod; # source database
RMAN> CONNECT AUXILIARY SYS/sysdba@dupdb; # duplicate database instance
RMAN> CONNECT CATALOG rman/rman@catdb; # recovery catalog database
--------------------------------------------------------------------------------------------------------------------
二、duplicate时重命名数据文件
如果pfile中没有设置db_file_name_convert,也可以在duplicate之前通过set newname来指定新的备份库数据文件目录和名字。
eg:Duplicating with SET NEWNAME FOR DATAFILE
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;
}
三、duplicate数据库时指定表空间
1) duplicate数据库时排除指定的表空间 Excluding Specified Tablespaces
eg:排除readonly的表空间
DUPLICATE TARGET DATABASE TO dupdb
FROM ACTIVE DATABASE
SKIP READONLY
NOFILENAMECHECK;
eg:排除tools表空间
DUPLICATE TARGET DATABASE
TO dupdb
FROM ACTIVE DATABASE
SKIP TABLESPACE tools
NOFILENAMECHECK;
2) duplicate数据库时也可以指定包含的表空间,其他表空间会被忽略(system、sysaux、undo和包含物化视图的表空间除外)
eg:不要恢复users以外的表空间
DUPLICATE TARGET DATABASE
TO dupdb
FROM ACTIVE DATABASE
TABLESPACE users
NOFILENAMECHECK;
---------------------------------------------------------------------------------------------------------------------------------------------
附:
SET NEWNAME替换变量(Substitution Variables for SET NEWNAME)
%b
Specifies the file name stripped of directory paths. For example, if a data file is named /oradata/prod/financial.dbf, then %b results in financial.dbf.
%f
Specifies the absolute file number of the data file for which the new name is generated. For example, if data file 2 is duplicated, then %f generates the value 2.
%I
Specifies the DBID
%N
Specifies the tablespace name
%U
Specifies the following format: data-D-%d_id-%I_TS-%N_FNO-%f
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30025058/viewspace-2140355/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30025058/viewspace-2140355/