发布时间:2024-06-04 11:01
RMANDUPLICATION复制概述
DUPLICATE命令可以创建完整的运行良好的数据库副本(clone DB)或Physical standby数据库。
DUPLICATE命令自动为duplicate数据库分配不同的DBID,以便它可以注册在与源数据库相同的catalog中。
DUPLICATION可以是数据库级别,也可以指定表空间级别。
RMAN必须执行基于时间点的恢复,即使没有指定明确的时间点,因为源数据库中的联机重做日志文件未备份,不能应用于备份数据库。
备份数据库的最远的恢复点是源数据库归档的最近的重做日志文件。
一、 Active Database Duplication 和Backup-based duplication对比
-------------------------------------------------------------
Active databaseduplication功能是从11g开始引入的一个新功能
Active databaseduplication 直接复制源数据库,通过网络传输数据库到复制服务器,因此复制时对源库有一定的压力,而且数据传输时对网络条件要求较高。简单的概括为:
Backup-basedduplication :需要提前备份数据库,磁盘空间大小能够满足备份的需要。
Active DatabaseDuplication 不需要提前备份,但在复制的过程中,对源库有一定的压力,需要一定的网络带宽。源数据库一定是规定模式。
Active Database Duplication 原理
-------------------------------------
1. 手动创建一个临时的pfile文件,pfile文件至少包括一个参数DB_NAME,然后启动到nomount状态。
2. RMAN从源库拷贝spfile文件到复制数据库上,并且修改spfile的名字。
3. RMAN从源库拷贝最新的controlfile到复制数据库,并且mount 复制数据库。
4. RMAN从源库拷贝datafile和必要的归档日志到复制数据库。
5. RMAN执行不完全的恢复。
6. RMAN创建新的controlfile,并且设置新的DBID。
7. 以RESETLOGS方式打开复制的database。
1) activedatabase duplication(在线数据库复制,不需要backup文件):
1.必须创建密码文件和配置tns连通性。密码文件只是临时的,因为它会在duplicate过程中被覆盖。
must create apassword 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@bbkesaleAUXILIARY sys/manager@bbkesalestd
5.执行duplicate命令
DUPLICATE TARGET DATABASE
FOR STANDBY
FROM ACTIVE DATABASE
DORECOVERnofilenamecheck;
--nofilenamecheck告诉RMAN不用检查备库和主库是否使用相同的文件名。
--如果主备数据文件目录相同(或pfile中配置了db_file_name_convert),需使用nofilenamecheck
2) backup-basedduplication(需要数据库备份文件)
1.with targetconnection
2.without targetconnection,but with recovery catalog connection
3.without targetconnection and recovery catalog connection
RMAN连接实例:
RMAN> CONNECTTARGET SYS/sysdba@prod; # sourcedatabase
RMAN> CONNECTAUXILIARY SYS/sysdba@dupdb; # duplicate database instance
RMAN> CONNECTCATALOG rman/rman@catdb; # recoverycatalog database
--------------------------------------------------------------------------------------------------------------------
二、duplicate时重命名数据文件
如果pfile中没有设置db_file_name_convert,也可以在duplicate之前通过setnewname来指定新的备份库数据文件目录和名字。
eg:Duplicatingwith 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 4MREUSE,
GROUP 2 (\'/duplogs/redo02a.log\',
\'/duplogs/redo02b.log\') SIZE 4MREUSE;
}
三、duplicate数据库时指定表空间
1) duplicate数据库时排除指定的表空间 Excluding Specified Tablespaces
eg:排除readonly的表空间
DUPLICATE TARGETDATABASE TO dupdb
FROM ACTIVE DATABASE
SKIP READONLY
NOFILENAMECHECK;
eg:排除tools表空间
DUPLICATE TARGETDATABASE
TO dupdb
FROM ACTIVE DATABASE
SKIP TABLESPACE tools
NOFILENAMECHECK;
2) duplicate数据库时也可以指定包含的表空间,其他表空间会被忽略(system、sysaux、undo和包含物化视图的表空间除外)
eg:不要恢复users以外的表空间
DUPLICATE TARGETDATABASE
TO dupdb
FROM ACTIVE DATABASE
TABLESPACE users
NOFILENAMECHECK;
---------------------------------------------------------------------------------------------------------------------------------------------
附:
SET NEWNAME替换变量(Substitution Variables forSET NEWNAME)
%b
Specifies the filename stripped of directory paths. For example, if a data file is named/oradata/prod/financial.dbf, then %b results in financial.dbf.
%f
Specifies theabsolute file number of the data file for which the new name is generated. Forexample, if data file 2 is duplicated, then %f generates the value 2.
%I
Specifies the DBID
%N
Specifies thetablespace name
%U
Specifies thefollowing format: data-D-%d_id-%I_TS-%N_FNO-%f