RAC+單節點搭建DG


primary RAC to single standby

參考文獻:
RAC+單實例DATAGUARD 配置   http://blog.csdn.net/miyatang/article/details/9979579

配置要點
rac為主時:
    rac中的每個實例都需要配置傳輸日志
單節點為主時:
    向rac中的其中一個節點傳輸日志
    在rac中的其中一個節點上啟動MRP進程

創建standby redo log 日志組
RAC中的每個thread都需要創建對應的standby redo log。創建原則和單實例一樣:
--在主庫創建standbylogfile是便於發生角色轉換后備用?
--sandby redo log創建原則:?
--a)、確保standbyredo log的大小與主庫online redolog的大小一致???
--b)、如主庫為單實例數據庫:standbyredo log組數=主庫日志組總數+1?
--c)、如果主庫是RAC數據庫:standby redo log組數=(每線程的日志組數+1)*線程數?
--d)、不建議復用standbyredo log,避免增加額外的I/O以及延緩重做傳輸?

查看rac中聯機日志
SQL> select thread#,group#,members,bytes/1024/1024 from v$log;

   THREAD#     GROUP#    MEMBERS BYTES/1024/1024
---------- ---------- ---------- ---------------
         1          1          1              50
         1          2          1              50
         2          3          1              50
         2          4          1              50
         
SQL> select GROUP#,STATUS,TYPE,MEMBER from v$logfile;

    GROUP# STATUS  TYPE    MEMBER
---------- ------- ------- ------------------------------------------------------------
         2         ONLINE  +DATA/paydb/onlinelog/group_2.262.927484759
         1         ONLINE  +DATA/paydb/onlinelog/group_1.261.927484751
         3         ONLINE  +DATA/paydb/onlinelog/group_3.266.927485173
         4         ONLINE  +DATA/paydb/onlinelog/group_4.267.927485181
         
RAC有兩個redo thread,每個thread有兩個日志組,每個日志組有一個日志文件,文件大小為50M,所以要針對每個thread需要3組standby redo,大小為50M
創建6個日志組,每個日志組有一個日志文件

單實例standby:
alter database add standby logfile thread 1 group 5('/data0/u01/app/data/oradata/orcl11g/standby_redo05.log') size 50m;
alter database add standby logfile thread 1 group 6('/data0/u01/app/data/oradata/orcl11g/standby_redo06.log') size 50m;
alter database add standby logfile thread 1 group 7('/data0/u01/app/data/oradata/orcl11g/standby_redo07.log') size 50m;
alter database add standby logfile thread 2 group 8('/data0/u01/app/data/oradata/orcl11g/standby_redo08.log') size 50m;
alter database add standby logfile thread 2 group 9('/data0/u01/app/data/oradata/orcl11g/standby_redo09.log') size 50m;
alter database add standby logfile thread 2 group 10('/data0/u01/app/data/oradata/orcl11g/standby_redo10.log') size 50m;

primary rac下:
alter database add standby logfile thread 1 group 5 size 50M,group 6 size 50M ,group 7 size 50M ;
alter database add standby logfile thread 2 group 8 size 50M,group 9 size 50M ,group 10 size 50M ;

監聽配置
將10.100.211.250 db-scan 加入standby的hosts文件
靜態注冊監聽
standby:
[oracle@test02 admin]$ cat listener.ora
LISTENER =
  (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(Host = 10.100.211.30)(Port = 1521))
  )


SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = orcl11g)
      (ORACLE_HOME = /data0/u01/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME = orcl)
    )
  )
rac已自動注冊了動態監聽,監聽scan-ip:1521,無需再靜態注冊(創建listener.ora文件)
rac兩節點和單節點standby上tnsname.ora一致
[oracle@test02 admin]$ cat tnsnames.ora                                                                                                                              
PAYDB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = db-scan)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = paydb)
    )
  )
SIGDB =   
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.100.211.30)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl11g)
    )
  )
 
每個節點上檢查:
    tnsping SIGDB   
    tnsping PAYDB   

參數配置
數據文件目錄和歸檔日志文件目錄查看:
rac:
SQL> select file#,name from v$datafile;

     FILE# NAME
---------- ------------------------------------------------------------
         1 +DATA/paydb/datafile/system.256.927484413
         2 +DATA/paydb/datafile/sysaux.257.927484413
         3 +DATA/paydb/datafile/undotbs1.258.927484415
         4 +DATA/paydb/datafile/users.259.927484415
         5 +DATA/paydb/datafile/example.264.927484777
         6 +DATA/paydb/datafile/undotbs2.265.927485095
         7 +DATA/paydb/datafile/paybiz01.dbf
歸檔日志目錄:
log_archive_dest_1                   string      LOCATION=+DATA/archlog
standby 單節點
SQL> select file#,name from v$datafile;   

     FILE# NAME
---------- ------------------------------------------------------------
         1 /data0/u01/app/data/oradata/orcl11g/system01.dbf
         2 /data0/u01/app/data/oradata/orcl11g/sysaux01.dbf
         3 /data0/u01/app/data/oradata/orcl11g/undotbs01.dbf
         4 /data0/u01/app/data/oradata/orcl11g/users01.dbf
         5 /data0/u01/app/oracle/product/11.2.0/dbhome_1/dbs/catlog01.d
           bf
歸檔日志目錄:
log_archive_dest_1                   string      location=/data0/arch        

primary rac上操作:
alter database force logging;

ALTER SYSTEM SET LOG_ARCHIVE_CONFIG='DG_CONFIG=(paydb,orcl11g)';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_2='SERVICE=SIGDB ASYNC LGWR VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) DB_UNIQUE_NAME=orcl11g';
ALTER SYSTEM SET LOG_ARCHIVE_DEST_STATE_2=ENABLE;
ALTER SYSTEM SET FAL_SERVER=SIGDB;
ALTER SYSTEM SET FAL_SERVER=PAYDB;
ALTER SYSTEM SET DB_FILE_NAME_CONVERT='/data0/u01/app/data/oradata/orcl11g/','+DATA/paydb/datafile/' SCOPE=SPFILE;
ALTER SYSTEM SET LOG_FILE_NAME_CONVERT='/data0/arch','+DATA/archlog'  SCOPE=SPFILE;
ALTER SYSTEM SET STANDBY_FILE_MANAGEMENT=AUTO;

在線創建物理備機
將primary的口令文件、參數文件scp到standby,並對參數文件進行修改,重命名為init$sid.ora
standby操作:
    create spfile from pfile
    startup nomount
rac上操作:
rman TARGET sys/oracle@PAYDB AUXILIARY sys/oracle@SIGDB

DUPLICATE TARGET DATABASE
  FOR STANDBY
  FROM ACTIVE DATABASE nofilenamecheck;

會在線備份數據文件、控制文件、tempfile、redo logfile恢復到從庫

創建完physical standby 后會自動啟動到mount
創建standby redo logfile
 

==========================
DG Broker
https://docs.oracle.com/cd/B28359_01/server.111/b28295/configure.htm#CFHICBJH

查看磁盤:
select dg.name,DGName, INSTANCE_NAME, DB_NAME,STATUS, from Gv$asm_diskgroup dg ;

用於管理dg的工具,會在所有的主備庫通過自己的DMON進程和配置文件進行通信,可以配置dg或管理已配置好的dg及監控dg狀態
支持primary和standby是單實例或rac,支持一主多從,從的個數上限是9個
會在主和從上啟動DMON進程,通過參數DG_BROKER_START 控制是否啟動dg broker,此參數默認是false,不啟動
broker的配置文件是二進制文件,有默認的路徑;允許有多份,通過指定參數DG_BROKER_CONFIG_FILEn來進行創建配置文件;如果是RAC環境,每個實例都要有Broker配置文件,放在共享存儲上;

配置DG Broker
SQL> show parameter broker;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
dg_broker_config_file1               string      /data0/u01/app/oracle/product/
                                                 11.2.0/dbhome_1/dbs/dr1orcl02.
                                                 dat
dg_broker_config_file2               string      /data0/u01/app/oracle/product/
                                                 11.2.0/dbhome_1/dbs/dr2orcl02.
                                                 dat
dg_broker_start                      boolean     FALSE

SQL> alter system set dg_broker_config_file1='+DATA/dr1orcl11g.dat';
SQL> alter system set dg_broker_config_file2='+DATA/dr2orcl11g.dat';
開啟dg broker
SQL> alter system set dg_broker_start=true;
連接到主庫
DGMGRL> connect sys/oracle@PAYDB
創建配置文件
DGMGRL> help create
DGMGRL> CREATE CONFIGURATION primary AS PRIMARY DATABASE IS paydb CONNECT IDENTIFIER IS PAYDB;
Configuration "primary" created with primary database "paydb"
條件備庫配置
ADD DATABASE <database name>  ====db_unique_name
    [AS CONNECT IDENTIFIER IS <connect identifier>]
    [MAINTAINED AS {PHYSICAL|LOGICAL}];

DGMGRL> ADD DATABASE orcl11g AS CONNECT IDENTIFIER IS SIGDB MAINTAINED AS PHYSICAL;
Database "orcl11g" added
DGMGRL> enable configuration;


===
rac 修改參數文件
如果我們直接使用: create pfile from spfile 命令穿件pfile,那么生成的pfile 文件將覆蓋原有$ORACLE_HOME/dbs 目錄下的pfile 文件。 而在之前的pfile文件里面值保留了一條指向spfile存放位置的記錄。 這樣修改之后,就會造成數據庫啟動時會因為找不到spfile文件而讀取本地的pfile文件,而不是共享設備上的spfile文件。這樣對參數管理上就會帶來麻煩,也帶來其他的隱患。
正確做法
SQL> create pfile='/data0/app/oracle/initpaydb.ora' from spfile;
修改后
SQL> create spfile='+DATA/paydb/spfilepaydb.ora' from  pfile='/data0/app/oracle/initpaydb.ora'

主從(physical standby)切換:
switchover
    原主庫會重啟成為新的備庫
    為參與switchover的其他的備庫會接受並應用來自新的主庫的redo log
broker的行為:
    主庫或備庫如果是rac,只會保證一個實例啟動,其他的實例均關閉,如果無法關閉則需要手工關閉
    首先將主庫切換為備,將目標備庫切換為主
    修改不broker的配置文件
    重啟新備庫,應用redo,如果原主庫是rac,重啟在switchover之前關閉的實例
    將新的主庫啟動到讀寫狀態,如果原備庫是rac,則重啟在switchover之前關閉的實例
failover
兩種模式complete和immediate,前者是在備庫應用完日志之后再進行切換,后者是直接切換
    如果目標備庫是rac,broker將會指示CRS關閉除應用日志的實例之外的其他實例,如果關閉失敗,則需要手動關閉,然后再次執行難failover命令;
    在failover期間不可以打開任何新的實例
    broker會指示CRS重啟在failover前關閉的其他的實例
    更改保護模式:
        如果failover前的數據庫保護模式是maximum protection,則在failover后被重置為maximum performance
        maximum protection:
            在事務提交之前會保證將事務變更信息寫到online redo log,並保證同步到至少一個備庫上,保證數據0丟失
        maximum performance:
            在事務提交之前會將事務變更信息寫到online redo log 然后提交,然后再同步到從庫,主庫down掉后不能保證數據不丟失
        
DGMGRL> FAILOVER TO database-name [IMMEDIATE];


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM