RAC 和 Oracle Clusterware 最佳實踐和初學者指南 (Linux) (文件 ID 1525820.1)

mosdoc發表於2016-12-05
RAC 和 Oracle Clusterware 最佳實踐和初學者指南 (Linux) (文件 ID 1525820.1)

轉到底部轉到底部

文件內容


用途

適用範圍

詳細資訊
  RAC 和 Oracle Clusterware 最佳實踐和初學者指南(平臺無關部分)
  RAC特定平臺的最佳實踐和初學者指南
  Linux 上 RAC 分步安裝說明視訊 – 新功能!
  Linux 上 RAC 分步安裝說明
  Linux 上 RAC 最佳實踐
  OS 配置注意事項
  虛擬化注意事項
  儲存注意事項
  通用
  特定於 ASM
  特定於 OCFS2
  網路注意事項
  特定硬體/供應商的注意事項
  Oracle 軟體注意事項
  安裝
  通用

參考


適用於:

Oracle Database - Enterprise Edition
Linux x86

用途

 

 

最佳實踐和初學者指南之 Oracle Real Application Clusters (RAC) 系列,主要目標是為了幫助客戶快速瞭解實施、升級與維護 Oracle RAC 系統的通用的以及針對特定平臺的最佳實踐。Oracle 根據自己的經驗及其全球 RAC 客戶的反饋編寫和維護本文件。

本初學者指南的目的不在於取代 Oracle 文件集,而是作為它的補充。對於本文沒有明確解決的任何問題,還應仔細閱讀、理解和參考 Oracle 文件,以從中尋找答案。

您的運營團隊應仔細稽核所有建議,且只有通過了相應的風險評估後方能實施。風險評估只能由具備豐富的系統、應用和企業環境方面知識的人員來執行。

由於每個客戶環境都是獨一無二的,因此 Oracle Database 實施(包括 Oracle RAC 實施)的成功源於成功的測試環境。對於本文中的任意建議,在生產環境中加以實施之前,務必要在作為目標生產環境複製品的測試環境中進行充分的測試和驗證,以確保不會產生與所實施建議相關的負面影響。

適用範圍

本文章適用於所有新的和現有 RAC 實施以及 RAC 升級。

如需特定於 EXADATA 環境的類似資訊,請參考: Document 1306791.2 - Information Center: Oracle Exadata Database Machine

 

詳細資訊

RAC 和 Oracle Clusterware 最佳實踐和初學者指南(平臺無關部分)

以下文件重點介紹適用於所有平臺的 RAC 和 Oracle Clusterware 最佳實踐,包括可用的 RAC 系統負載測試工具的白皮書,以及針對 10gR2、11gR1 和 11gR2 的 RAC 的系統測試計劃概述:

Document 810394.1 RAC and Oracle Clusterware Best Practices and Starter Kit (Platform Independent)

 

RAC特定平臺的最佳實踐和初學者指南

以下文件包含特定平臺的詳細最佳實踐,包括分步安裝說明(可下載 PDF 格式):

Document 811306.1 RAC and Oracle Clusterware Best Practices and Starter Kit (Linux)
Document 811280.1 RAC and Oracle Clusterware Best Practices and Starter Kit (Solaris)
Document 811271.1 RAC and Oracle Clusterware Best Practices and Starter Kit (Windows)
Document 811293.1 RAC and Oracle Clusterware Best Practices and Starter Kit (AIX)
Document 811303.1 RAC and Oracle Clusterware Best Practices and Starter Kit (HP-UX)

 

Linux 上 RAC 分步安裝說明視訊 – 新功能!

Document 1442768.1 - RACGuide: 11.2.0.3 RAC Installation on Linux [Video]

 

Linux 上 RAC 分步安裝說明

單擊 此處,可獲取用於在 Linux 上安裝 Oracle RAC 10gR2 的分步指南。
單擊 此處,可獲取用於在 Linux 上安裝 Oracle RAC 11gR1 的分步指南。
單擊 此處,可獲取用於在 Linux 上安裝 Oracle RAC 11gR2 (11.2.0.2) 的分步指南。
單擊 此處,可獲取用於在 Linux 上安裝 Oracle RAC 12gcR1的分步指南。

 

Linux 上 RAC 最佳實踐

此部分中的最佳實踐特定於 Linux 平臺。也就是說,請您務必檢視 Document 810394.1 中介紹的與平臺無關部分的最佳實踐。

OS 配置注意事項

  • 如果執行 EL4,則強烈建議應用補丁程式將系統至少升級到 EL 4.7 版本,以免出現以下問題:
    • Bug 6116137 - 避免全域性 OS 掛起
    • Bug 6125546 - sysreq 呼叫無法驅逐節點
    • Bug 5041764 - CFQ IO 排程程式允許一個程式暫時停止其他程式
    • Document 400959.1 - 在版本 RHEL/OEL 4 中,4.4 之前的 e1000 流控制預設處於關閉狀態
    • Bug 5136660 - 繫結網路卡不通過 primary slave 啟動
  • 根據 RAC Technologies Matrix for Linux 驗證您的硬體/軟體配置。
  • 在 11gR2 之前的叢集中,使用 NTPD 跨叢集節點同步系統時間, NTPD 應配置為 slew time以防止出現錯誤重啟。在 Linux 上,通過使用“-x”選項啟動 ntpd 來完成此項調整。有關 Linux NTPD 配置的詳細資訊,請參考 Document 551704.1
  • 對於 11gR2,可以使用叢集時間同步守護程式 (Cluster Time Synchronization Daemon, CTSSD) 來替代 NTPD。如果發現未配置 NTPD,CTSSD 將以叢集中某個節點的時間為基準來同步其它節點時間。如果需要從外部時間源進行同步,則必須使用 NTPD,如果這樣,那麼 CTSSD 將以“觀察者”模式執行。總之,如果 NTP 正在執行,則必須按照 Document 551704.1 所述使用 slew time 選項對其進行配置。
  • Oracle 10gR2 和 11gR1 RAC on Linux 都需要 Hangcheck-timer 核心模組。假設“CSS miscount”的預設設定已設定為 30 或 60 秒,則推薦的 hangcheck-timer 設定是:hangcheck_tick=1 hangcheck_margin=10 hangcheck_reboot=1,請參考 Document 726833.1。對於 11gR2,不再需要 hangcheck-timer,因為此功能已內建於 Grid Infrastructure 中。
  • 為資料庫例項實施 HugePage。HugePage 提供了一個使用更大尺寸頁面的方法,它會將 SGA lock(鎖定)到實體記憶體,這樣就無需進行 SGA 的系統頁表查詢。這對記憶體分配較高的系統尤為重要,因為這樣能夠消除與此類配置相關的管理開銷。在伺服器穩定性問題較為明顯(非 Oracle Clusterware 或其他已知 OS 問題引起的各種死迴圈/掛起)的環境中,也建議使用 HugePage。要計算尺寸,請參考 Document 401749.1。 有關更多資訊,請參考 Document 361323.1。  在 11gR1 和更高版本中,必須禁用 AMM 才能使用 HugePage,如 Document 749851.1 中所述。
  • 在OEL/RHEL 5, 6 , 7 和 Suse 10 及以上版本中關閉 ASLR (Address Space Layout Randomization) 防止程式啟動失敗。ASLR 是一個新特性載入共享記憶體到隨機地址中。在Oracle中,多個程式共享相同地址的共享記憶體。開啟ASLR後,oracle不能保證共享記憶體可用。這種衝突意味著一個程式嘗試訪問特定共享記憶體,但是無法獲得。詳細請參考Document 1345364.1

  • 如果您的叢集執行在RedHat 6, OEL 6, SLES 11 或 UEK2 核心上,請確認關閉THP(Transparent HugePages)以防止其帶來的效能問題導致節點和例項驅逐。
    但是,我們仍然推薦使用一般的HugePages(THP和一般HugePages是不同的)。有關更多資訊,請參考Document 1557478.1
  • 設定 vm.min_free_kbytes 核心引數保留 512MB,以允許 OS 更快地回收記憶體,這樣可以避免記憶體低的壓力。有關更多資訊,請參考 Document 452326.1Document 452000.1Document 1367153.1
  • 對於核心版本小於等於2.6.18的系統,請設定核心引數vm.swappiness=100。壓力測試已經證明,對於核心版本小於等於2.6.18的系統,設定vm.swappiness = 100(預設值為60),能夠降低或延緩由於大量的客戶端連結或連結風暴導致的嚴重的記憶體壓力時節點驅逐的發生。
  • 確保已安裝所有必要的 32 位和 64 位 OS 包,並已正確滿足特定 Oracle 版本的系統先決條件。此資訊已記錄在Document 169706.1以及特定版本對應的安裝指南中。
  • 在 Red Hat、Suse 和 Oracle Enterprise Linux OS 平臺上,在應用 10.2.0.4 補丁程式集以後以及在 11g 環境中,可能會在 RAC 中看到 OCSSD 引起的隨機節點驅逐。這些隨機重啟是由於 GLIBC 中的 bug 所致,這已在 EL4.7(及更高版本)和 EL5.2(及更高版本)中得到修正。有關此問題及對應的修正操作的詳細資訊,請參考 Document 731599.1.
  • 對於 11.2.0.2 之前的安裝,必須禁用 SELinux。對於 11.2.0.2,雖然支援 SELinux,但仍然建議在禁用 SELinux 後執行(如果可能)。請參考 Bug 9746474.
  • 禁用 AVAHI 等第三方MDNS守護程式以確保cssd能夠正常啟動,請參考 Document 1501093.1
  • 對於Linux 6.x 平臺,您可能會發現在limits.conf檔案中對引數nproc的修改會被忽略-請參考Document 1487773.1獲得更多資訊。
  • Document 443578.1中所述,配置並測試 Linux 除錯選項(Netdump、'Magic' SysRq Key 和 Serial Console)。
    注意: 只有在 RHEL/OEL4.4 或更高版本中,Netdump 才支援繫結介面。

虛擬化注意事項

  • 當使用Paravirtualized (PV) guest 時,Oracle VM 2.1.2 和更高版本支援 RAC on Linux。有關 Oracle VM 上的虛擬化支援的更多資訊,請參考 Document 464754.1.
  • 在 Oracle VM 環境中部署 RAC 時,務必檢視並遵守 OTN 上的 Oracle RAC in Oracle VM Environments 白皮書中記錄的最佳實踐

儲存注意事項

通用
  • 請參考以下有關如何配置多路徑共享儲存的文件:
    • Document 564580.1 - Configuring raw devices (multipath) for Oracle Clusterware 10g Release 2 on RHEL5/OEL5
    • Document 605828.1 - Configuring non-raw multipath devices for Oracle Clusterware 11g on RHEL5/OEL5
      注意:  Document 605828.1 同樣適用於在不使用 ASMLib 的情況下為 11gR2 安裝配置多路徑。有關 ASMLib 特定的說明,請參考下文的 ASMLib 部分。
  • 在 RedHat EL4 或更高版本中,建議設定 aio-max-nr=1048576( 11g 中設定為 4194304)。
  • 從 Linux 2.6 核心 (RHEL 5, OEL 5) 開始,將逐步淘汰裸裝置,以支援對塊裝置進行 O_DIRECT 訪問。有關此問題的詳細資訊,請參考 Document 401132.1
    • 從 11gR2 開始,對裸裝置和/塊裝置的支援僅為實現向後相容(在所有平臺上),請參考Document Note: 754305.1瞭解詳細資訊。
  • 在 OCFS2 上,為 OCR/VOTING 磁碟正確配置超時(設定應滿足:O2CB_HEARTBEAT_THRESHOLD>=((max(HW_STORAGE_TIMEOUT, SW_STORAGE_TIMEOUT) / 2) + 1))。請參考 Document 395878.1

 

特定於 ASM
  • 使用 ASMLib 可以方便管理,同時 ASMLib Async I/O 驅動程式可以提供更好的效能。
注意: 對於 RHEL6(從6.4開始),核心驅動軟體包'kmod-oracleasm'已經在 Redhat 平臺上啟動,並且可以通過RedHat Network (RHN)上的"RHEL Server Supplementary (v. 6 64-bit x86_64)" 渠道進行安裝。這個模組的更新將會由 RedHat 提供。更多的資訊請參考文件 1089399.1。

 在多路徑環境下使用 ASMLib 時,確保已正確配置 ASMLib,以便多路徑裝置可用於訪問對應的裝置。通過編輯 /etc/sysconfig/oracleasm 配置檔案和修改 ORACLEASM_SCANORDER 以包括 /proc/partitions 中的有效字首條目(如“dm”、“emcpower”),即可實現這一點。常見的錯誤配置是將 ORACLEASM_SCANORDER 設定為“/dev/mapper/”。“/dev/mapper:”是別名,存在於 /proc/partitions 中。請參考 Document 602952.1 瞭解詳細資訊。

  • 如果使用或無法使用 ASMLib,請參考 Document 357472.1 獲取如何配置 UDEV 和(或)Device Mapper 的指南以管理 Clusterware 和 ASM 裝置。
  • 在Linux 7 的系統上使用FCOE 和ASMLib ,請確保FCOE的服務已經啟動 . 請參考 Document 2065945.1 和 Document 2043733.1
特定於 OCFS2
  • 一般而言,不鼓勵在 RAC 系統上使用 OCFS2,因為它會使叢集變得更復雜。在 RAC 系統上使用 ASM 是目前和將來發展的方向,強烈建議將其作為最佳實踐。
  • 發生 Node Panic 或節點驅逐後,OCFS2 1.2.7-1 會使 OCFS2 檔案系統變得不可訪問。建議使用者儘快升級到 OCFS2 1.2.8-2。請參考Document 553600.1 - "OCFS2 1.2.7-1 Filesystem May Become Unavailable after Node Panic or Eviction".
  • 對於包含 voting disk 檔案 (Clusterware)、叢集登錄檔 (OCR)、資料檔案、Redo(重做)日誌、歸檔日誌和控制檔案的 OCFS2 卷,必須使用data volume 和 nointr選項進行 mount。
  • 在低於 OCFS2 1.4.x 的版本中,OCFS2 不支援共享的可寫入 mmap。在使用 1.4.x 版之前的所有 OCFS2 時,健康狀況檢查 (GIMH) 檔案 $ORACLE_HOME/dbs/hc_ORACLESID.dat 和 ASM 檔案 $ASM_HOME/dbs/ab_ORACLESID.dat 應使用符號連結把檔案對映到本地檔案系統。
  • 對 OCFS2 通訊使用專用私有網路,以免網路延遲被誤解為節點在網路上消失,這樣將出現 Node-self-fencing 的情況。可以對 Oracle RAC 和 OCFS2 使用相同的私有網路。請參考  Document 603080.1Document 391771.1。進行此更改時,保留 OCFS2 節點名稱作為公共節點名稱,唯一要做的是更改 IP 地址,以反映專用私有 IP。
  • 確保不對 OCFS 分割槽執行 /usr/bin/updatedb (aka /usr/bin/locate, slocate)。Updatedb 是檔案索引器,將會降低 OCFS 檔案 I/O 的效能。為防止 updatedb 建立 OCFS 分割槽的索引,請將“ocfs”新增到 PRUNEFS= 中,並(或)專門在 /etc/updatedb.conf 的 PRUNEPATHS 列表中列出 OCFS 卷。請參考 Document 789946.1.
  • 強烈建議避免將表決磁碟和 OCR 儲存在 OCFS2 檔案系統上,應當儘量避免出現這種情況。如果要求對 OCR 檔案和(或)VOTING disk使用 OCFS2,請檢視 Document 395878.1 - "Heartbeat/Voting/Quorum Related Timeout Configuration for Linux, OCFS2, RAC Stack to avoid unnecessary node fencing, panic and reboot".

網路注意事項

  • 根據工作負載,rmem_max 和 wmem_max 核心引數應增加到超過預設值 256kb。這些值可確定為每個開啟的 socket 分配多少核心緩衝區記憶體進行網路讀取和寫入:
    net.core.rmem_default=262144
    net.core.rmem_max=4194304 (for 11g and all RDS implementations)
    net.core.rmem_max=2097152 (for 10g)
    net.core.wmem_default=262144
    net.core.wmem_max=1048576 (with RDS use at least 2097152)
_default 值確定在建立 socket 時為每個 socket 立即消耗多少記憶體。_max 值確定在記憶體要求超過預設值時,允許每個 socket 動態使用多少記憶體。因為,建議的最佳實踐是定義較低的預設值(即 256k)以儘可能節省記憶體,但設定較大的最大值(1MB 或更大)以便在給定的 socket 需要更多記憶體時獲得更高的網路效能。
  • 在實施 Linux 網路卡繫結時,必須避免模式 3(對於私網)或模式 6(對於私網和公網):
    • 針對私網進行的模式 3 測試證明它會複製所有 UDP 包並在每一條路徑上傳輸。這樣會增加 CPU 處理私網資料的開銷,從而導致私網效率降低。模式 3 繫結所導致的重複 UDP 包已經造成非公開 Bug 7238620 (ORA-600 [2032]) 和 非公開 Bug 9081436 (GC CR REQUEST WAIT CAUSING SESSIONS TO WAIT)。儘管模式 3 的已知問題只存在於私有網路中,但基於上面提到的模式 3 效率低下的問題,也不鼓勵對公共網路使用模式 3。
    • 模式 6 繫結與浮動 IP 地址之間存在固有的競爭會導致 VIP、SCAN VIP 和 HAIP 出現故障漂移問題。
  • 如果叢集中需要使用ACFS,我們需要使用Linux上的繫結模式0或者是模式1。 如 bug 23011023中描述的其它所有的模式都會引發穩定性的問題。
  • 使用 NSCD 快取 LINUX 的 NIS 查詢 – 檢查以確保 NSCD 服務已安裝且正在執行(可以在 RDA 中找到相關資訊)。
  • 確保禁用 Linux 防火牆 (iptables)。這對私有網路尤為重要,因為此選項會導致叢集不穩定。請參考 Document 554781.1 瞭解詳細資訊。
  • 對於 Linux Kernels 2.6.31 (包含,如:Oracle Linux和Red Hat ) 和更高版本,已經修正了 Reverse Path Filtering 中的一個 bug。由於此 bug 的修正,可能會在擁有多個私網的系統上產生資料包阻止/丟棄的情況。為避免出現這種情況,請將私網網路卡的 rp_filter 核心引數設定為值 0(禁用)或 2(寬鬆)。有關更多資訊,請參考 http://docs.oracle.com/database/121/CWLIN/networks.htm#CWLIN481或Document 1286796.1.

特定硬體/供應商的注意事項

  • 在執行 bnx2 網路驅動程式的 EL5(RHEL 和 OEL)系統上,請確保最低已使用核心版本 2.6.18-194.8.1(EL5.5 或更高),以免出現網路不穩定的問題。有關 BZ#587799、BZ#581148 的詳細資訊,請參考 https://rhn.redhat.com/errata/RHSA-2010-0398.html
  • 對於 ECC 記憶體檢查,請確保 SUN V40Z DUAL CORE 機器最低使用 BIOS 版本為 2.35.3.3。
  • 確保沒有 SUN V40Z 2.6V 記憶體管理電壓調節問題。SUN CE 能夠發現電壓調節是否開始出現問題。新的 VRM(電壓調節模組)修訂版本已從 1.0 升至 2.0。

Oracle 軟體注意事項

此部分中的軟體注意事項特定於 Linux 平臺。也就是說,強烈建議檢視 Document 810394.1 中介紹的平臺無關部分的最佳實踐。

安裝

  • 確保已禁用 Linux 防火牆 (iptables),以防止 root.sh 失敗。請參考 Document 554781.1 瞭解詳細資訊。
  • 對於 11.2.0.2 之前的安裝,通過禁用 SELinux 可以防止 root.sh 失敗。對於 11.2.0.2,雖然支援 SELinux,但仍然建議在禁用 SELinux 後執行(如果可能)。請參考 Bug 9746474
  • 在 SLES 上,安裝 11.2.0.2 將在執行 root.sh 期間複製 ohasd.sles 時會失敗: Bug 10428946

    Performing root user operation for Oracle 11g
    ...
    The init script file "/u01/app/11202/grid/crs/init/ohasd.sles" does not exist
    ...
    Configure Oracle Grid Infrastructure for a Cluster ... succeeded
Bug 10428946 的解決方法是將 ohasd.sles 從 $GI_HOME/crs/util 目錄手動複製到 $GI_HOME/crs/init 目錄:
# cp $GIHOME/crs/utl/ohasd.sles $GIHOME/crs/init
注意: 此問題將在 11.2.0.2.4 GI PSU 中修正,目前已在 11.2.0.3 中得到修正。
 

通用

  • 對於 10gR2 和 11gR1 安裝,驗證 oradism 可執行檔案是否與所有權和許可權 "-rwsr-sr-x 1 root dba oradism" 匹配,並確保 lms 正在實時模式下執行。

參考


NOTE:1442768.1 - RACGuide: 11.2.0.3 RAC Installation on Linux [Video]
NOTE:811303.1 - RAC and Oracle Clusterware Best Practices and Starter Kit (HP-UX)
NOTE:811306.1 - RAC and Oracle Clusterware Best Practices and Starter Kit (Linux)
NOTE:1487773.1 - Cannot Increase "nproc" Value More Than 1024 in Oracle Linux 6
NOTE:605828.1 - Configuring non-raw multipath devices for Oracle Clusterware 11g (11.1.0, 11.2.0) on RHEL5/OL5
NOTE:564580.1 - Configuring raw devices (multipath) for Oracle Clusterware 10g Release 2 (10.2.0) on RHEL5/OL5
NOTE:602952.1 - How To Setup ASM & ASMLIB On Native Linux Multipath Mapper disks?
NOTE:361323.1 - HugePages on Linux: What It Is... and What It Is Not...
NOTE:603080.1 - Linux OCFS2 - Best Practices
NOTE:811280.1 - RAC and Oracle Clusterware Best Practices and Starter Kit (Solaris)
NOTE:357472.1 - Configuring device-mapper for CRS/ASM
NOTE:749851.1 - HugePages and Oracle Database 11g Automatic Memory Management (AMM) on Linux
NOTE:551704.1 - Linux OS Service 'ntpd'
NOTE:391771.1 - OCFS2 1.2 - FREQUENTLY ASKED QUESTIONS
NOTE:726833.1 - Linux: Hangcheck-Timer Module Requirements for Oracle 9i, 10g, and 11gR1 RAC


NOTE:554781.1 - RAC instabilities due to firewall (netfilter/iptables) enabled on the cluster interconnect
NOTE:731599.1 - Linux: OCSSD Reboots Nodes Randomly After Application of 10.2.0.4 Patchset and in 11g Environments
NOTE:395878.1 - Heartbeat/Voting/Quorum Related Timeout Configuration for Linux, OCFS2, RAC Stack to Avoid Unnecessary Node Fencing, Panic and Reboot
NOTE:810394.1 - RAC and Oracle Clusterware Best Practices and Starter Kit (Platform Independent)
BUG:5136660 - RHEL4 [U4] BONDING DEVICE DOES NOT COME WITH PRIMARY SLAVE
BUG:9081436 - GC CR REQUEST WAIT CAUSING SESSIONS TO WAIT
BUG:5041764 - CFQ IO SCHEDULER ALLOWS ONE PROCESS TO TEMP STARVE OTHER PROCESSES
NOTE:237997.1 - Linux OCFS - Best Practices
NOTE:169706.1 - Oracle Database (RDBMS) on Unix AIX,HP-UX,Linux,Mac OS X,Solaris,Tru64 Unix Operating Systems Installation and Configuration Requirements Quick Reference (8.0.5 to 11.2)
NOTE:811293.1 - RAC and Oracle Clusterware Best Practices and Starter Kit (AIX)
NOTE:811271.1 - RAC and Oracle Clusterware Best Practices and Starter Kit (Windows)
NOTE:553600.1 - OCFS2 1.2.7-1 Filesystem May Become Unavailable after Node Panic or Eviction
BUG:9746474 - SELINUX IS PREVENTING "EXECMOD"
NOTE:400959.1 - LINUX: POOR RAC-INTERCONNECT PERFORMANCE AFTER UPGRADE FROM RHEL3 TO RHEL4/OEL4

NOTE:401132.1 - Pre-11.2: How to Install Oracle Clusterware with Shared Storage on Block Devices
NOTE:401749.1 - Oracle Linux: Shell Script to Calculate Values Recommended Linux HugePages / HugeTLB Configuration
NOTE:2065945.1 - Oracle Linux 7: ASM Disks Created on FCOE Target Disks are Not Visible After System Reboot
NOTE:2043733.1 - Oracleasm Is Not Showing ASM Disks After Reboot

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

相關文章