建立 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 仲介器。