Oralce11gR2——RMAN复制数据库基础



1、RMAN复制数据库概述

1.1 RMAN复制的用途

a、测试备份与恢复

b、为数据库升级进行的测试

c、测试数据库性能

d、创建备库(Data Guard)

e、使用复制的数据库来生成报表

另外,如果使用操作系统命令拷贝数据库,那么数据库的DBID会相同,这样这两个数据库就不能注册到一个恢复目录中(RMAN是通过DBID来识别备份片的)。使用RMAN复制则会产生新的DBID。



1.2 RMAN复制的类型

RMAN支持两种复制类型,active database复制和基于备份的复制。

在基于备份的复制中,目标数据库(target)和目录数据库(catalog)都不是必须的。

a、Active Database Duplication

在这种方式下,RMAN连接目标数据库作为源数据库,并且连接辅助实例,RMAN拷贝源数据库的内容到辅助实例,过程中不需要备份存在。

b、Backup-Based Duplication

在这种方式下,RMAN通过已经存在的RMAN备份集或映象副本创建复制数据库,可以通过三种方式进行Backup-Based Duplication:

第一种方式不需要连接目标数据库,此时需要连接辅助数据库和目录数据库,直接从恢复目录中获取备份信息。

第二种方式即不需要连接目标数据库,也不需要恢复目录,只需要辅助数据库,RMAN直接通过备份的路径及备份文件来生成备份信息。

第三种方式连接目标数据库,此时从控制文件或者恢复目录中获得备份信息。



1.3 RMAN复制的内容

一个复制数据库可以与源数据库有相同的内容,也可以只包含源数据库的表空间的子集。

可以使用 TABLESPACE 选项复制指定的表空间,也可以使用 SKIP READONLY 选项不复制只读表空间。



1.4 RMAN复制的原理

在基于备份的复制中,复制的主要工作由辅助通道完成,辅助通道与在辅助实例上的服务器会话通信。

在active database复制中,主要工作由目标通道完成。

RMAN在复制时必须执行时间点恢复,因为联机日志文件不在备份中,而且也不能在复制过程中使用联机日志。但是可以使用归档日志进行恢复。

在复制的过程中,RMAN可能会自动执行下面的工作:

首先,RMAN会自动创建SPFILE。

然后,RMAN会从备份或active database中还原控制文件,并加载数据库。

在基于备份的复制过程中,此时RMAN会通过备份信息,还原数据文件,并通过增量备份和归档日志进行恢复。

然后,RMAN会关闭并重启辅助数据库到nomount状态,并重建控制文件,目的在于生成新的DBID。

最后,RMAN以RESETLOGS方式打开数据库并且创建联机日志。

总之,创建SPFILE,CONTROLFILE,ONLINE REDO LOG,以及生成新的DBID,RMAN都可以自动完成。



2、复制文件重命名

2.1 SET NEWNAME方法

在DUPLICATE命令之前,使用下面的语句重命名:

SET NEWNAME FOR DATAFILE and SET NEWNAME FROM TEMPFILE
SET NEWNAME FOR TABLESPACE
SET NEWNAME FOR DATABASE

下面三个例子描述了具体用法:

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;
}

RUN
{
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;
}

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;
}

其中格式化字符含义如下:

%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



2.2 CONFIGURE AUXNAME方法

下面的例子描述了具体用法:

在RMAN提示符中,输入下面命令来重命名数据文件:

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';

为了使这些设置在下次操作时不可用,完成复制过程之后需要CLEAR,具体方法见第五节的例子。



2.3 当辅助数据库采用OMF或ASM时

2.3.1 修改参数

2.3.1.1 复制到OMF要注意的参数

复制到OMF时,需要指定下面的参数

DB_CREATE_FILE_DEST:OMF默认的创建文件的路径。

DB_CREATE_ONLINE_LOG_DEST_n:OMF默认的参数文件和联机日志文件的路径。

DB_RECOVERY_FILE_DEST:快速恢复区的路径,控制文件及联机日志文件多路复用的路径。

复制到OMF时,不能指定下面的参数

CONTROL_FILES, DB_FILE_NAME_CONVERT, LOG_FILE_NAME_CONVERT

2.3.1.2 复制到ASM

下面是一个从非ASM数据库复制到ASM数据库的DUPLICATE语句:

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

这样复制数据库的数据文件、联机日志文件、控制文件都复制到了ASM的+DISK1磁盘组中。

下面是一个从ASM数据库复制到ASM数据库的DUPLICATE语句:

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

这样复制数据库的数据文件、联机日志文件、控制文件都复制到了一个更大的磁盘组+DISK2中了。

也可以使用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;
}

使用DB_FILE_NAME_CONVERT为Non-OMF或ASM命名

注意:不能在DUPLICATE中使用DB_FILE_NAME_CONVERT子句,来为OMF重命名(辅助数据库使用OMF的情况)。

使用LOG_FILE_NAME_CONVERT为Non-OMF或ASM重命名联机日志文件

注意:LOG_FILE_NAME_CONVERT不能作为DUPLICATE的子句,而只能作为参数文件中的参数;它同样不能为OMF重命名。


3、确保备份对于辅助实例可用

在基于备份的复制中,需要确保备份对于辅助实例可用。

官方文档说明如下:

Unless you are duplicating without a connection to the target and to the recovery catalog, the names of the backups must be available with the same names recorded in
the RMAN repository.

Ensure that auxiliary channels on the destination host can access all data file backups and archived redo log files (required to restore and recover the duplicate database to the desired point in time).

在使用target或目录连接来复制数据库时。必须确保备份名与RMAN信息库中的名称一致,并且辅助通道可以访问这些备份。换言之,辅助通道以RMAN信息库中的备份路径,寻找备份文件。



3.1 使SBT备份对于辅助实例可用

The steps in this task are specific to your media manager configuration.
To make SBT backups accessible to the auxiliary instance:
1. If necessary, install media management software on the destination host.
2. Make the tapes with the backups accessible to the destination host. Typically, you
do one of the following:
 Physically move the tapes to a drive attached to the remote host.
 Use a network-accessible tape server.

3. If necessary, inform the remote media management software about the existence of the tapes.



3.2 使磁盘备份对于辅助实例可用

3.2.1 对于不使用catalog和target连接的复制技术

当不使用catalog和target的连接时,这时候没有任何可用的RMAN备份信息。

If you do not connect to the target or recovery catalog, then you must designate a BACKUP LOCATION for the duplication.

对于既不连接到目标数据库,也不连接到目录数据库的复制技术,必须为复制指明备份位置。

When you use a BACKUP LOCATION, the backups and copies can reside in a shared location or can be moved to the BACKUP LOCATION on the destination host. In the latter
case, you do not need to preserve the name or the original path of the backup or copy.

当使用BACKUP LOCATION时,备份可以存在于共享位置,也可以移动到指定的BACKUP LOCATION,对于后者,不需要保持备份名与原始备份路径一致。

The location specified by the BACKUP LOCATION option must contain sufficient backup sets, image copies, and archived logs to restore all of the files being duplicated, and recover them to the desired point in time.

但是BACKUP LOCATION中必须包含复制所需的所有备份以及归档日志(归档日志也可以以backupset形式存在)。

If the backup location contains backup files from multiple databases, then the DATABASE clause must specify the name of the database that is to be duplicated.

如果BACKUP LOCATION中包含多个数据库的备份,那么复制语句的DATABASE子句中,必须指定要复制的数据库名。

3.2.2 不使用BACKUP LOCATION的情况(连接catalog或者target数据库)

3.2.2.1 直接使用备份的路径

如果auxiliary实例的服务器的文件系统和target数据库服务器的文件系统相同,可以使用FTP或NFS的方法,使辅助实例以相同的路径访问备份,例如:

target数据库的备份放在/dsk/dkp中,那么在auxiliary数据库的服务器上,也需要使辅助通道以同样的路径/dsk/dkp访问备份,可以通过FTP或NFS来实现,如创建NFS,使备份放在NFS中,再以相同的名称在辅助实例的服务器上挂在NFS。

3.2.2.2 使用新的路径

也可以把备份拷贝的新的路径,这时,同步RMAN备份信息是必要的,我们可以:

Connect RMAN to the source database as TARGET and use the BACKUP command to back up the backups, as explained in "Backing Up RMAN Backups" on page 9-26. For example, use the BACKUP COPY OF DATABASE command to copy the backups in /dsk1/bkp on the source host to /dsk2/dup on the source host. In this case, RMAN automatically catalogs the backups in the new location.

可以使用BACKUP BACKUPSET ALL来将备份集备份到其它路径,这样RMAN自动同步备份信息。

Use an operating system utility to transfer the backups to the new location.For example, use FTP to transfer the backups from /dsk1/bkp on the source host to /dsk2/dup on the destination host, or use the cp command to copy the backups from /dsk1/bkp on the source host to /dsk2/dup on the source host. Afterward, connect RMAN to the source database as TARGET and use the CATALOG command to update the RMAN repository with the location of the manually transferred backups.

如果使用操作系统拷贝,则需要使用CATALOG命令注册备份信息,例如使用下面的语句:

CATALOG START WITH '/disk1/backups/';

来注册该路径下的所有备份。



4、为辅助实例创建密码文件和初始化参数文件

为了远程访问,必须要有密码文件;而DUPLICATE需要辅助实例启动到nomount状态,我们也需要参数文件用来启动复制实例。



4.1 创建密码文件

4.1.1 重建密码文件

可以只用下面的命令重建密码文件

[oracle@localhost bin]$ orapwd file=$ORACLE_HOME/dbs/orapworcl password=admin

4.1.2 复制密码文件

也可以在duplicate语句中,指定PASSWORD FILE选项复制密码文件。



4.2 创建参数文件

可以手动创建PFILE参数文件,也可以让RMAN拷贝SPFILE,但是无论哪种方法都需要将辅助实例启动到nomount状态,因此手动创建参数文件是必须的(在拷贝的情况下PFILE中可以仅指定参数)。

4.2.1 手动创建参数文件

在UNIX或LINUX平台上参数文件默认位置为ORACLE_HOME/dbs/initORACLE_SID.ora,在WINDOWS平台上参数文件默认位置为ORACLE_HOME\database\initORACLE_SID.ora。

对于从备份或者ACTIVE DATABASE拷贝SPFILE的DUPLICATE,只要先创建一个最简单的参数文件即可,此时DB_NAME是唯一需要指定的参数,如:

DB_NAME=db1

4.2.2 复制参数文件

也可以在DUPLICATE语句中,指定SPFILE,让RMAN复制参数文件。即使如此也必须首先手动创建参数文件以让辅助实例启动到nomount状态。



5、例子

5.1 Duplicating from an Active Database to a Host with the Same Directory Structure

% rman
RMAN> CONNECT TARGET SYS@prod1
target database Password: password
connected to target database: PROD1 (DBID=39525561)
RMAN> CONNECT AUXILIARY SYS@dup1
auxiliary database Password: password
connected to auxiliary database: DUP1 (not mounted)
RMAN> DUPLICATE TARGET DATABASE TO dup1
2> FROM ACTIVE DATABASE
3> NOFILENAMECHECK
4> PASSWORD FILE
5> SPFILE;

5.2 Copying the Server Parameter File in Active Database Duplication

ALLOCATE CHANNEL tgt10 TYPE DISK;
ALLOCATE CHANNEL tgt20 TYPE DISK;
ALLOCATE CHANNEL tgt30 TYPE DISK;
ALLOCATE CHANNEL tgt40 TYPE DISK;
ALLOCATE AUXILIARY CHANNEL dup1 TYPE DISK;

DUPLICATE TARGET DATABASE
FOR STANDBY
FROM ACTIVE DATABASE
PASSWORD FILE
SPFILE
PARAMETER_VALUE_CONVERT '/disk1', '/disk2'
SET DB_FILE_NAME_CONVERT '/disk1','/disk2'
SET LOG_FILE_NAME_CONVERT '/disk1','/disk2'
SET DB_UNIQUE_NAME 'dup1'
SET SGA_MAX_SIZE 200M
SET SGA_TARGET 125M;

5.3 Duplicating a Database Without a Target Connection to a Host with the Same Directory Structure

% rman
RMAN> CONNECT CATALOG rman@catdb;
recovery catalog database Password: password
connected to recovery catalog database
RMAN> CONNECT AUXILIARY SYS@dupdb;
auxiliary database Password: password
connected to auxiliary database: DUPDB (not mounted)
RMAN> DUPLICATE DATABASE 'PROD' TO 'DUPDB' NOFILENAMECHECK;

5.4 Setting New File Names in the DUPLICATE Command

RUN
{
ALLOCATE AUXILIARY CHANNEL newdb DEVICE TYPE sbt;
DUPLICATE TARGET DATABASE TO newdb
PFILE ?/dbs/initNEWDB.ora
UNTIL TIME 'SYSDATE-1' # specifies incomplete recovery
SKIP TABLESPACE example, history # skip desired tablespaces
DB_FILE_NAME_CONVERT ('/h1/oracle/dbs/trgt/','/h2/oracle/oradata/newdb/')
LOGFILE
GROUP 1 ('/h2/oradata/newdb/redo01_1.f',
'/h2/oradata/newdb/redo01_2.f') SIZE 4M,
GROUP 2 ('/h2/oradata/newdb/redo02_1.f',
'/h2/oradata/newdb/redo02_2.f') SIZE 4M,
GROUP 3 ('/h2/oradata/newdb/redo03_1.f',
'/h2/oradata/newdb/redo03_2.f') SIZE 4M REUSE;
}

5.5 Using SET NEWNAME FOR DATABASE to Name Duplicate Files

RUN
{
SET NEWNAME FOR DATABASE TO '/oradata1/%b';
DUPLICATE TARGET DATABASE TO dupdb
LOGFILE
GROUP 1 ('/duplogs/redo01a.log',
'/duplogs/redo01b.log') SIZE 4M REUSE,
GROUP 2 ('/duplogs/redo02a.log',
'/duplogs/redo02b.log') SIZE 4M REUSE;
}

5.6 Using SET NEWNAME FOR DATAFILE and SET NEWNAME FOR TABLESPACE to Name Duplicate Files

RUN
{
SET NEWNAME FOR DATAFILE 1 TO '/oradata1/system01.dbf';
SET NEWNAME FOR DATAFILE 2 TO '/oradata2/undotbs01.dbf';
SET NEWNAME FOR DATAFILE 3 TO '/oradata3/cwmlite01.dbf';
SET NEWNAME FOR DATAFILE 4 TO '/oradata4/drsys01';
SET NEWNAME FOR DATAFILE 5 TO '/oradata5/example01.dbf';
# because the users tablespace contains 2 datafiles, the following command
# generates unique names for both datafiles, placing them in /oradata7
SET NEWNAME FOR TABLESPACE users TO '/oradata7/users%b.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;
}

5.7 Using SET NEWNAME FOR DATAFILE to Name Oracle-Managed Files

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;
}

5.8 Using CONFIGURE AUXNAME to Name Duplicate Files

CONFIGURE AUXNAME FOR DATAFILE 1 TO '/oradata1/system01.dbf';
CONFIGURE AUXNAME FOR DATAFILE 2 TO '/oradata2/undotbs01.dbf';
CONFIGURE AUXNAME FOR DATAFILE 3 TO '/oradata3/cwmlite01.dbf';
CONFIGURE AUXNAME FOR DATAFILE 4 TO '/oradata4/drsys01';
CONFIGURE AUXNAME FOR DATAFILE 5 TO '/oradata5/example01.dbf';
CONFIGURE AUXNAME FOR DATAFILE 6 TO '/oradata6/indx01.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;

CONFIGURE AUXNAME FOR DATAFILE 1 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 2 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 3 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 4 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 5 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 6 CLEAR;

5.9 Creating a Standby Database with the Same Directory Structure

CONFIGURE DEFAULT DEVICE TYPE sbt FOR DB_UNIQUE_NAME standby1;
CONFIGURE DEVICE TYPE sbt PARALLELISM 2 FOR DB_UNIQUE_NAME standby1;

DUPLICATE TARGET DATABASE FOR STANDBY
NOFILENAMECHECK;

5.10 Creating a Standby Database in OMF and ASM

CONFIGURE CONNECT IDENTIFIER "sby1" FOR DB_UNIQUE_NAME standby1;
CONFIGURE DEFAULT DEVICE TYPE TO sbt FOR DB_UNIQUE_NAME standby1;
CONFIGURE DEVICE TYPE sbt PARALLELISM 2 FOR DB_UNIQUE_NAME standby1;

DUPLICATE TARGET DATABASE FOR STANDBY;

5.11 Duplicating a Database Without Connection to Target Database and Recovery Catalog

DUPLICATE DATABASE TO 'TEST' BACKUP LOCATION '/net/prod/backups' NOFILENAMECHECK;

5.12 Selecting a Specific Database When Duplicating Without Connection to Target Database and Recovery Catalog

DUPLICATE DATABASE 'PROD' dbid 8675309 to 'TEST'
UNTIL TIME "to_date('11/01/2007', 'MM/DD/YYYY')"
BACKUP LOCATION '/backups' NOFILENAMECHECK
PFILE='?/dbs/inittest.ora' db_file_name_convert='prod','test';
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值