在 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