然后把这个initdg.ora拷到备库上,修改,主要加下面几个参数:
db_unique_name=s
log_archive_config='dg_config=(p,s)'(主备得一样,都得配)
log_archive_dest_1='location=use_db_recovery_file_dest valid_for=(all_logfiles,all_roles) db_unique_name=s'(如果主备库归档日志路径用的是FRA的话,就这么配)
fal_server='p'
fal_client='s'(配了这俩就不用手动处理gap了,不是绝对不用啊!)
log_archive_dest_2='service=p lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=p'
log_archive_dest_state_2=enable
standby_file_management='AUTO'(自动随着主库增删数据文件)
*.undo_tablespace='UNDOTBS1'
db_create_file_dest='' (这个要是准备用omf的话就这么配)
db_file_name_convert='(),()'
log_file_name_convert='(),()' (要是不用OMF的话,用这个,一个小括号里一对儿)
如果参数文件里面没写这些的话,备库数据文件路径跟主库又不一致,那就要在rman中用set new name for...
然后
startup nomount pfile='/home/oracle/initdg.ora'
create spfile='+data/' from pfile='/home/oracle/initdg.ora';
(如果要做dg集群,这里必须指定pfile的路径,不能直接写pfile)
shutdown
startup nomount
6.恢复控制文件,恢复数据库
rman target /
restore controlfile from '/home/oracle/yan/dg.ctl';
alter database mount;
catalog start with '/home/oracle/yan';(这里,你要是把备份放到跟主库一样的路径下就不用这么干,这么干就是为了让控制文件识别新的备份路径)
resotre database;(restore就够了)
exit;
7.添加standby log
查一下,主库每个线程有几个日志组,大小多大了:
select count(group#),thread#,bytes/1024/1024/1024
total_size_g from v$log group by thread#,bytes;

然后添加原则就是,每个线程都要添加standby log,每个线程的standby log日志组要比主库的每个线程的redolog日志组多一个,大小不能小于redolog日志组的大小。
这个在主库上也要添加(为了switch over)
alter database add standby logfile thread 1 '+data4' size 2G;
alter database add standby logfile thread 1 '+data4' size 2G;
alter database add standby logfile thread 1 '+data4' size 2G;
alter database add standby logfile thread 1 '+data4' size 2G;
alter database add standby logfile thread 1 '+data4' size 2G;
alter database add standby logfile thread 2 '+data4' size 2G;
alter database add standby logfile thread 2 '+data4' size 2G;
alter database add standby logfile thread 2 '+data4' size 2G;
alter database add standby logfile thread 2 '+data4' size 2G;
alter database add standby logfile thread 2 '+data4' size 2G;
alter database add standby logfile thread 3 '+data4' size 2G;
alter database add standby logfile thread 3 '+data4' size 2G;
alter database add standby logfile thread 3 '+data4' size 2G;
alter database add standby logfile thread 3 '+data4' size 2G;
alter database add standby logfile thread 3 '+data4' size 2G;
alter database add standby logfile thread 4 '+data4' size 2G;
alter database add standby logfile thread 4 '+data4' size 2G;
alter database add standby logfile thread 4 '+data4' size 2G;
alter database add standby logfile thread 4 '+data4' size 2G;
alter database add standby logfile thread 4 '+data4' size 2G;
8.设置主库参数
alter system set log_archive_config='dg_config=(p,s)';
(主备得一样,都得配)
alter system set log_archive_dest_1='location=use_db_recovery_file_dest valid_for=(all_logfiles,all_roles) db_unique_name=p';
(如果主备库归档日志路径用的是FRA的话,就这么配)
alter system set log_archive_dest_2='service=s lgwr async valid_for=(online_logfiles,primary_role) db_unique_name=s';
alter system set log_archive_dest_state_2=enable;
alter system set fal_server='s';
alter system set fal_client='p';
9.到备库应用日志
recover managed standby database using current logfile disconnect;
这就已经是个dg了,想等归档日志追上。
看日志也好,查
select max(sequence#),name,applied from v$archived_log;也行
反正就是等追上了,然后:
recover managed standby database cancel;
alter database open;
recover managed standby database using current logfile disconnect;
这就启动到adg了,12c还要:
alter pluggable database all open;
10.配置归档删除策略:
后面再说。