建立 Data Guard 的待命資料庫
主要資料庫為 Data Guard 做好準備後,即可複製到待命站點。以下指南會使用主動複製功能,建立資料庫的一致副本。
提醒您,以下範例會在本指南中使用:
| 資料庫專屬名稱 | 伺服器主機名稱 | RAC 執行個體名稱 | 角色 | 
|---|---|---|---|
| DBDG_SITE1 | site1db1、site1db2 | DBDG_SITE11、DBDG_SITE12 | 主要 | 
| DBDG_SITE2 | site2db1、site2db2 | DBDG_SITE21、DBDG_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,但您可以使用任何可用於叢集間通訊的通訊埠。您可以在資料庫複製完成後刪除這個暫時性的事件監聽器。
- 登入備用位置中要用於資料庫複製程序的第一個 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
- 啟動暫時性事件監聽器: - lsnrctl start LISTENER_DBDG_SITE2
準備待命資料庫
- 每個資料庫執行個體都需要一個目錄來儲存稽核記錄。在備用資料庫位置的每部 Bare Metal 解決方案伺服器上建立稽核檔案目錄: - mkdir -p /apps/oracle/oracle_base/admin/DBDG_SITE2/adump
- 修改先前複製到待命資料庫伺服器的 - $ORACLE_HOME/dbs/initDBDG_SITE21.ora檔案:- 將 db_unique_name設為新的備援資料庫名稱。
- 修改任何特定執行個體參數,以反映備用資料庫的執行個體名稱。以下列舉幾個示例:
- instance_number
- thread
- undo_tablespace
 
- 設定 audit_file_dest參數,以便使用先前步驟中建立的目錄。
- 如果各個位置中的 ASM 磁碟群組使用不同的名稱,請修改 db_file_name_convert和log_file_name_convert參數,以符合新的檔案位置。
- 將 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'
- 將 
- 在 - /etc/oratab檔案中新增項目,讓- oraenv指令能夠為待命資料庫設定環境變數:- DBDG_SITE21:ORACLE_HOME:N
建立待命資料庫
- 設定 - ORACLE_SID環境變數,以便連線至待命資料庫:- source oraenv <<< "DBDG_SITE21"- 您應該會收到回應 - The Oracle base has been set to /apps/oracle/oracle_base。
- 複製主要資料庫之前,您必須在一個節點上手動啟動待命執行個體。登入備援位置中的第一個 Bare Metal 解決方案伺服器,啟動 SQL*Plus,然後使用 - pfile在- nomount 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
- 啟動執行個體後,請退出 SQL*Plus: - EXIT;
- 驗證是否可連線至待命資料庫服務。從主要資料庫位置的每個 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
- 檢查 - DB_UNIQUE_NAME參數後,請退出 SQL*Plus:- EXIT;
- 連線至 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 ...
- 退出 Recovery Manager: - EXIT;
完成待命資料庫建立作業
- 在資料庫複製期間,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
- 記下上一個步驟中的控制檔案名稱,然後將 - $ORACLE_HOME/dbs/initDBDG_SITE21.ora中- control_files參數的任何項目替換為新值。如果有多個控制檔案,請將每個檔案以單引號括住,並以半形逗號分隔:- *.control_files='+DATA/DBDG_SITE2/CONTROLFILE/current.258.1091317089','+RECO/DBDG_SITE2/CONTROLFILE/current.257.1091317089'
- 使用 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';
- 使用 - asmcmd指令將密碼檔案複製到 ASM 磁碟群組:- asmcmd cp /apps/oracle/19.0.0/db_home1/dbs/orapwDBDG_SITE21.ora +DATA/DBDG_SITE2/orapwDBDG_SITE2
- 關閉待命資料庫執行個體,並刪除暫時的 - pfile和密碼檔案:- sqplus / as sysdba- SHUTDOWN IMMEDIATE; EXIT;- rm $ORACLE_HOME/dbs/orapwDBDG_SITE21.ora $ORACLE_HOME/dbs/initDBDG_SITE2.ora
- 在待命資料庫位置的首個 Bare Metal Solution 伺服器上,停止用於資料庫複製作業的暫時性事件監聽器: - lsnrctl stop LISTENER_DBDG_SITE2
- 在備用資料庫位置的首個 Bare Metal 解決方案伺服器上,移除 - $ORACLE_HOME/network/admin/listener.ora檔案中的暫時項目。
- 使用 - 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
- 使用 - srvctl指令啟動待命資料庫:- srvctl start database -db DBDG_SITE2
後續步驟
接下來,請設定並啟用 Data Guard 仲介器。