10.2.0.3 VIP 漂移問題

oracle_ace發表於2009-10-15

問題描述:
3節點的Oracle 10.2.0.3版本RAC
Oracle Patch  merge6平臺上
主機P570,作業系統AIX 5***
沒有壓力狀態下,拔掉節點node1的2根public網線,發現VIP重啟累計用時如下:
      CRS    check node1.vip error             9s
      CRS    stop    node1.vip                    10s
      CRS    stop    node1.lis                      85s
      CRS    start node1.vip on node3       89s
節點故障時VIP漂移時間超過90s,對於實時應用是可怕的。

一開始想到調整CRS服務關於VIP故障的check引數CHECK_INTERVAL及SCRIPT_TIMEOUT,由預設的60s減少到20s或許能改善VIP的切換時間。
修改引數的命令如下:  
# srvctl stop instance -d dbserver3 -i zc3
# cd $ORA_CRS_HOME/bin
# ./crs_stat -p ora.dbserver3.vip > /tmp/ora.dbserver3.vip.cap
# ./crs_profile -update ora.dbserver3.vip -dir /tmp -o ci=20,st=20
# ./crs_register ora.dbserver3.vip -dir /tmp -u
檢查CHECK_INTERVAL及SCRIPT_TIMEOUT的命令如下:    
$./crs_stat -p ora.dbserver3.vip | grep CHECK_INTERVAL
CHECK_INTERVAL=20
$./crs_stat -p ora.dbserver3.vip | grep SCRIPT_TIMEOUT
SCRIPT_TIMEOUT=20
但是修改後測試發現,雖然改小了CRS的check週期,但是VIP的漂移時間仍然超過80s,問題顯然與CRS無關。

檢查listener.ora的配置,發現沒有新增IPC協議,新增IPC協議 as first entry,再次測試VIP漂移時間在15s以內。修改如下:
------------------------------------------------------------------------------------------------------
LISTENER_DBSERVER3 =
  (DESCRIPTION_LIST =
          (DESCRIPTION =
     (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
      (ADDRESS = (PROTOCOL = TCP)(HOST = node_vip)(PORT = 1521)(IP = FIRST))
      (ADDRESS = (PROTOCOL = TCP)(HOST = node_ip)(PORT = 1521)(IP = FIRST))
    )
  )

------------------------------------------------------------------------------------------------------
Oracle關於IPC協議和listener的解釋很少,但是,可以看出IPC協議對VIP漂移時間的影響很大。

關於VIP的測試,中間還穿插了兩段。
第一段, 拔掉節點1的2根public網線,發現節點1上的vip沒有漂移至配置的節點上。當時是發現$ORACLE_CRS/srvm/auth]目錄下有大量 類似"A3877132"系統使用者屬組的空檔案。都給rm後,重新做該節點的2根public網線故障,VIP能正常漂移至指定節點。忘記原因了,只記得 還有這事情,以後難免遇到。

第二段,由於其他原因,在系統上升級Oracle patch由merge6升至merge12。
測試中發現,在merge12的平臺下,節點發生2根public網線故障,vip竟然沒有發生漂移,但退回到merge6正常。 當時懷疑了有2個原因:
1.merge12的補丁有bug。那這就太滑稽了,打補丁打出bug。
2.當初搭建RAC環境時,將FAIL_WHEN_DEFAULTGW_NO_FOUND由1改為0。
很快,ORACLE對merge12這個新的patch進行檢查,發現程式碼出現問題,少了'()'引起的,修改如下:
patch的line 366,'IsIfAlive() ${_IF}'修改為' IsIfAlive ${_IF}'

再次測試,vip不漂移的問題解決。至此,一個10.2.0.3的RAC系統總共打了opatch共36個,儼然已經打成馬蜂窩了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12361284/viewspace-616685/,如需轉載,請註明出處,否則將追究法律責任。

相關文章