oracle data guard的搭建

准备工作:
主库装好oracle软件,并建库,备库只装软件
修改hosts文件
关闭防火墙
 
主库:
开启force强制日志模式:
SQL>
alter database force logging;
select force_logging from v$database;
 
开启归档
主备库都要建立归档日志目录:mkdir  /u01/archivelog
SQL>
shutdown immediate;   
startup mount;
alter database archivelog;
alter database open;
alter system set log_archive_dest_1='location=/u01/archivelog/';
archive log list ;
 
查询主库状态:
SQL>
select instance_name,status from v$instance;
 
查询主库参数:
SQL>
show parameter name
 
修改主库的tnsnames.ora文件:
#
cd $ORACLE_HOME/network/admin
cat tnsnames.ora
 
DG1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = dg1)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DG1)
    )
  )
DG2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = dg2)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DG2)
      (UR = A)
    )
  )
 
将tnsname.ora传到备库
#
scp tnsname.ora dg2:$ORACLE_HOME/network/admin/
 
 
修改主库密码文件,并传到备库上:
#
cd $ORACLE_HOME/dbs
orapwd file=orapwdg password=redhat entries=3 force=y;
 
查询sid
env|grep ora
 
创建alert日志的软连接:
ln -s /u01/app/oracle/diag/rdbms/dg1/dg/trace/alert_dg.log /u01/alert.log
tailf /u01/alert.log
 
查询主库参数:
SQL> show parameter name;
 
修改主库参数,并传到备库:
alter system set log_archive_config='DG_CONFIG=(dg1,dg2)';
alter system set log_archive_dest_1="LOCATION=/u01/app/oracle/archivelog/ LGWR VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=DG1";
alter system set log_archive_dest_2="SERVICE=DG2 ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=DG2";
alter system set log_archive_dest_state_1=enable scope=both;
alter system set log_archive_dest_state_2=defer scope=both;
alter system set standby_file_management='AUTO';
alter system set fal_server=dg2 scope=both;
alter system set db_file_name_convert="/u01/app/oracle/oradata/dg1","/u01/app/oracle/oradata/dg1" scope=spfile;
alter system set log_file_name_convert="/u01/app/oracle/oradata/dg1","/u01/app/oracle/oradata/dg1" scope=spfile;
 
生成参数文件,并传给备库:
SQL>
create  pfile  from  spfile;
#
scp  $ORACLE_HOME/dbs/initdg.ora  dg2:$ORACLE_HOME/dbs/
 
全量备份主库:
#
主备库都要建立备份目录mkdir /u01/rmanbak/
rman  target  /
 
run
{
allocate channel c0 device type disk;
allocate channel c1 device type disk;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/rmanbak/%F';
backup database format '/u01/rmanbak/ora11g_full_db_%d_%T_%u.bak';
BACKUP ARCHIVELOG ALL FORMAT '/u01/rmanbak/ora11g_arc_%s_%p_%t.bak';
}
 
查询是否有控制文件的备份:
list backup of controfile;
 
将备份文件传输的备库:
scp  /u01/rmanbak/* dg2:/u01/rmanbak/
 
 
备库:
 
编辑备库参数文件:
此处应添加db_unique_name=DG2
其他几个按需要改。
 
备库启动监听:
lsnrctl   start
 
链接alert日志:
ln -s /u01/app/oracle/diag/rdbms/dg1/dg/trace/alert_dg.log /u01/alert.log
 
开启备库到nomount
SQL>
startup nomout;
!lsnrctl status
 
主库操作:
rman   target  /
connect auxiliary sys/redhat@dg2
duplicate target database for standby nofilenamecheck;
过程中持续看alert日志,若报错,则是initdg.ora文件参数设置问题,修改后,重新开始,若还不行,则用下面的命令
duplicate target database for standby nofilenamecheck;
 
添加主备库的standby日志
alter database add standby logfile group  11 '/u01/app/oracle/oradata/dg1/standby11.log' size 300M;
alter database add standby logfile group  12 '/u01/app/oracle/oradata/dg1/standby12.log' size 300M;
alter database add standby logfile group  13 '/u01/app/oracle/oradata/dg1/standby13.log' size 300M;
alter database add standby logfile group  14 '/u01/app/oracle/oradata/dg1/standby14.log' size 300M;
alter database add standby logfile group  15 '/u01/app/oracle/oradata/dg1/standby15.log' size 300M;
查询:
SQL> select member from v$logfile ;
查询主备库:
select database_role from v$database;
 
 
主库开启日志:
SQL>
show parameter log_archive_dest_state_;
alter system set log_archive_dest_state_2=enable scope=both;
 
开启备库
SQL>
alter database recover managed standby database using current logfile disconnect from session;
alter database recover managed standby database cancel;
alter database open;
alter database recover managed standby database using current logfile disconnect from session;
 
测试:
主库添加
SQL>
create table  t1 (id int);
insert into t1 values(2);
commit;
归档一份日志
alter system switch logfile;
 
posted @ 2018-04-24 11:24  caibaofei  阅读(151)  评论(0编辑  收藏  举报