在集羣中的所有節點上執行下列配置過程!
Oracle 9.0.1 和 9.2.0.1 使用一個名爲 watchdogd 的用戶空間監視後臺程序來監視集羣的狀態情況,並在出現故障時重新啓動 RAC 節點。從 Oracle 9.2.0.2 開始,此監視後臺程序已被名爲 hangcheck-timer 的模塊所代替,該模塊可以更好地解決可用性和可靠性問題。 hang-check 計時器被加載到 Linux 內核中並檢查系統是否掛起。它將設置一個計時器,並在特定的時間量之後檢查該計時器。有一個用於 檢查掛起情況的可配置閾值,如果超過該閾值,計算機將重新啓動。儘管 Oracle CRS 並不需要hangcheck-timer 模塊,但 Oracle 強烈建議使用它。
# find /lib/modules -name "hangcheck-timer.o"
/lib/modules/2.4.21-15.ELorafw1/kernel/drivers/char/hangcheck-timer.o
/lib/modules/2.4.21-27.0.2.ELorafw1/kernel/drivers/char/hangcheck-timer.o
hangcheck-tick:此參數定義了系統運行狀況檢查的間隔時段。默認值爲 60 秒;Oracle 建議將它設置爲 30 秒。
hangcheck-margin:此參數定義了 hangcheck-timer 在重啓 RAC 節點前所容許的最大掛起延遲。它定義了以秒爲單位的錯誤餘量。默認值爲 180 秒;Oracle 建議將它設置爲 180 秒。
系統掛起時間 > (hangcheck_tick + hangcheck_margin)
配置 Hangcheck 內核模塊參數
每次加載 hangcheck-timer 內核模塊(手動加載或由 Oracle 加載)時,它都需要知道對我們剛剛介紹的兩個參數(hangcheck-tick 和 hangcheck-margin)所使用的值。這些值需要在每次重新啓動 Linux 服務器後可用。爲此,請在 /etc/modules.conf 文件中創建一個具有正確值的條目,如下所示:
# su -
# echo "options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180" >> /etc/modules.conf (centos6.4裏爲/etc/modprobe.d/modules.conf)
每次加載 hangcheck-timer 內核模塊時,它將使用由我在 /etc/modules.conf 文件中創建的條目定義的值。
手動加載 Hangcheck 內核模塊以進行測試
Oracle 負責在需要時加載 hangcheck-timer 內核模塊。因此,不必在任何啓動文件(如 /etc/rc.local)中執行 hangcheck-timer 內核模塊的 modprobe 或 insmod。
我繼續在 /etc/rc.local 文件中包括 hangcheck-timer 內核模塊的 modprobe 完全只是出於個人習慣。有朝一日我將戒掉這個習慣,但請注意,啓動過程中包括 hangcheck-timer 內核模塊的 modprobe 並無害處。
爲了使自己保持清醒並能夠在夜晚入睡,我始終按如下所示在每次啓動時配置 hangcheck-timer 內核的加載:
# echo "/sbin/modprobe hangcheck-timer" >> /etc/rc.local
(注意:您不必在每次重新啓動後使用 modprobe 或 insmod 手動加載 hangcheck-timer 內核模塊。Oracle 將在需要時自動加載 hangcheck-timer 模塊。)
現在,爲了測試 hangcheck-timer 內核模塊以驗證它是否選取我們在 /etc/modules.conf 文件中定義的正確參數,請使用 modprobe 命令。儘管可以通過向其傳遞相應的參數(如 insmod hangcheck-timer hangcheck_tick=30 hangcheck_margin=180)來加載 hangcheck-timer 內核模塊,但我們需要驗證它是否選取了我們在 /etc/modules.conf 文件中設置的選項。
要手動加載 hangcheck-timer 內核模塊並驗證它是否使用在 /etc/modules.conf 文件中定義的正確值,請運行以下命令:
# su -我還想要驗證是否加載了正確的 hangcheck-timer 內核模塊。爲進行確認,我通常刪除內核模塊(如果已經加載它),然後使用以下命令重新加載它:
# modprobe hangcheck-timer
# grep Hangcheck /var/log/messages | tail -2
Jan 30 22:11:33 linux1 kernel:Hangcheck:starting hangcheck timer 0.8.0 (tick is 30 seconds, margin is 180 seconds).
Jan 30 22:11:33 linux1 kernel:Hangcheck:Using TSC.
# su -
# rmmod hangcheck-timer
# insmod hangcheck-timer
Using /lib/modules/2.4.21-27.0.2.ELorafw1/kernel/drivers/char/hangcheck-timer.o