一:環(huán)境介紹
primary數據庫(單實(shí)例環(huán)境)
IP:192.168.1.49/24
操作系統版本:rhel5.4 64位
數據庫版本:10.2.0.5
physical standby數據庫(rac環(huán)境,2個(gè)節點(diǎn))
節點(diǎn)1 IP:192.168.1.41/24
節點(diǎn)2 IP:192.168.1.42/24
操作系統版本:centos4.8 64位
數據庫版本:10.2.0.5
二:配置primary數據庫的tnsnames.ora文件以及dataguard相關(guān)的設置,由于即將構建的備庫為rac環(huán)境,因而需要增加undotbs2表空間和thread 2日志組
[oracle@server49 ~]$ cd $ORACLE_HOME/network/admin STANDBY = SQL> show parameter name; NAME TYPE VALUE
NAME OPEN_MODE LOG_MODE FOR SQL> alter database force logging; SQL> select bytes/(1024*1024) MB,autoextensible from dba_data_files where tablespace_name='UNDOTBS1'; MB AUT SQL> create undo tablespace undotbs2 datafile '/u01/app/oracle/oradata/orcl/undotbs02.dbf' size 30M autoextend on maxsize 10G; SQL> select bytes/(1024*1024) MB,autoextensible from dba_data_files where tablespace_name in ('UNDOTBS1','UNDOTBS2'); MB AUT QL> select a.group#,a.member,b.bytes/(1024*1024) MB,b.thread# from v$logfile a,v$log b where a.group#=b.group#; GROUP# MEMBER MB THREAD# SQL> alter database add logfile thread 2 group 4 '/u01/app/oracle/oradata/orcl/redo04.log' size 50M; SQL> alter database add logfile thread 2 group 5 '/u01/app/oracle/oradata/orcl/redo05.log' size 50M; SQL> alter database add logfile thread 2 group 6 '/u01/app/oracle/oradata/orcl/redo06.log' size 50M; SQL> select a.group#,a.member,b.bytes/(1024*1024) MB,b.thread# from v$logfile a,v$log b where a.group#=b.group#; GROUP# MEMBER MB THREAD# SQL> alter database enable thread 2; SQL> alter system set log_archive_config='DG_CONFIG=(PRIMARY,STANDBY)'; SQL> archive log list; SQL> !mkdir -p /u01/app/oracle/archive_log SQL> alter system set log_archive_dest_2='SERVICE=standby LGWR ASYNC VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=standby'; SQL> alter system set fal_server=standby; SQL> alter system set fal_client=primary; SQL> alter system set standby_file_management=auto; |
三:在primar庫上生成pfile,并使用rman備份數據庫,將備份的數據復制到rac節點(diǎn)1上
SQL> create pfile='/home/oracle/rman_bak/initorcl.ora' from spfile; [oracle@server49 ~]$ rman target / RMAN> run { RMAN> backup format '/home/oracle/rman_bak/control01.ctl' current controlfile for standby; |
四:standby(節點(diǎn)1)數據庫上,同樣配置tnsnames.ora文件,創(chuàng )建密碼文件,修改參數文件
[oracle@rac1 ~]$ cat $ORACLE_HOME/network/admin/tnsnames.ora ORCL2 = ORCL = LISTENERS_ORCL = STANDBY = [oracle@rac1 ~]$ crs_stat -t -v [oracle@rac1 ~]$ orapwd file=$ORACLE_HOME/dbs/orapworcl1 password=123456 |
[oracle@rac1 ~]$ sqlplus /nolog Total System Global Area 213909504 bytes SQL> create spfile='+DATA/ORCL/PARAMETERFILE/SPFILEORCL1.ORA' from pfile='/home/oracle/rman_bak/initorcl.ora'; |
[oracle@rac1 ~]$ rman target / ASMCMD> pwd |
[oracle@rac1 ~]$ rman target sys/123456@primary auxiliary / RMAN> duplicate target database for standby; [oracle@rac1 ~]$ rman target / RMAN> report schema; Starting implicit crosscheck backup at 2012-01-09 15:35:29 Starting implicit crosscheck copy at 2012-01-09 15:35:31 searching for all files in the recovery area RMAN-06139: WARNING: control file is not current for REPORT SCHEMA List of Permanent Datafiles List of Temporary Files ASMCMD> pwd |
八:?jiǎn)?dòng)節點(diǎn)1數據庫到應用日志模式下,中間若出現歸檔日志的gap,則需要在主庫上restore相應的歸檔日志文件
[oracle@rac1 ~]$ sqlplus /nolog SQL> conn /as sysdba SQL> alter database recover managed standby database disconnect from session; SQL> select name,database_role from gv$database; NAME DATABASE_ROLE
FIRST_TIME NEXT_TIME SEQUENCE# APPLIED [oracle@rac1 ~]$ tail -f /u01/app/oracle/admin/orcl/bdump/alert_orcl1.log primary數據庫操作: [oracle@server49 ~]$ sqlplus /nolog SQL> conn /as sysdba [oracle@rac1 ~]$ tail -f /u01/app/oracle/admin/orcl/bdump/alert_orcl1.log SQL>select first_time,next_time,sequence#,applied from v$archived_log; FIRST_TIME NEXT_TIME SEQUENCE# APPLIED primary數據庫操作: 節點(diǎn)1數據庫繼續查詢(xún): FIRST_TIME NEXT_TIME SEQUENCE# APPLIED 上述過(guò)程沒(méi)有問(wèn)題后,就可以啟動(dòng)節點(diǎn)2的數據庫實(shí)例到mount狀態(tài)! NAME DB_UNIQUE_ OPEN_MODE DATABASE_ROLE 最后確定下主庫和備庫的日志傳輸和應用狀況是否正常!
FIRST_TIME NEXT_TIME SEQUENCE# APPLIED THREAD# FIRST_TIME NEXT_TIME SEQUENCE# APPLIED THREAD#
NAME DB_UNIQUE_NAME DATABASE_ROLE SWITCHOVER_STATUS |
在前面的章節中,完成了單實(shí)例主庫和rac物理備庫的環(huán)境的構建,本節中將介紹下如何完成主備庫的手動(dòng)角色切換,在這個(gè)場(chǎng)合如果使用data guard broker進(jìn)行切換,會(huì )由于crs的原因而切換失敗,因為數據庫還未向crs進(jìn)行注冊,回顧下在rac環(huán)境上的使用data guard broker的使用條件:在rac環(huán)境下還需要配置DB_BROKER_CONFIG_FILEn參數,將該參數指定共享存儲上,需要在OCR中要設定start_options參數為mount;因而在本例中必須采用手動(dòng)切換,在開(kāi)始之前,需要確保主庫和備庫的日志應用正常!
一:查看主庫和備庫的switchover狀態(tài),同時(shí)關(guān)閉節點(diǎn)2數據庫
SQL> select name,db_unique_name,open_mode,database_role,switchover_status from gv$database; NAME DB_UNIQUE_NAME OPEN_MODE DATABASE_ROLE SWITCHOVER_STAT [oracle@rac2 ~]$ sqlplus /nolog SQL> select name,db_unique_name,open_mode,database_role,switchover_status from gv$database; NAME DB_UNIQUE_ OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS |
二:primary數據庫庫上運行下列的命令后,重新將數據庫啟動(dòng)到mount狀態(tài),并開(kāi)啟應用日志模式
SQL> alter database commit to switchover to physical standby with session shutdown; SQL> shutdown immediate SQL> startup mount SQL> select name,db_unique_name,open_mode,database_role,switchover_status from gv$database; NAME DB_UNIQUE_NAME OPEN_MODE DATABASE_ROLE SWITCHOVER_STAT SQL> alter database recover managed standby database cancel; |
三:將standby數據庫轉換為主庫,出現下面的錯誤信息,需要手動(dòng)rename下在線(xiàn)日志組
SQL> alter database commit to switchover to primary; SQL> alter system set db_create_file_dest='+DATA'; SQL> alter system set db_create_online_log_dest_1='+DATA'; SQL> alter system set standby_file_management=manual; SQL> alter database rename file '/u01/app/oracle/oradata/orcl/redo01.log' to '+DATA/ORCL/ONLINELOG/redo01.log'; SQL> alter system set standby_file_management=auto; SQL> alter database commit to switchover to primary; SQL> alter database open; SQL> select name,db_unique_name,open_mode,database_role,switchover_status from gv$database; NAME DB_UNIQUE_ OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS SQL> alter database recover managed standby database disconnect from session; SQL> select name,db_unique_name,open_mode,database_role,switchover_status from gv$database; NAME DB_UNIQUE_NAME OPEN_MODE DATABASE_ROLE SWITCHOVER_STAT |
[root@rac2 ~]# su - oracle SQL> conn /as sysdba Total System Global Area 213909504 bytes |
SQL> select name,db_unique_name,open_mode,database_role,switchover_status from gv$database; NAME DB_UNIQUE_ OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS
OWNER TABLE_NAME SQL> select count(*) from test1.source; COUNT(*) SQL> select count(*) from test1.migrate; COUNT(*) SQL> select count(*) from test2.source2; COUNT(*) 節點(diǎn)1數據庫實(shí)例: 節點(diǎn)2數據庫實(shí)例: 備庫: FIRST_TIME NEXT_TIME SEQUENCE# APP THREAD# FIRST_TIME NEXT_TIME SEQUENCE# APP THREAD# SQL> select first_time,next_time,sequence#,applied,thread# from v$archived_log where thread#=2 and sequence# >20 ; FIRST_TIME NEXT_TIME SEQUENCE# APP THREAD# 主庫上切換日志測試日志是否能成功應用到備庫 SQL> alter system archive log current; 備庫查詢(xún): FIRST_TIME NEXT_TIME SEQUENCE# APP THREAD#
FIRST_TIME NEXT_TIME SEQUENCE# APP THREAD# FIRST_TIME NEXT_TIME SEQUENCE# APP THREAD# 主庫建表測試,同時(shí)切換日志 SQL> alter system archive log current; 備庫的alert日志摘要信息 將備庫啟動(dòng)到只讀狀態(tài),查看數據 SQL> alter database open read only; SQL> select * from test1.maa; A SQL> alter database recover managed standby database disconnect from session; |
六:收尾工作
SQL> @$ORACLE_HOME/rdbms/admin/catclust.sql; [oracle@rac1 ~]$ srvctl add database -d orcl -o $ORACLE_HOME |
聯(lián)系客服