部署dataguard时须要利用主库的备份建立容灾库,对于小库能够采用冷备方式,而对于大库,因作冷备致使过长的停机时间是不少企业没法容忍的。下面介绍在主库不关闭的状况下,作利用热备建立容灾库的方法。(不描述dg实施的细节,只针对主库热备及在容灾主机上作库恢复的方式)sql
一、主库热备数据库
主库已开启归档功能,在数据库open状态下作全备:session
Rman> run {rest
Sql ‘alter system archive log current’;日志
backup full database format '/data/backup/full_db_%U.bpk';部署
}get
注:这里不备份在线归档日志,后面作容灾库恢复时,直接从主库copy归档文件。io
二、容灾库建立登录
启动容灾库到mount状态:file
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;
}