「这是我参与11月更文挑战的第18天,活动详情查看:2021最后一次更文挑战」
一、介绍
当源数据库不存在备份集,并且磁盘空间不足的情况下,可以通过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:
- About Compressing Backup Sets During Active Database Duplication
- About Parallelizing Backup Set Creation During Active Database Duplication
- About Encrypting Backup Sets During Active Database Duplication
b.源数据库没有足够的网络资源来传输所需的数据库文件到目标数据库。
c.在源数据库上使用的资源最少,最小化影响源数据库的性能。
二、Active Database Duplication Using Image Copies(push-based method)
源数据库通过网络将所需的数据库文件传输到辅助实例。
三、Active Database Duplication Using Backup Sets(pull-based method)
辅助实例通过Oracle Net Services连接到源数据库,并通过网络从源数据库检索所需的数据库文件。
满足以下任一条件时,RMAN**使用备份集****(Backup Sets)执行活动数据库复制,否则,RMAN使用映像副本****(Image Copies)**执行活动数据库复制。
1、Compressing Backup Sets During Active Database Duplication
1 | bash复制代码DUPLICATE TARGET DATABASE TO dup_db |
2、Parallelizing Backup Set Creation During Active Database Duplication
1 | bash复制代码DUPLICATE TARGET DATABASE TO dup_db |
3、Encrypting Backup Sets During Active Database Duplication
1 | bash复制代码##在DUPLICATE命令之前使用SET ENCRYPTION ALGORITHM命令来指定加密算法。 |
四、注意点
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 | bash复制代码##按优先级排序 |
对于OMF和ASM数据库文件,必须使用SET NEWNAME … TO NEW命令,而不能显式提供数据库文件的名称。
1 | bash复制代码##Example |
b.AUXNAME命令
为重复的数据库文件指定非OMF和非ASM替代名称。
1 | bash复制代码##Example: |
c.DUPLICATE命令的SPFILE子句
设置与重复的数据库文件名相关的所有必需的初始化参数,但DB_FILE_NAME_CONVERT参数除外。
1 | bash复制代码##Example |
d.DB_FILE_NAME_CONVERT和LOG_FILE_NAME_CONVERT初始化参数(_Non-MO_F)
限制:
1 | bash复制代码1.不能使用DUPLICATE命令的DB_FILE_NAME_CONVERT选项来控制源数据库实例中OMF格式的辅助实例中文件的新名称的生成。 |
_注意:_当复制到没有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需要使用静态监听。
1 | bash复制代码SID_LIST_LISTENER = |
本文转载自: 掘金