Active Database Duplication

举报
Lucifer三思而后行 发表于 2021/10/28 10:15:40 2021/10/28
【摘要】 一、介绍当源数据库不存在备份集,并且磁盘空间不足的情况下,可以通过Active Database Duplication来实现对数据库的复制。Active Database Duplication不需要源数据库的备份。 通过网络将数据库文件复制到辅助实例,它将实时源数据库复制到目标主机。 RMAN可以将所需文件复制为映像副本或备份集。_Note:_For active database d...

一、介绍

当源数据库不存在备份集,并且磁盘空间不足的情况下,可以通过Active Database Duplication来实现对数据库的复制。

Active Database Duplication不需要源数据库的备份。 通过网络将数据库文件复制到辅助实例,它将实时源数据库复制到目标主机。 RMAN可以将所需文件复制为映像副本或备份集。

_Note:_For active database duplication, the source database must use a server parameter file(SPFILE).

在这种方法中,RMAN客户端作为TARGET连接到源数据库,而作为AUXILIARY连接到辅助实例。

有以下两种方式:

Active Database Duplication Using Image Copies

Active Database Duplication Using Backup Sets

Notes:12.1之后开始支持备份集(Backup Sets)复制。

在某些场景下,使用备份集(Backup Sets)进行主动数据库复制比映像副本(Image Copies)可能更为可取:

a.在复制数据库时想要使用并行多段备份,压缩或加密。

See Also:

b.源数据库没有足够的网络资源来传输所需的数据库文件到目标数据库。

c.在源数据库上使用的资源最少,最小化影响源数据库的性能。

二、Active Database Duplication Using Image Copies(push-based method)

源数据库通过网络将所需的数据库文件传输到辅助实例。

Description of Figure 25-4 follows

三、Active Database Duplication Using Backup Sets(pull-based method)

辅助实例通过Oracle Net Services连接到源数据库,并通过网络从源数据库检索所需的数据库文件。

Description of Figure 25-5 follows

满足以下任一条件时,RMAN**使用备份集****(Backup Sets)执行活动数据库复制,否则,RMAN使用映像副本****(Image Copies)**执行活动数据库复制。

1、Compressing Backup Sets During Active Database Duplication

DUPLICATE TARGET DATABASE TO dup_db
FROM ACTIVE DATABASE
PASSWORD FILE
USING COMPRESSED BACKUPSET;

2、Parallelizing Backup Set Creation During Active Database Duplication

DUPLICATE TARGET DATABASE TO dup_db
FROM ACTIVE DATABASE
PASSWORD FILE
SECTION SIZE 400M;

3、Encrypting Backup Sets During Active Database Duplication

##在DUPLICATE命令之前使用SET ENCRYPTION ALGORITHM命令来指定加密算法。
SET ENCRYPTION ON IDENTIFIED BY password;

四、注意点

1、需要复制后保持数据库文件名称一致

a.复制数据库配置为使用与源数据库相同的目录结构和文件名

b.如果源数据库使用ASM磁盘组,则重复的数据库必须使用具有相同名称的ASM磁盘组。

c.如果源数据库文件是Oracle Managed Files,则辅助实例必须将DB_CREATE_FILE_DEST参数设置为与源数据库相同的目录位置。

d.如果源数据库中数据库文件的名称包含路径,则该路径名称在重复数据库中必须相同。

e.对于Oracle Real Application Clusters(RAC)环境,请对源数据库和目标数据库的ORACLE_SID参数使用相同的值。

2、源库与复制库目录不一致的情况

a.SET NEWNAME命令

Variable Description

%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

|

##按优先级排序
1.SET NEWNAME FOR DATAFILE and SET NEWNAME FOR TEMPFILE
2.SET NEWNAME FOR TABLESPACE
3.SET NEWNAME FOR DATABASE

##Example
##1.该脚本为数据文件1至5和临时文件1指定了新名称。该脚本未为数据文件6设置新名称,因为它位于TOOLS表空间中,该表空间已从重复数据库中排除。
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;
}

##2.并使用单个SET NEWNAME命令命名表空间用户中的所有数据文件。 示例完成后,表空间用户的文件名设置为:/oradata4/users01.dbf和/oradata5/users02.dbf。
{
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;
}

##3.使用单个SET命令命名数据库中的所有数据文件。
RUN
{
SET NEWNAME FOR DATABASE TO '/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;
}

对于OMF和ASM数据库文件,必须使用SET NEWNAME … TO NEW命令,而不能显式提供数据库文件的名称。

##Example

##1.USER表空间的文件是用OMF托管,因此使用set newname to new
RUN
{
SET NEWNAME FOR TABLESPACE users TO NEW;
SET NEWNAME FOR DATAFILE 3 TO NEW;
SET NEWNAME FOR DATAFILE 1 TO '/oradata1/system01.dbf';
SET NEWNAME FOR DATAFILE 2 TO '/oradata2/sysaux01.dbf';
SET NEWNAME FOR TEMPFILE 1 TO '/oradatat/temp01';
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;
}

##2.用SET NEWNAME在ASM创建文件
RUN
{
SET NEWNAME FOR DATAFILE 1 TO "+DGROUP1";
SET NEWNAME FOR DATAFILE 2 TO "+DGROUP2";
.
.
.
DUPLICATE TARGET DATABASE
TO dupdb
FROM ACTIVE DATABASE
SPFILE SET DB_CREATE_FILE_DEST +DGROUP3;
}

b.AUXNAME命令

为重复的数据库文件指定非OMF和非ASM替代名称。

##Example:

##1.以指定文件数据文件1到5的名称
CONFIGURE AUXNAME FOR DATAFILE 1 TO '/oradata1/system01.dbf';
CONFIGURE AUXNAME FOR DATAFILE 2 TO '/oradata2/sysaux01.dbf';
CONFIGURE AUXNAME FOR DATAFILE 3 TO '/oradata3/undotbs01.dbf';
CONFIGURE AUXNAME FOR DATAFILE 4 TO '/oradata4/users01.dbf'; 
CONFIGURE AUXNAME 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;

c.DUPLICATE命令的SPFILE子句

设置与重复的数据库文件名相关的所有必需的初始化参数,但DB_FILE_NAME_CONVERT参数除外。

##Example

##1.假设源数据库prod在host1上,并将其数据文件存储在非ASM文件系统中。 prod的控制文件位于/ oracle / oradata / prod /中。 您要将源数据库复制到远程主机host2上的数据库dupdb中。 您要将重复的数据库文件存储在ASM磁盘组+ DISK1中。

DUPLICATE TARGET DATABASE TO dupdb
FROM ACTIVE DATABASE
SPFILE
PARAMETER_VALUE_CONVERT '/oracle/oradata/prod/', '+DISK1'
SET DB_CREATE_FILE_DEST +DISK1;

##DUPLICATE命令完成后,将创建重复数据库,其中包含ASM磁盘组+DISK1中的数据文件,联机重做日志文件和控制文件。


##2.假定源数据库prod在host1上,并将其数据文件存储在ASM磁盘组+DISK1中。 您要将目标复制到远程主机host2上的数据库dupdb。 您想要将dupdb的数据文件存储在ASM中。

DUPLICATE TARGET DATABASE
TO dupdb
FROM ACTIVE DATABASE
SPFILE PARAMETER_VALUE_CONVERT '+DISK1','+DISK2'
SET DB_RECOVERY_FILE_DEST_SIZE='750G';

##当DUPLICATE命令完成时,将创建重复的数据库,其中包含较大ASM磁盘组+DISK2中的数据文件,联机重做日志和控制文件。

d.DB_FILE_NAME_CONVERT和LOG_FILE_NAME_CONVERT初始化参数(_Non-MO_F)

限制:

1.不能使用DUPLICATE命令的DB_FILE_NAME_CONVERT选项来控制源数据库实例中OMF格式的辅助实例中文件的新名称的生成。
2.不能使用LOG_FILE_NAME_CONVERT初始化参数来控制源数据库实例中OMF格式的重复实例中文件的新名称的生成。
3.如果设置OMF初始化参数,请不要指定LOG_FILE_NAME_CONVERT参数。
4.LOG_FILE_NAME_CONVERT参数不能在DUPLICATE命令中指定为子句,而只能在辅助实例的初始化参数中指定。

_注意:_当复制到没有NOFILENAMECHECK子句的本地主机或远程主机时,请确保不使用源数据库当前正在使用的联机重做日志文件的名称。

3、NOFILENAMECHECK

CONFIGURE AUXNAME命令,SET NEWNAME命令或DB_FILE_NAME_CONVERT参数可能会生成已在目标数据库中使用的名称。 在这种情况下,RMAN在复制期间显示错误。 复制到远程主机时,请使用NOFILENAMECHECK选项来避免出现此错误消息。

_Notes:_复制到本地主机时使用NOFILENAMECHECK会覆盖目标数据库文件。

4、目标端Oracle安装

_Notes:_请确保在源主机和目标主机上都安装了具有相同补丁程序级别的相同版本的Oracle数据库软件。

5、NOOPEN

通过指定NOOPEN参数,防止打开复制数据库到resetlogs。

6、static listener

DG需要使用静态监听。

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db)
      (SID_NAME = orcl)
    )
  )
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。