在 Compute Engine 上設定 Data Guard 觀察器 Google Cloud
視高可用性需求而定,您可能需要自動在資料庫之間進行容錯移轉。驗證 Data Guard 部署作業後,您可以選擇在 Compute Engine 上設定 Data Guard 觀察器來執行這項作業。觀察器是監控 Data Guard 設定的程序,可在條件允許時啟動自動備援。
本指南將說明如何在觀察員虛擬機器 (VM) 上安裝 Oracle 19c 資料庫用戶端,以及設定快速啟動容錯功能。
本指南中會使用以下範例:
資料庫專屬名稱 | 伺服器主機名稱 | RAC 執行個體名稱 | 角色 |
---|---|---|---|
DBDG_SITE1 | site1db1、site1db2 | DBDG_SITE11、DBDG_SITE12 | 主要 |
DBDG_SITE2 | site2db1、site2db2 | DBDG_SITE21、DBDG_SITE22 | 待命 |
安裝 Oracle Database 用戶端軟體
在 Compute Engine 上建立符合下列條件的虛擬機器 (VM):
作業系統Red Hat Enterprise Linux 7。
建立人脈:子網路:包含防火牆規則,可讓虛擬私有雲存取執行主要和備用資料庫的 Bare Metal 解決方案主機。
儲存空間。-- 至少有 20 GB 的空間用於開機磁碟。
登入 VM,並確認每個資料庫叢集的 SCAN 主機名稱是否已在 DNS 中解析:
host DBDG_SITE1_SCAN_HOSTNAME host DBDG_SITE2_SCAN_HOSTNAME
如果主機名稱無法解析,請將每個 SCAN 主機名稱的 IP 位址新增至 VM 上的
/etc/hosts
檔案。請將範例 IP 位址替換為各叢集的 IP 位址:# Site 1 SCAN Hosts 192.0.2.10 DBDG_SITE1_SCAN_HOSTNAME 192.0.2.11 DBDG_SITE1_SCAN_HOSTNAME 192.0.2.12 DBDG_SITE1_SCAN_HOSTNAME # Site 2 SCAN Hosts 198.51.100.10 DBDG_SITE2_SCAN_HOSTNAME 198.51.100.11 DBDG_SITE2_SCAN_HOSTNAME 198.51.100.12 DBDG_SITE2_SCAN_HOSTNAME
安裝 Oracle Database RPM。只安裝軟體。您不需要在觀察器 VM 上設定資料庫。
Oracle Database RPM 會在預先定義的目錄中安裝軟體。將下列項目新增至
/home/oracle/.bash_profile
,以便將 Oracle 軟體主目錄新增至路徑:cat >> /home/oracle/.bash_profile << EOL export ORACLE_HOME=/opt/oracle/product/19c/dbhome_1 export PATH=\$PATH:\$ORACLE_HOME/bin EOL
在終端機工作階段中來源 Oracle 環境變數:
source ~/.bash_profile
設定資料庫連線
在
$ORACLE_HOME/network/admin/tsnames.ora
檔案中設定 Oracle Net 設定:DBDG_SITE1 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE1_SCAN_HOSTNAME)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DBDG_SITE1) (UR=A) ) ) DBDG_SITE2 = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = DBDG_SITE2_SCAN_HOSTNAME)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = DBDG_SITE2) (UR=A) ) )
Oracle Database 12.2 以上版本支援在背景模式下執行觀察器。為此,您必須建立錢包,才能對資料庫執行無密碼驗證。以觀察 VM 上的 Oracle 使用者身分登入,並執行下列工作來建立錢包:
在
$ORACLE_HOME/network/admin/sqlnet.ora
中新增下列項目:WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /home/oracle/wallet)) ) SQLNET.WALLET_OVERRIDE = TRUE
在代管觀察器的 VM 上建立錢包目錄:
mkdir /home/oracle/wallet
初始化錢包,然後在系統提示時提供錢包密碼:
mkstore -wrl /home/oracle/wallet -create
在 Data Guard 設定中,為每個資料庫在錢包中建立項目。
mkstore
指令會要求資料庫的 SYS 密碼,接著要求先前步驟提供的錢包密碼:mkstore -wrl /home/oracle/wallet -createCredential DBDG_SITE1 sys mkstore -wrl /home/oracle/wallet -createCredential DBDG_SITE2 sys
確認錢包中包含 Data Guard 設定中每個資料庫的憑證。
mkstore
的-listCredential
引數會要求公事包密碼:mkstore -wrl /home/oracle/wallet -listCredential
以 Oracle 身分登入觀察 VM,然後測試與主要和備援資料庫的連線。使用錢包憑證,透過 SQL*Plus 連線至主要和次要資料庫:
sqlplus /@DBDG_SITE1 as sysdba sqlplus /@DBDG_SITE2 as sysdba
如果錢包設定成功,
sqlplus
指令會直接登入資料庫,而不會要求輸入密碼。
設定並啟用快速啟動容錯功能
建立目錄以儲存觀察器設定和記錄檔:
mkdir /home/oracle/fsfo
使用錢包連線至主要資料庫上的 Data Guard 仲介程式:
dgmgrl CONNECT /@DBDG_SITE1;
查看 Data Guard 狀態,確認設定標示為
SUCCESS
:SHOW CONFIGURATION;
啟用快速啟動容錯 (FSFO):
ENABLE FAST_START FAILOVER;
啟用 FSFO 不會讓設定準備好自動備援。自動容錯移轉功能需要觀察器。
啟動 Data Guard Observer:
START OBSERVER observer1 IN BACKGROUND FILE IS '/home/oracle/fsfo/observer1_DBDG.dat' LOGFILE IS '/home/oracle/fsfo/observer1_DBDG.log';
在另外的終端機工作階段中,驗證設定:
SHOW CONFIGURATION VERBOSE;
以下範例顯示
show configuration
指令的詳細模式。如果設定狀態為SUCCESS
,表示設定已完成。Configuration - DBDG Protection Mode: MaxAvailability Members: DBDG_SITE1 - Primary database DBDG_SITE2 - Physical standby database (*) Fast-Start Failover target Properties: FastStartFailoverThreshold = '30' OperationTimeout = '30' TraceLevel = 'USER' FastStartFailoverLagLimit = '45' CommunicationTimeout = '180' ObserverReconnect = '0' FastStartFailoverAutoReinstate = 'TRUE' FastStartFailoverPmyShutdown = 'TRUE' BystandersFollowRoleChange = 'ALL' ObserverOverride = 'FALSE' ExternalDestination1 = '' ExternalDestination2 = '' PrimaryLostWriteAction = 'CONTINUE' ConfigurationWideServiceName = 'DBDG_CFG' Fast-Start Failover: Enabled in Potential Data Loss Mode Lag Limit: 45 seconds Threshold: 30 seconds Active Target: DBDG_SITE2 Potential Targets: "DBDG_SITE2" DBDG_SITE2 valid Observer: observer1 Shutdown Primary: TRUE Auto-reinstate: TRUE Observer Reconnect: (none) Observer Override: FALSE Configuration Status: SUCCESS