• 列出创建副本数据库的目的
• 选择用于复制数据库的方法
• 使用RMAN 复制数据库
• 使用RMAN 备份复制数据库
• 基于正在运行的实例复制数据库
• 使用副本数据库可执行以下任务:
– 测试备份和恢复过程
– 测试升级到新版本的Oracle数据库
– 测试应用程序的变化对数据库性能的影响
– 通过创建导出文件并将对象导入生产数据库来恢复对象
• 创建副本数据库:
– 使用RMAN 的DUPLICATE命令
– 在同一主机上或在不同的主机上
– 包含与源相同的内容或源的子集
– 对于基于备份的复制,是通过辅助通道执行的
– 对于活动的数据库复制,是通过目标通道执行的
使用副本数据库
副本数据库是你的目标数据库的副本,它具有一个新的唯一数据库标识符(DBID)。通过
独立运行副本数据库(不依赖目标数据库)可执行以下任务:
• 测试备份和恢复过程。
•测试升级到新版本的Oracle数据库。
•测试应用程序的变化对数据库性能的影响。
• 创建包含副本数据库中对象的导出文件并将这些对象导入生产数据库,恢复不小心从
目标数据库中删除的对象。尽管你可能发现闪回查询、闪回删除和闪回表是用来恢复
对象的更简单快速的解决方案。
创建副本数据库:
• 可以使用RMAN 的DUPLICATE命令在同一主机上或不同的主机上创建副本数据库。
• 副本数据库可包含与源数据库相同的内容或仅包含源数据库的子集
。
• 复制的主要工作是由
辅助通道执行的。对于基于备份的复制,这些通道对应于目标主
机上的辅助实例上的服务器会话。
• 对于活动数据库复制,由
目标通道执行将数据文件副本推入到辅助实例的工作。
选择复制数据库的方法 - 始终连接到辅助实例:
可将源数据库复制到位于同一计算机或其它计算机上的目标数据库。与副本数据库关联的
数据库实例称为辅助实例。所有复制方法都需要连接到辅助实例。此图表显示了以下数据
库复制方法:
• 从活动数据库,连接到目标实例和辅助实例
• 从备份,连接到目标实例和辅助实例
• 从备份,连接到辅助实例,不连接到目标实例,但具有恢复目录连接
• 从备份,连接到辅助实例,不连接到目标实例和恢复目录
• 使用网络(不需要备份)
• 包括自定义SPFILE
• 通过Oracle Enterprise Manager 或RMAN 命令行
复制活动数据库
通过使用Oracle Enterprise Manager 或RMAN DUPLICATE命令的FROM ACTIVE
DATABASE子句,可以指示源数据库直接将映像副本和归档日志副本复制到辅助实例。
此操作不需要使用备份。RMAN 作为TARGET连接到源数据库实例并作为AUXILIARY
连接到辅助实例。
通过实例间的网络连接将数据库文件从源数据库复制到目标数据库或辅助实例。RMAN
随后使用“内存脚本”(仅包含在内存中)完成恢复并打开数据库。
• 连接到目标数据库(源数据库)
• 连接到辅助实例
• 可选,连接到恢复目录(或使用目标控制文件)
通过目标连接复制数据库
当通过目标数据库连接复制数据库时,RMAN 可从目标数据库控制文件或从恢复目录获
取有关备份的元数据。
此图表描述了通过目标连接执行的
基于备份的复制。RMAN 连接到源数据库实例和辅助
实例。此外,RMAN 还可以连接到恢复目录数据库(图中未显示)。目标主机必须具有
对创建副本数据库所需的RMAN 备份的访问权限。
• 连接到备份元数据的恢复目录
• 连接到辅助实例,该实例必须具有对RMAN 备份的
访问权限
在没有目标连接的情况下复制数据库
如果在复制数据库时没有连接到目标数据库,但具有恢复目录,则RMAN 将使用恢复目
录获取有关备份的元数据。
此图表描述了没有目标连接时基于备份的复制。RMAN 连接到恢复目录数据库实例和辅
助实例。目标主机必须具有对创建副本数据库所需的RMAN 备份的访问权限。
连接到辅助实例,该实例必须具有对磁盘备份位置的访问
权限
在没有恢复目录或目标连接的情况下复制数据库
如果在没有目标数据库连接且没有恢复目录的情况下复制数据库,则RMAN 将使用所有
必需的备份和副本所在的备份位置。
此图表描述了在没有连接到目标数据库实例或恢复目录数据库实例的情况下执行的基于
备份的复制。包含复制所需的所有备份或副本的磁盘备份位置必须可供目标主机使用。
1. 创建辅助实例的Oracle 口令文件。
2. 建立到辅助实例的Oracle Net 连接。
3. 创建辅助实例的初始化参数文件。
4. 在NOMOUNT模式下启动辅助实例。
5. 装载或打开目标数据库。
6. 确保备份和归档重做日志文件可用。
7. 根据需要分配辅助通道。
8. 执行DUPLICATE命令。
了解以上基本步骤和RMAN 数据库复制过程非常重要。
如果你使用的是Oracle Enterprise Manager 界面,向导可帮助你执行大部分步骤。如果你
使用命令行界面创建副本数据库,则需要手动执行这些步骤。你还可将EM 界面用作测试
或示例,并以输出日志为基础编写自己的数据库复制脚本。
本示例中概括了创建副本数据库的基本步骤。
请按如下方式指定参数:
• DB_NAME
– 如果副本数据库和目标数据库在同一Oracle 主目录中,
则它们的名称必须不同。
– 在DUPLICATE命令中使用相同的值。
• DB_BLOCK_SIZE
– 指定的值应与为目标数据库设置的值相同。
创建辅助实例的初始化参数文件
你必须为辅助实例创建文本初始化参数文件。文本初始化参数文件驻留的主机必须与用来
执行DUPLICATE命令的RMAN 客户机驻留的主机是同一主机。
请注意下列每个参数的要求:
• DB_NAME:如果目标数据库和副本数据库在同一Oracle 主目录中,则必须将
DB_NAME设置为不同的名称。如果它们在不同的Oracle 主目录中,则必须确保副本
数据库名称不同于其Oracle 主目录中的其它名称。请确保执行DUPLICATE命令时使
用的数据库名称与为此参数设置的名称相同。
• DB_BLOCK_SIZE:辅助数据库的块大小必须与目标数据库的块大小匹配。辅助数据
库初始化参数文件中指定的值必须与目标数据库初始化参数文件中设置的值相同。如
果没有在目标数据库的初始化参数文件中设置此参数,在辅助实例初始化参数文件中
也不要设置它。
另外,请务必验证指定路径名的所有初始化参数的设置。请确认在副本数据库主机上可以
访问所有指定的路径。
可用的方法:
• SET NEWNAME命令
• CONFIGURE AUXNAME命令(对恢复集数据文件已弃用)
• 在DUPLICATE命令中指定DB_FILE_NAME_CONVERT
参数
为目标指定新名称
可以使用下列方法指定数据文件的新名称:
• 将SET NEWNAME FOR DATAFILE命令包含在RUN块中来指定数据文件的新名称。
• 使用CONFIGURE AUXNAME命令。CONFIGURE AUXNAME是SET NEWNAME的
一种替代方法。区别是首次配置辅助名称后,其它DUPLICATE命令将重用所配置的
设置。相对而言,每次执行DUPLICATE命令时必须重新发出SET NEWNAME。
注:对于恢复集数据文件,使用SET NEWNAME替换CONFIGURE AUXNAME。
• 随DUPLICATE命令指定DB_FILE_NAME_CONVERT参数。
• SET NEWNAME子句用于为数据库或命名表空间中的所
有文件指定默认名称格式。
• 默认名称用于RUN块中的DUPLICATE、RESTORE和
SWITCH命令。
• 它使得你可以通过单个命令设置文件名称,而无需分别
设置每个文件名称。
SET NEWNAME FOR
DATABASE
TO {NEW|'formatSpec'};
使用SET NEWNAME子句
你可以使用SET NEWNAME为命名表空间中的所有数据文件和数据库中的所有数据文件
指定默认名称格式。
SET NEWNAME命令的优先顺序如下所示:
1.SET NEWNAME FOR DATAFILE和SET NEWNAME FOR TEMPFILE
2.SET NEWNAME FOR TABLESPACE
3.SET NEWNAME FOR DATABASE
示例:
RUN
{
SET NEWNAME FOR DATABASE TO '/u01/app/oracle/oradata/dupldb/%b';
DUPLICATE TARGET DATABASE TO dupldb
LOGFILE
GROUP 1 ('/u01/app/oracle/oradata/dupldb/redo01a.log',
'/u01/app/oracle/oradata/dupldb/redo01b.log') SIZE 50M REUSE,
GROUP 2 ('/u01/app/oracle/oradata/dupldb/redo02a.log',
'/u01/app/oracle/oradata/dupldb/redo02b.log') SIZE 50M REUSE,
GROUP 3 ('/u01/app/oracle/oradata/dupldb/redo03a.log',
'/u01/app/oracle/oradata/dupldb/redo03b.log') SIZE 50M REUSE;
}
SET NEWNAME的替代变量
发出SET NEWNAME FOR DATABASE或SET NEWNAME FOR TABLESPACE时,必须
在TO <filename>子句中指定替代变量以避免名称冲突。请至少指定以下替代变量中
的一种:%b、%f和%U。%I和%N是可选变量。
或者指定下列参数来显式控制辅助数据库的文件命名:
• CONTROL_FILES
• DB_FILE_NAME_CONVERT
• LOG_FILE_NAME_CONVERT
CONTROL_FILES='/u01/app/oracle/oradata/aux/control01.ctl',
'/u01/app/oracle/oradata/aux/control02.ctl',
'/u01/app/oracle/oradata/aux/control03.ctl'
DB_FILE_NAME_CONVERT='/u01/app/oracle/oradata/orcl',
'/u01/app/oracle/oradata/aux'
LOG_FILE_NAME_CONVERT='/u01/app/oracle/oradata/orcl',
'/u01/app/oracle/oradata/aux'
指定用于文件命名的参数
执行DUPLICATE命令时,RMAN 会生成必需的数据库文件的名称。通过在辅助实例初
始化参数文件中指定下列初始化参数,可以控制这些文件的命名:
• CONTROL_FILES:可以使用此参数指定控制文件的名称。如果未使用此参数设置名
称,Oracle Server 会在默认控制目标中创建Oracle 管理的控制文件。有关具体的信息,
• DB_FILE_NAME_CONVERT:此参数用于指定辅助数据库的数据文件名。其格式为
DB_FILE_NAME_CONVERT = 'string1', 'string2',其中string1是目标
数据库文件名的模式,string2是辅助数据库文件名的模式。还可以指定
DB_FILE_NAME_CONVERT参数作为DUPLICATE DATABASE命令的选项。
• LOG_FILE_NAME_CONVERT:此参数用于指定辅助数据库的重做日志文件名。其格
式为LOG_FILE_NAME_CONVERT = 'string1', 'string2',其中string1
是目标数据库文件名的模式,string2是辅助数据库文件名的模式。还可以使用
DUPLICATE DATABASE命令的LOGFILE子句来指定重做日志文件名。
除了使用初始化参数控制文件命名之外,还可以使用下列方法重命名重做日志文件:
• 使用DUPLICATE命令的LOGFILE子句。
• 设置Oracle Managed Files 的初始化参数:DB_CREATE_FILE_DEST、
DB_CREATE_ONLINE_DEST_n或DB_RECOVERY_FILE_DEST。
• 在NOMOUNT模式下启动辅助实例。
• 根据用来启动实例的文本初始化参数文件创建服务器
参数文件(SPFILE)。
SQL> startup nomount pfile='$HOME/auxinstance/initAUX.ora'
ORACLE instance started.
Total System Global Area 285212672 bytes
Fixed Size 1218992 bytes
Variable Size 92276304 bytes
Database Buffers 188743680 bytes
Redo Buffers 2973696 bytes
SQL> create spfile
2 from pfile='$HOME/auxinstance/initAUX.ora';
File created.
在NOMOUNT模式下启动实例
创建文本初始化参数文件后,通过调用SQL*Plus 可在NOMOUNT模式下启动辅助实例。
调用SQL*Plus 后,就会根据文本初始化参数文件创建服务器参数文件(SPFILE)。可以在
启动实例前后执行CREATE SPFILE。应该在默认位置创建SPFILE,这样不需要在
DUPLICATE命令中指定PFILE选项。RMAN 在复制过程中会关闭辅助实例,然后再重
新启动它。因此,如果不使用SPFILE,就必须指定PFILE选项。
• 在副本主机上必须能访问所有目标数据库数据文件的
备份。
• 备份可以是完全备份和增量备份的组合。
• 在副本主机上必须能访问恢复副本数据库所需的归档
重做日志文件。
• 归档重做日志文件可以是:
– 介质管理器上的备份
– 映像副本
– 实际的归档重做日志文件
确保备份和归档重做日志文件可用
在副本主机上必须能访问还原数据文件所需的备份。你并不需要完整的数据库备份。
RMAN 在复制过程中可使用单个数据文件的完全备份和增量备份的组合。
另外,还必须能访问将副本数据库恢复到期望的时间点所需的归档重做日志。这些归档重
做日志文件可以是备份、映像副本或实际的归档重做日志。备份或副本可传送到副本数据
库节点的本地磁盘上,或者通过网络文件系统(NFS) 之类的某种方式通过网络进行装载。
• 辅助通道指定RMAN 和辅助数据库实例之间的连接。
• 如果未配置自动通道,请分配辅助通道:
– 启动RMAN 时连接到目标数据库实例、辅助实例和恢复
目录(如果适用)。
– 在RUN块中分配至少一个辅助通道。
$ rman target sys/oracle_4U@trgt auxiliary
sys/oracle_4U@auxdb
RMAN> RUN
{
ALLOCATE AUXILIARY CHANNEL
aux1 DEVICE TYPE DISK;
ALLOCATE AUXILIARY CHANNEL aux2 DEVICE TYPE DISK;
…
DUPLICATE TARGET DATABASE to auxdb; . . .
分配辅助通道
如果未配置自动通道,请在发出DUPLICATE命令之前,至少手动分配一个辅助通道。
ALLOCATE AUXILIARY CHANNEL命令必须与DUPLICATE命令位于同一RUN块中。
ALLOCATE AUXILIARY CHANNEL命令中指定的通道类型必须与目标数据库备份所在
的介质相匹配。
• 如果备份驻留在磁盘上,则可分配多个通道以减少复制过程所花费的时间。
• 对于磁带备份,可以指定与可用设备数相对应的通道数。
必须使用NOMOUNT选项启动辅助实例,且目标数据库必须已装载或已打开。
当你执行DUPLICATE命令时,RMAN 会执行下列操作:
1A.为辅助实例创建服务器参数文件(对于活动数
据库和使用目标连接执行的基本备份的复制),或:
1B.从备份中还原(对于备用数据库和没有目标连接的基于
备份的复制)
2. 装载备份控制文件
3. 对于基于备份的复制:选择用于将数据文件还原到辅助
实例的备份
4. 将目标数据文件还原到副本数据库
5. 使用所有可用的增量备份和归档重做日志文件执行不完
全恢复
6. 关闭辅助实例并以NOMOUNT模式重新启动它
7. 新建一个控制文件,然后控制文件在数据文件中创建并
存储新的DBID
8. 通过RESETLOGS选项打开副本数据库
9. 为副本数据库创建联机重做日志文件
注:数据库复制过程在重新执行时尝试从故障点继续。
了解RMAN 复制操作
执行DUPLICATE命令时,RMAN 将执行示例中列出的操作。
1A.如果满足以下条件,RMAN 将为辅助实例创建默认服务器参数文件:
- 复制不涉及备用数据库。
- 不对服务器参数文件进行复制。
- 辅助实例不是使用服务器参数文件启动的。
1B. RMAN 从备份中还原-对于备用数据库和没有目标连接的基于备份的复制,始终
如此。
2. RMAN 从活动数据库装载已还原或复制的备份控制文件。
3.对于基于备份的复制:RMAN 使用RMAN 资料档案库选择用于将数据文件还原到辅
助实例的备份。
4. RMAN 还原并复制数据文件副本。
5. RMAN 使用增量备份和归档重做日志文件将数据文件恢复到非当前时间点。RMAN
必须执行数据库时间点恢复,即使不为复制提供显式时间点也是如此。因为源数据库
中的联机重做日志文件未备份且无法应用于副本数据库,所以时间点恢复是必需的。
副本数据库的最远恢复点是由源数据库归档的最近重做日志文件。
6. RMAN 关闭数据库实例并以NOMOUNT 模式重新启动它。
7. RMAN 新建一个控制文件,该控制文件然后在副本数据库的数据文件中创建并存储
新的唯一数据库标识符DBID。
8. RMAN 通过RESETLOGS选项打开副本数据库。
9. RMAN 为副本数据库创建联机重做日志文件。
注:如果DUPLICATE DATABASE命令失败,可重新执行DUPLICATE DATABASE命令,
复制过程尝试从故障点继续执行。
可以在DUPLICATE命令中指定下列选项:
指定DUPLICATE命令的选项
在执行DUPLICATE命令时根据需要指定其它选项。
SKIP READONLY:用于排除只读表空间数据文件。
SKIP TABLESPACE:用于从目标数据库中排除表空间。不能排除SYSTEM表空间或包含
还原段或回退段的表空间。
TABLESPACE:用来包括目标数据库中的表空间。
NOFILENAMECHECK:用于防止RMAN 检查目标数据库数据文件是否与正在使用的副本
数据库数据文件同名。当目标数据库和副本数据库的数据文件和重做日志文件使用相同的
名称时,必须指定此选项。当创建副本数据库的主机具有与目标数据库主机一样的磁盘配
置、目录结构和文件名时,通常使用此选项。如果这种情况下未指定NOFILENAMECHECK,
RMAN 会返回错误。
OPEN RESTRICTED:用于在数据库打开之后自动启用RESTRICTED SESSION。
使用其它DUPLICATE命令选项
Oracle Database 11g发行版2 中引入了DUPLICATE命令的以下其它选项:
• NOREDO:NOREDO选项用于向RMAN 发出信号,指出在复制操作的恢复阶段不应用
重做日志。在下列情况下应指定此选项:在备份时数据库处于NOARCHIVELOG模式,
或者在复制操作过程中归档重做日志文件不可用。如果当前处于ARCHIVELOG模式
的数据库正被复制到它在NOARCHIVELOG模式时的一个时间点,使用此选项非常
合适。
如果正在执行无目标DUPLICATE,且该数据库处于NOARCHIVELOG模式,则必须
使用此选项将数据库模式告知RMAN。如果未连接到目标数据库,RMAN 将无法确
定模式。
• UNDO TABLESPACE:在非整体数据库复制过程中,RMAN 会检查所复制的所有表
空间以确认不存在属于SYS用户的对象。SYSTEM、SYSAUX和还原段表空间不在此
检查的范围内。但是,如果复制过程中未打开目标数据库,且未使用恢复目录,
RMAN 将无法获取还原表空间的名称。所以必须使用UNDO TABLESPACE选项提供
还原段表空间的名称。
使用EM 克隆数据库
还可以使用Oracle Enterprise Manager (EM) 创建副本(克隆)数据库。从EM 主页,导航
到Data Movement > Clone database(数据移动> 克隆数据库)。屏幕快照将显示“Clone
Database: Source Type(克隆数据库: 源类型)”页面。
可以选择下列位置来执行克隆操作:
• 正在运行的实例:可以指定克隆一个正在运行的实例。
• 登台区:在源主机和目标主机上指定的磁盘区。在此处创建并存储备份,然后将其放
入目标登台区,并对该目标主机进行读取以创建克隆数据库。
• 现有备份:如果已有备份反映了要克隆的数据库所处的状态,则可以使用该位置。
• 列出创建副本数据库的目的
• 选择用于复制数据库的方法
• 使用RMAN 复制数据库
• 使用RMAN 备份复制数据库
• 基于正在运行的实例复制数据库