RAC 攻擊 - Oracle 叢集資料庫實戰/叢集軟體呼叫
外觀
本實驗的目的是演示 Oracle 快速應用程式通知 (FAN) 呼叫。在 11g 之前的版本中,這些也被稱為 Oracle 叢集軟體呼叫。
此功能是 Oracle 叢集軟體的一個相對鮮為人知的特性,它可以觸發一個指令碼(或一個完整的目錄)來執行您可能希望在叢集範圍事件發生時執行的任何任務。
有關更多資訊,請參閱此處的文件:http://download.oracle.com/docs/cd/B28359_01/rac.111/b28254/hafeats.htm#BABGCEBF
在本練習中,我們將配置每個節點上的一些 FAN 呼叫指令碼,然後觸發各種叢集事件以檢視每個事件如何觸發呼叫指令碼。
- 從一個正常的、執行的叢集開始,兩個節點都啟動並執行。
- 從每個伺服器上的一個 shell 提示符(以 oracle 使用者身份登入)開始,導航到 /u01/grid/oracle/product/11.2.0/grid_1/racg/usrco。使用 vi(或您喜歡的編輯器)在其中建立一個名為 callout1.sh 的檔案。檔案內容應為:#!/bin/ksh umask 022 FAN_LOGFILE=/tmp/`hostname`_uptime.log echo $* "reported="`date` >> $FAN_LOGFILE &
注意在主機名和日期命令周圍使用反引號。
- 確保使用以下命令將檔案的許可權設定為 755:[oracle@<node_name> ~]$ chmod 755 \ > /u01/grid/oracle/product/11.2.0/grid_1/racg/usrcocallout1.sh
- 監視每個節點上叢集軟體的日誌檔案。在每個節點上,啟動一個新視窗並執行以下命令:[oracle@<node_name> ~]$ tail –f \ /u01/grid/oracle/product/11.2.0/grid_1/log/`hostname -s`/crsd/crsd.log
- 接下來,我們需要觸發一個事件,該事件將導致呼叫觸發。一個這樣的事件是節點關閉。關閉節點 collabn2 上的叢集軟體。[root@collabn2 ~]# crsctl stop crs 正在停止資源。這可能需要幾分鐘。成功停止了 Oracle 叢集軟體資源正在停止叢集同步服務。正在關閉叢集同步服務守護程序。已成功發出關閉請求。
- 執行完此命令後,觀察您在步驟 2 中開始監視的日誌檔案。由於我們在測試叢集上設定了很長的超時時間,您可能需要等待幾分鐘才能看到任何內容。
- 您最終應該觀察到表明節點已失敗的條目,緊隨其後的是在 /tmp/<hostname>_uptime.log 檔案中放置的一個條目,表明節點已關閉。
- 注意哪些成員執行叢集軟體呼叫指令碼。(一個倖存的成員可以執行命令來通知客戶端和/或應用程式伺服器叢集節點之一已關閉。)
- 重新啟動叢集軟體。是否有節點啟動事件?[root@collabn2 bin]# crsctl start crs
- 嘗試關閉其中一臺虛擬機器 - 與之前的測試有什麼不同?如果您停用 Linux 網路介面或 VMware 網路卡會怎樣?
- 您可以根據需要進行更多測試。另一個有趣的事件是資料庫例項意外關閉。安裝資料庫後,請返回本實驗測試這種情況。[oracle@collabn2 ~]$ sqlplus "/ as sysdba" SQL*Plus: Release 11.1.0.6.0 - Production on Fri Aug 1 14:49:29 2008 Copyright (c) 1982, 2007, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - Production With the Partitioning, Real Application Clusters, OLAP, Data Mining and Real Application Testing options SQL> shutdown abort; ORACLE 例項已關閉。SQL> INSTANCE VERSION=1.0 service=RAC.vm.ardentperf.com database=RAC instance=RAC2 host=collabn2 status=down reason=user timestamp=01-Aug-2008 12:34:02 reported=Fri Aug 1 12:34:03 CDT 2008
叢集軟體呼叫的一個流行用途是通知管理員(可能是透過電子郵件)叢集事件已發生。您可以使用指令碼的引數(您將在我們建立的日誌檔案中看到引數)來有條件地執行通知。例如,您可能不希望在節點意外崩潰時通知任何人。透過測試這些引數,您可能能夠僅在需要時傳送通知。 |