搭建Oracle Data Guard 11g(物理備用)

hooca發表於2014-12-20
OS:Oracle Linux 5u8 64bit
DB:11.2.0.4

可以參考另一篇博文:12c RAC下搭建物理備用 

建議使用ASM作為儲存,本次因故使用檔案系統。

準備工作:

1. Primary資料庫執行在歸檔模式,並啟用強制日誌。

點選(此處)摺疊或開啟

  1. ALTER DATABASE FORCE LOGGING;
  2. archive log list
2. 備用系統安裝RDBMS,不建立資料庫。

3. ASM(可選)

4. standby資料庫建立目錄(資料檔案、FRA、audit_trail所在目錄以及控制檔案所在的目錄,因為若目錄不存在,Oracle不會自動建立上層目錄)

5. standby資料庫配置監聽器並啟動(netca)

6. 所有系統配置TNSNAME,包含了自己和所有其他站點。

準備Standby系統:

1. 配置靜態監聽
listner.ora中加入

點選(此處)摺疊或開啟

  1. SID_LIST_LISTENER =
  2.   (SID_LIST =
  3.     (SID_DESC =
  4.       (SID_NAME = jiangsu)
  5.       (ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1)
  6.       (GLOBAL_DBNAME = jiangsu)
  7.     )
  8.   )
重啟監聽器

點選(此處)摺疊或開啟

  1. lsnrctl reload
2. 建立一個引數檔案用來啟動例項,只需包含DB_NAME,當用RMAN建立備用資料庫期間該檔案將被替換。

點選(此處)摺疊或開啟

  1. echo 'DB_NAME=WHATEVER' > $ORACLE_HOME/dbs/initjiangsu.ora
3. 複製Primary資料庫的密碼檔案到相應路徑,並修改檔名(注意大小寫,和ORACLE_SID一致)

4. 以pfile=initjiangsu.ora啟動例項到nomount

Primary資料庫準備
1. 建立SRL,數量要比線上日誌組多1,大小相同,不要複用。

點選(此處)摺疊或開啟

  1. alter database add standby logfile '/oradata/shanghai/standby01.log' size 50M;
  2. alter database add standby logfile '/oradata/shanghai/standby02.log' size 50M;
  3. alter database add standby logfile '/oradata/shanghai/standby03.log' size 50M;
  4. alter database add standby logfile '/oradata/shanghai/standby04.log' size 50M
用RMAN在Primary上建立Standby資料庫

注意下面第2行,connect target後一定要顯式寫出密碼,而不能用connect target /,否則會出現如下報錯:

ORA-01017: invalid username/password; logon denied

點選(此處)摺疊或開啟

  1. RMAN>
  2. connect target sys/oracle@shanghai
  3. connect auxiliary sys/oracle@jiangsu
  4. run { 
       allocate channel prmy1 type disk; 
       allocate channel prmy2 type disk; 
       allocate channel prmy3 type disk; 
       allocate channel prmy4 type disk; 
       allocate channel prmy5 type disk; 
       allocate auxiliary channel stby1 type disk; 
       duplicate target database for standby from active database 
         spfile 
            parameter_value_convert 'shanghai','jiangsu' 
            set 'db_unique_name'='jiangsu' 
            set control_files='/oradata/jiangsu/control01.ctl'
            set db_create_file_dest='/oradata' 
            set db_create_online_log_dest_1='/oradata' 
            set db_create_online_log_dest_2='/u01/app/oracle/fast_recovery_area'
    set db_recovery_file_dest='/u01/app/oracle/fast_recovery_area' 
            set DB_RECOVERY_FILE_DEST_SIZE='4G'  
  5.         set audit_file_dest='/u01/app/oracle/admin/jiangsu/adump'
  6.         set standby_archive_dest='+FRA'
  7.         set DB_FILE_NAME_CONVERT='/oradata/shanghai/','/oradata/jiangsu/'
                  set log_archive_max_processes='4'
                  set fal_client='jiangsu' 
                  set fal_server='shanghai' 
                  set standby_file_management='AUTO' 
                  set log_archive_config='dg_config=(shanghai,jiangsu)' 
                  set log_archive_dest_2='service=shanghai ASYNC 
                      valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE)
                      db_unique_name=shanghai'
    nofilenamecheck; 
               sql channel prmy1 "alter system set 
                           log_archive_config=''dg_config=(shanghai,jiangsu)''";
               sql channel prmy1 "alter system set
                           log_archive_dest_2=''service=jiangsu ASYNC
                           valid_for=(ONLINE_LOGFILES,PRIMARY_ROLE)
                           db_unique_name=jiangsu''";
               sql channel prmy1 "alter system set log_archive_max_processes=4"; 
               sql channel prmy1 "alter system set fal_client=shanghai"; 
               sql channel prmy1 "alter system set fal_server=jiangsu"; 
               sql channel prmy1 "alter system set standby_file_management=AUTO"; 
  8.            sql channel prmy1 "alter system archive log current"; 
               allocate auxiliary channel stby type disk; 
  9.            sql channel stby1 "alter database recover managed standby database
                                 using current logfile disconnect"; 
    }

2016.1.30新增
上例中如果Primary是RAC,Standby是單例項,則需注意以下:
由於Primary預設會將自身的引數傳遞給Standby,因此將會把cluster_database=TRUE傳遞給Standby,因此需顯式加上
set cluster_database='FALSE'
另外,有可能會報audit_file_dest無法建立的錯誤,因此最好事先建立好該目錄,並直接顯式加上
set audit_file_dest=''

2016.3.1 新增

set standby_archive_dest='+FRA'
不設定這個引數,備庫的歸檔路徑預設在?/dbs/arch

2016.6.13 新增
Primary端需要修改spfile引數並重啟:

點選(此處)摺疊或開啟

  1. alter system set DB_FILE_NAME_CONVERT='/oradata/jiangsu/','/oradata/shanghai/' scope=spfile;
2018.4.10 新增
當庫特別大且正在執行時,不可先以read only開啟庫,需要先執行DG,待同步後再取消同步-只讀開啟庫-重新同步。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22621861/viewspace-1374443/,如需轉載,請註明出處,否則將追究法律責任。

相關文章