搭建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;
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章