搭建rac+racdg

主库
# rac1
192.168.56.33           rac1
192.168.56.111         rac1-vip
10.10.10.1             rac1-priv
# rac2
192.168.56.44            rac2
192.168.56.112           rac2-vip
10.10.10.2             rac2-priv
# scan-ip
192.168.56.160            scan-ip


备库
# racdg1
192.168.56.77            racdg1
192.168.56.177            racdg1-vip
10.10.0.1             racdg1-priv
# racdg2
192.168.56.88            racdg2
192.168.56.188            racdg2-vip
10.10.0.2             racdg2-priv
# scan-ip
192.168.56.199            racdg-scan


主库添加standby redo

alter database add standby logfile thread 1
group 5('+DATA') size 50M,
group 6 ('+DATA') size 50M,
group 7 ('+DATA') size 50M;
alter database add standby logfile thread 2
group 8 ('+DATA') size 50M,
group 9 ('+DATA') size 50M,
group 10 ('+DATA') size 50M;

主库修改参数

alter database force logging;

alter system set db_file_name_convert='racdg','rac' scope=spfile sid='*';
alter system set fal_server='racdg' scope=spfile sid='*';
alter system set fal_client='rac' scope=spfile sid='*';
alter system set log_archive_config='dg_config=(rac,racdg)' scope=spfile sid='*'; 
ALTER SYSTEM SET LOG_ARCHIVE_DEST_1='LOCATION=+DATA/rac/archivelog  VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=rac' scope=both sid='*';
alter system set log_archive_dest_2='SERVICE=racdg LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=racdg' scope=spfile sid='*';
alter system set log_file_name_convert='racdg','rac' scope=spfile sid='*';
alter system set standby_file_management='auto' scope=spfile sid='*';
alter system set remote_login_passwordfile='exclusive' scope=spfile sid='*';

备库oracle用户添加临时静态监听文件

SID_LIST_LISTENER_dg =
(SID_LIST =

  (SID_DESC =
      (GLOBAL_DBNAME = racdg)
      (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME = racdg1)
   )
)

LISTENER_dg =
    (DESCRIPTION =
         (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.77)(PORT = 1522))
    )


启动静态监听

lsnrctl start LISTENER_dg


主库oracle两节点添加tns


rac =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS=(PROTOCOL= TCP)(HOST=192.168.56.160)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = rac)))

racdg =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS=(PROTOCOL = TCP)(HOST=192.168.56.199)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = racdg)))

dup =(DESCRIPTION =(ADDRESS=(PROTOCOL = TCP)(HOST=192.168.56.77)(PORT = 1522))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = racdg)))

备库oracle用户两节点添加tns


1节点

rac =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS=(PROTOCOL= TCP)(HOST=192.168.56.160)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = rac)))

racdg =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS=(PROTOCOL = TCP)(HOST=192.168.56.199)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = racdg)))


dup =(DESCRIPTION =(ADDRESS=(PROTOCOL = TCP)(HOST=192.168.56.77)(PORT = 1522))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = racdg)))
  
  
racdg_local_listener =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS=(PROTOCOL = TCP)(HOST=racdg1-vip)(PORT = 1521))))
2节点
rac =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS=(PROTOCOL= TCP)(HOST=192.168.56.160)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = rac)))

racdg =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS=(PROTOCOL = TCP)(HOST=192.168.56.199)(PORT = 1521)))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = racdg)))


dup =(DESCRIPTION =(ADDRESS=(PROTOCOL = TCP)(HOST=192.168.56.77)(PORT = 1522))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = racdg)))
  

racdg_local_listener =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS=(PROTOCOL = TCP)(HOST=racdg2-vip)(PORT = 1521))))


备库创建审计目录
mkdir -p /u01/app/oracle/admin/racdg/adump
scp传密码文件

备库参数文件


vi /tmp/pfile.ora
*.audit_file_dest='/u01/app/oracle/admin/racdg/adump'
*.control_files='+DATA/racdg/controlfile/stby.ctl'
*.cluster_database=TRUE
*.compatible='11.2.0.4.0'
*.db_block_size=8192
*.db_create_file_dest='+DATA'
*.db_domain=''
*.db_file_name_convert='rac','racdg'
*.db_name='rac'
*.db_unique_name='racdg'
*.diagnostic_dest='/u01/app/oracle'
*.dispatchers='(PROTOCOL=TCP) (SERVICE=orclXDB)'
*.fal_client='racdg'
*.fal_server='rac'
racdg1.instance_number=1
racdg2.instance_number=2
*.log_archive_config='DG_CONFIG=(racdg,rac)'
*.log_archive_dest_1='LOCATION=+DATA/rac/archivelog  VALID_FOR=(ALL_LOGFILES,ALL_ROLES) DB_UNIQUE_NAME=racdg'
*.log_archive_dest_2='SERVICE=rac   LGWR ASYNC NOAFFIRM VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=rac'
*.log_archive_dest_state_1='ENABLE'
*.log_archive_dest_state_2='ENABLE'
*.log_file_name_convert='rac','racdg'
*.open_cursors=300
*.pga_aggregate_target=4096m
*.processes=800
*.remote_login_passwordfile='exclusive'
*.sessions=885
*.sga_max_size=8192m
*.sga_target=8192m
*.standby_file_management='AUTO'
racdg2.thread=2
racdg1.thread=1
racdg2.undo_tablespace='UNDOTBS2'
racdg1.undo_tablespace='UNDOTBS1'
*.remote_listener='racdg-scan:1521'

启动备库到nomount

SQL>  startup nomount pfile='/tmp/pfile.ora';

主库 duplicate

rman target sys/oracle auxiliary sys/oracle@dup
RMAN>duplicate target database for standby from active database nofilenamecheck; 

备库启动mrp

alter database recover managed standby database using current logfile disconnect from session;

备库生成spfile

create spfile='+DATA/racdg/spfileracdg.ora' from pfile='/tmp/pfile.ora';


vi  initracdg1.ora
vi  initracdg2.ora
spfile='+DATA/racdg/spfileracdg.ora'

归档追平后使用spfile启动

startup
alter database recover managed standby database using current logfile disconnect from session;


集群添加资源

oracle用户
srvctl add database -d racdg -o /u01/app/oracle/product/11.2.0/dbhome_1
srvctl add instance -d racdg -i racdg1 -n racdg1
srvctl add instance -d racdg -i racdg2 -n racdg2
srvctl modify database -d racdg -r physical_standby -p '+DATA/racdg/spfileracdg.ora'
root用户
./crsctl modify res ora.racdg.db -attr AUTO_START=1
oracle用户
srvctl start database -d racdg

主备切换

主备库可切换状态
select inst_id,database_role,OPEN_MODE,switchover_status from  gv$database;
查看备库应用延迟状态
set linesize 120
col NAME for a25
col VALUE for a18
col UNIT for a30
col TIME_COMPUTED for a20
col DATUM_TIME for a20
select * from v$dataguard_stats;
查看备库日志应用情况
select L.thread#,max(l.sequence#) cur_seq#,max(al.sequence#) max_applied_seqs
from v$log l,V$ARCHIVED_LOG al
where l.thread#=al.thread# and
l.status='CURRENT' and al.applied='YES'
group by l.thread#
order by 1,2;
检查备库dg进程状态
select status,process from v$managed_standby;


主库切换为备库
ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY with session shutdown;


备库切换为主库

ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY with session shutdown;

启动备库
startup

开启备库实时应用
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE using current logfile DISCONNECT FROM SESSION;

主库open状态
alter database open;

---关闭备库实时应用
alter database recover managed standby database cancel;
 

发布了47 篇原创文章 · 获赞 5 · 访问量 6895

猜你喜欢

转载自blog.csdn.net/whb234174124/article/details/103899992
今日推荐