部署dataguard时需要利用主库的备份创建容灾库,对于小库可以采用冷备方式,而对于大库,因做冷备导致过长的停机时间是很多企业无法容忍的。下面介绍在主库不关闭的情况下,做利用热备创建容灾库的方法。(不描述dg实施的细节,只针对主库热备及在容灾主机上做库恢复的方式)
1、主库热备
主库已开启归档功能,在数据库open状态下做全备:
Rman> run {
Sql ‘alter system archive log current’;
backup full database format '/data/backup/full_db_%U.bpk';
}
注:这里不备份在线归档日志,后面做容灾库恢复时,直接从主库copy归档文件。
2、容灾库创建
启动容灾库到mount状态:
sql> startup mount;
利用之前主库热备文件还原数据文件:
rman> restore database;
由于目前容灾库状态落后于主库,需要利用主库归档日志文件做recover,以实现状态一致。
需要确定要从主库复制哪些用于恢复的归档文件。
检查还原后datafile的checkpoint_change#
sql> select checkpoint_change# from v$datafile_header;
513326
那么主库上checkpoint在513326之后的归档日志文件都需要复制到容灾库,用于恢复。
登录主库,确定需要复制的归档文件:
sql> Select sequence,first_change#,next_change#,name from v$archived_log where first_change#>=513326;
将文件复制容灾库:
$ scp arch*log 容灾主机:/archive/
在容灾库上做日志恢复:
Sql> recover automatic standby database;
输入auto,恢复到最新的归档文件。
Sql> recover automatic standby database;
输入cancel,提示恢复成功。
sql> alter database open; #可以正常打开
sql> recover managed standby database cancel;
sql> recover managed standby database disconnect from session; #进入日志恢复状态
至此,在生产数据库不中断的情况下,完成了容灾数据库的创建。
还可以使用以下方式实现
rman >duplicate target database for standby
另外,11g可以不用对主库进行备份,就可以创建dataguard.
11g 不用对主库进行备份,就可以创建dg,具体的命令为:
run
{
allocate channel c1 type disk;
allocate auxiliary channel c2 type disk;
duplicate target database for standby from active database nofilenamecheck;
}