建立 Data Guard 的待命資料庫

主要資料庫為 Data Guard 做好準備後,即可複製到待命站點。以下指南會使用主動複製功能,建立資料庫的一致副本。

提醒您,以下範例會在本指南中使用:

資料庫專屬名稱 伺服器主機名稱 RAC 執行個體名稱 角色
DBDG_SITE1 site1db1site1db2 DBDG_SITE11DBDG_SITE12 主要
DBDG_SITE2 site2db1site2db2 DBDG_SITE21DBDG_SITE22 待命

本指南中執行 Oracle 的 Bare Metal 解決方案伺服器,已設定下列環境變數:

環境變數名稱
ORACLE_BASE /apps/oracle/oracle_base
ORACLE_HOME /apps/oracle/19.0.0/db_home1

視設定而定,您可能需要修改環境變數路徑。

設定待命資料庫

設定資料庫連線

登入待命位置中的每部 Bare Metal 解決方案伺服器,然後修改 $ORACLE_HOME/network/admin/tsnames.ora 檔案,以更新網路服務設定:

DBDG_SITE2 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE2_SCAN_HOSTNAME)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DBDG_SITE2) (UR=A)
   )
 )

DBDG_SITE1 =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE1_SCAN_HOSTNAME)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = DBDG_SITE1)
    )
  )

設定暫時事件監聽器

為避免重新啟動用於其他資料庫連線的事件方塊,我們會使用暫時事件方塊執行資料庫複製作業。本範例使用通訊埠 1523,但您可以使用任何可用於叢集間通訊的通訊埠。您可以在資料庫複製完成後刪除這個暫時性的事件監聽器。

  1. 登入備用位置中要用於資料庫複製程序的第一個 Bare Metal 解決方案伺服器。修改 $ORACLE_HOME/network/admin/listener.ora 檔案,更新網際服務設定:

    LISTENER_DBDG_SITE2 =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = site1db1)(PORT = 1523))
        )
      )
    
    SID_LIST_LISTENER_DBDG_SITE2 =
      (SID_LIST =
        (SID_DESC =
          (GLOBAL_DBNAME = DBDG_SITE2_DGMGRL)
          (ORACLE_HOME = ORACLE_HOME)
          (SID_NAME = DBDG_SITE21)
        )
      )
    ADR_BASE_LISTENER = /apps/oracle/oracle_base
    
  2. 啟動暫時性事件監聽器:

    lsnrctl start LISTENER_DBDG_SITE2
    

準備待命資料庫

  1. 每個資料庫執行個體都需要一個目錄來儲存稽核記錄。在備用資料庫位置的每部 Bare Metal 解決方案伺服器上建立稽核檔案目錄:

    mkdir -p /apps/oracle/oracle_base/admin/DBDG_SITE2/adump
    
  2. 修改先前複製到待命資料庫伺服器的 $ORACLE_HOME/dbs/initDBDG_SITE21.ora 檔案:

    1. db_unique_name 設為新的備援資料庫名稱。
    2. 修改任何特定執行個體參數,以反映備用資料庫的執行個體名稱。以下列舉幾個示例:
      • instance_number
      • thread
      • undo_tablespace
    3. 設定 audit_file_dest 參數,以便使用先前步驟中建立的目錄。
    4. 如果各個位置中的 ASM 磁碟群組使用不同的名稱,請修改 db_file_name_convertlog_file_name_convert 參數,以符合新的檔案位置。
    5. control_files 參數註解掉。

    以下範例顯示更新後的資料庫參數檔案,並使用本指南提供的範例進行修改。請注意,參數檔案會包含特定資料庫設定的其他參數。系統只會顯示需要修改的待機參數:

    *.db_unique_name='DBDG_SITE2'
    DBDG_SITE21.instance_number=1
    DBDG_SITE22.instance_number=2
    DBDG_SITE21.thread=1
    DBDG_SITE22.thread=2
    DBDG_SITE21.undo_tablespace='UNDOTBS1'
    DBDG_SITE22.undo_tablespace='UNDOTBS2'
    *.audit_file_dest='/apps/oracle/oracle_base/admin/DBDG_SITE2/adump'
    #*.control_files='+DATA/DBDG_SITE1/CONTROLFILE/current.258.1091317089','+RECO/DBDG_SITE1/CONTROLFILE/current.257.1091317089'
    
  3. /etc/oratab 檔案中新增項目,讓 oraenv 指令能夠為待命資料庫設定環境變數:

    DBDG_SITE21:ORACLE_HOME:N
    

建立待命資料庫

  1. 設定 ORACLE_SID 環境變數,以便連線至待命資料庫:

    source oraenv <<< "DBDG_SITE21"
    

    您應該會收到回應 The Oracle base has been set to /apps/oracle/oracle_base

  2. 複製主要資料庫之前,您必須在一個節點上手動啟動待命執行個體。登入備援位置中的第一個 Bare Metal 解決方案伺服器,啟動 SQL*Plus,然後使用 pfilenomount mode 中啟動備援資料庫:

    sqlplus / as sysdba
    
    STARTUP NOMOUNT PFILE='/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora';
    

    如果成功,您應該會收到類似以下範例的回應:

    ORACLE instance started.
    Total System Global Area 1.2885E+10 bytes
    Fixed Size 15988824 bytes
    Variable Size 1845493760 bytes
    Database Buffers 1.1006E+10 bytes
    Redo Buffers 17563648 bytes
    
  3. 啟動執行個體後,請退出 SQL*Plus:

    EXIT;
    
  4. 驗證是否可連線至待命資料庫服務。從主要資料庫位置的每個 Bare Metal Solution 伺服器,嘗試使用 SQL*Plus 連線至待命執行個體。請手動輸入 SYS 遠端登入密碼,才能成功連線至執行個體。

    sqlplus sys@DBDG_SITE2_FOR_DUPLICATION as sysdba
    

    如果成功,您應該會收到標準 SQL*Plus 提示,可用於檢查執行個體參數:

    SHOW PARAMETER DB_UNIQUE_NAME;
    

    您應該會收到類似以下的回應:

                    NAME        TYPE                          VALUE
        ---------------- ----------- ------------------------------
          db_unique_name      string      DBDG_SITE2
    
  5. 檢查 DB_UNIQUE_NAME 參數後,請退出 SQL*Plus:

    EXIT;
    
  6. 連線至 Recovery Manager,然後執行 duplicate 指令,從有效的主要資料庫複製待命資料庫:

    rman TARGET sys@DBDG_SITE1 AUXILIARY sys@DBDG_SITE2_FOR_DUPLICATION
    
    DUPLICATE TARGET DATABASE FOR STANDBY FROM ACTIVE DATABASE NOFILENAMECHECK;
    

    如果成功,您應該會在處理後收到類似以下範例的訊息:

    Finished Duplicate Db at ...
    
  7. 退出 Recovery Manager:

    EXIT;
    

完成待命資料庫建立作業

  1. 在資料庫複製期間,ASM 會為待命資料庫建立新的控制檔案。連線至新的待命執行個體,並取得新的控制檔案名稱。以下範例顯示儲存在 +DATA+RECO 磁碟群組中的兩個控制檔案:

    sqlplus / as sysdba
    
    SET LINESIZE 140
    COLUMN NAME FORMAT a15
    COLUMN VALUE FORMAT a125
    SELECT NAME, VALUE FROM V$PARAMETER WHERE NAME='control_files';
    

    控制檔案名稱會顯示在「值」欄位中:

               NAME     VALUE
    --------------- ----------------------------------------------------------------------------------------------------
      control_files   +DATA/DBDG_SITE2/CONTROLFILE/current.258.1091317089, +RECO/DBDG_SITE2/CONTROLFILE/current.257.1091317089
    
  2. 記下上一個步驟中的控制檔案名稱,然後將 $ORACLE_HOME/dbs/initDBDG_SITE21.oracontrol_files 參數的任何項目替換為新值。如果有多個控制檔案,請將每個檔案以單引號括住,並以半形逗號分隔:

    *.control_files='+DATA/DBDG_SITE2/CONTROLFILE/current.258.1091317089','+RECO/DBDG_SITE2/CONTROLFILE/current.257.1091317089'
    
  3. 使用 SQL*Plus 連線至待命資料庫,並從修改過的 pfile 建立新的 spfile

    sqlplus / as sysdba
    
    CREATE SPFILE='+DATA/DBDG_SITE2/spfileDBDG_SITE2' FROM PFILE='/apps/oracle/19.0.0/db_home1/dbs/initDBDG_SITE21.ora';
    
  4. 使用 asmcmd 指令將密碼檔案複製到 ASM 磁碟群組:

    asmcmd cp /apps/oracle/19.0.0/db_home1/dbs/orapwDBDG_SITE21.ora +DATA/DBDG_SITE2/orapwDBDG_SITE2
    
  5. 關閉待命資料庫執行個體,並刪除暫時的 pfile 和密碼檔案:

    sqplus / as sysdba
    
    SHUTDOWN IMMEDIATE;
    EXIT;
    
    rm $ORACLE_HOME/dbs/orapwDBDG_SITE21.ora $ORACLE_HOME/dbs/initDBDG_SITE2.ora
    
  6. 在待命資料庫位置的首個 Bare Metal Solution 伺服器上,停止用於資料庫複製作業的暫時性事件監聽器:

    lsnrctl stop LISTENER_DBDG_SITE2
    
  7. 在備用資料庫位置的首個 Bare Metal 解決方案伺服器上,移除 $ORACLE_HOME/network/admin/listener.ora 檔案中的暫時項目。

  8. 使用 srvctl 指令,將新的待命資料庫和執行個體新增至叢集登錄:

    srvctl add database \
      -db DBDG_SITE2 \
      -oraclehome /apps/oracle/19.0.0/db_home1 \
      -spfile +DATA/DBDG_SITE2/spfileDBDG_SITE2 \
      -pwfile +DATA/DBDG_SITE2/orapwDBDG_SITE2 \
      -role PHYSICAL_STANDBY \
      -startoption MOUNT
    
    srvctl add instance \
      -db DBDG_SITE2 \
      -instance DBDG_SITE21 \
      -node site2db1
    
    srvctl add instance \
      -db DBDG_SITE2 \
      -instance DBDG_SITE22 \
      -node site2db2
    
  9. 使用 srvctl 指令啟動待命資料庫:

    srvctl start database -db DBDG_SITE2
    

後續步驟

接下來,請設定並啟用 Data Guard 仲介器