如果你看过三思之前的几个笔记系列,那么对于rman 想必已经非常熟悉,操作这个必然也不成问题,如果你还没有看过,建议你先回去看看,然后再回来操作必然也没有问题,如果你一定不准备看,没关系,只要你严格按照实践部分的步骤操作,我相信你一定也可以创建成功,操作应该也没有问题,不过如果这样你也觉着没有问题,那么我要告诉你,可能就这是最大的问题:不知道做过什么,不知道该做什么,不知道为什么要做,一旦需求稍变,你甚至什么都不敢做。
● RMAN 自动重命名OMF 的文件及路径结构。
● RMAN 修复归档日志文件并执行恢复以尽可能保证standby 与primary 数据一致相同。
另外在这里三思更明确的指出,使用RMAN 的duplicate 命令只能直接创建物理standby,幸还是不幸?
● 已经在primary 数据库设置了所有相关的初始化参数;
● 已经创建了standby 的初始化参数文件并配置了所有相关的初始化参数;
● 已经配置了实例,NetService,Listener 等;
● 启动standby 实例到nomount 状态;
1).RMAN> backup current controlfile for standby;
2).RMAN> copy current controlfile for standby to 'e:\ora10g\oradata\jssrman\JSSRMAN01.CTL';
等等,这些相关参数、命令的应用我们都在"Duplicate 复制数据库"系列中介绍并应用过,后面还会再次提及。
通常情况下,rman 创建完standby 之后不会自动执行recover。
1、RMAN 连接standby 与primary,及catalog(如果使用了的话);
2、检索catalog(nocatalog 的话是primary 数据库的控制文件),确定primary 的备份以及standby 控制文件;
3、如果使用介质恢复,RMAN 需要连接介质管理器以获取所需备份数据;
4、恢复standby 控制文件到standby 服务器;
5、恢复primary 数据库备份集中相应数据文件到standby 服务器;
6、rman 自动将standby 数据库打开到mount 状态,不过不会自动打开redo 应用。
7、在所有数据都restored 之后,rman 自动执行recovery,如果recovery 过程需要归档文件,但是这些文件又不在本地盘,则rman 会尝试从备份中获取。
8、rman 执行recovery 之前,你可以通过指定time,scn,logfile sequence 来确定recovery 的内容,如果什么都不指定,则rman 一直recover 到最后一个归档文件。
9、rman 自动将standby 数据库打开到mount 状态,同样也不会自动打开redo 应用。
基本上,可以分成二类:
duplicate 不同服务器相同目录结构创建standby 的操作极为简单, 你即不需要动用DB_FILE_NAME_CONVER/LOG_FILE_NAME_CONVERT之类参数,也不需要通过set newname之类命令,基本步骤如下:
2) 确认备份集中文件scn 大于或等于控制文件中的scn。
3) 如果需要,可以通过set 命令指定time,scn 或log 序号以执行不完全恢复。
例如:set until scn 152;
提示:注意如果有set,则set 与duplicate 必须在同一个run 命令块中。
4) 如果没有配置自动分配通道的话,需要手工指定至少一条辅助通道。
5) 务必指定nofilenamecheck 参数,我们之前"duplicate 复制数据库"系列中就曾提到过,异机操作路径相同还必需指定NOFILENAMECHECK。因为此处oracle 表现的很傻,它不知道你要恢复的路径是在另一台机器上,它只是认为要恢复到的路径怎么跟目标数据库表现的一样呢?会不会是要覆盖目标数据库啊,为了避免这种情形,于是它就报错。所以一旦异机恢复,并且路径相同,那么你必须通过指定NOFILENAMECHECK 来避免oracle 的自动识别。
sql> duplicate target database for standby nofilenamecheck dorecover;
注意,dorecover 并非是必须参数,如果你不指定的话,则duplicate 修复数据文件到服务器,并自动将standby 启动到mount 状态,不过并不会执行恢复操作。
对于不同目录结构创建standby(与是否同一台服务器就基本无关了),你需要对数据文件和日志文件路径重新定义,那你的选择可就多多了哟:
● 确保已设置standby 服务器中所有相关的初始化参数。
● 确认备份集中文件scn 大于或等于控制文件中的scn。
● 如果需要,可以通过set 命令指定time,scn 或log 序号以执行不完全恢复。
● 如果没有配置自动分配通道的话,需要手工指定至少一条辅助通道。
● 通过set newname 命令为standby 数据文件指定新路径
● 执行duplicate 命令。
RUN
{
# Set new file names for the datafiles
SET NEWNAME FOR DATAFILE 1 TO '?/dbs/standby_data_01.f';
SET NEWNAME FOR DATAFILE 2 TO '?/dbs/standby_data_02.f';
. . .
DUPLICATE TARGET DATABASE FOR STANDBY DORECOVER;
}
# set auxiliary names for the datafiles
CONFIGURE AUXNAME FOR DATAFILE 1 TO '/oracle/auxfiles/aux_1.f';
CONFIGURE AUXNAME FOR DATAFILE 2 TO '/oracle/auxfiles/aux_2.f';
. . .
CONFIGURE AUXNAME FOR DATAFILE n TO '/oracle/auxfiles/aux_n.f';
DUPLICATE TARGET DATABASE FOR STANDBY;
CONFIGURE AUXNAME FOR DATAFILE 1 CLEAR;
CONFIGURE AUXNAME FOR DATAFILE 2 CLEAR;
. . .
CONFIGURE AUXNAME FOR DATAFILE n CLEAR;
-The End-