轉載:【Oracle 集群】RAC知識圖文詳細教程(五)--特殊問題和實戰經驗

来源:https://www.cnblogs.com/champaign/archive/2018/08/20/rac5.html
-Advertisement-
Play Games

文章導航 轉載自:http://www.cnblogs.com/baiboy/p/orc1.html\ 轉載目的:便於本人對看到的好文章進行分類整理,及根據實際需要進行進行適當的調整或補充,不用於適合商業用途。 共用存儲 在需要將一個 LUN (邏輯單元號)映射給多個節點、為集群提供一個共用的存儲捲 ...


文章導航


  1. 集群概念介紹(一)
  2. ORACLE集群概念和原理(二)
  3. RAC 工作原理和相關組件(三)
  4. 緩存融合技術(四)
  5. RAC 特殊問題和實戰經驗(五)
  6. ORACLE 11 G版本2 RAC在LINUX上使用NFS安裝前準備(六)
  7. ORACLE ENTERPRISE LINUX 5.7下DATABASE 11G RAC集群安裝(七)
  8. ORACLE ENTERPRISE LINUX 5.7下DATABASE 11G RAC資料庫安裝(八)
  9. ORACLE ENTERPRISE LINUX 5.7下DATABASE 11G RAC基本測試與使用(九)

轉載自:http://www.cnblogs.com/baiboy/p/orc1.html\

轉載目的:便於本人對看到的好文章進行分類整理,及根據實際需要進行進行適當的調整或補充,不用於適合商業用途。

 

共用存儲

在需要將一個 LUN (邏輯單元號)映射給多個節點、為集群提供一個共用的存儲捲時,同一個存儲 LUN 在各個主機端的 LUNID 必須是相同的。比如:

(一) 在為多個 ESX 節點創建一個 VMFS 捲的時候

(二) 在雙機 HA 集群創建共用存儲的時候

時間一致性

集群模式下,各個節點要協同工作,因此,各主機的時間必須一致。因此,各主機的時間必須一致。各個節點之間的時間差不能超時,一般如果超過 30s,節點很可能會重啟,所以要同步各節點的時間。例如,需要配置一個 ntp 時鐘伺服器,來給 RAC 的各個節點進行時間同步。或者讓節點之間進行時間同步,保證各個節點的時間同步,但是無法保證 RAC 資料庫的時間的準確性。

互聯網路(或者私有網路、心跳線)

集群必須依賴內部的互聯網路實現數據通訊或者心跳功能。因此,採用普通的乙太網還是其他的高速網路(比如 IB),就很有講究,當然了,還有拿串口線實現心跳信息傳遞。此外,採用什麼樣的網路參數對集群整體的性能和健壯性都大有關係。

案例:

XX 市,4 節點 Oracle 10g RAC

操作系統採用的是 RHEL 4,按照預設的安裝文檔,設置網路參數為如下值:

net.core.rmem_default = 262144

net.core.rmem_max = 262144

執行一個查詢語句,需要 11 分鐘,修改參數:

net.core.rmem_default = 1048576

net.core.rmem_max = 1048576

再次執行僅需 16.2 秒。

固件、驅動、升級包的一致性

案例:

XX 市,HPC 集群,運行 LS-DYNA(通用顯示非線性有限元分析程式)。

集群存儲系統的環境說明:存儲系統的 3 個 I/O 節點通過 FC SAN 交換機連接到一個共用的存儲。

    1. 節點使用的 FC HBA 卡為 Qlogic QLE2460;
    2. 光纖交換機為 Brocade 200E
    3. 磁碟陣列為 Dawning DS8313FF

故障現象

集群到貨後發現盤陣與機器直連能通,兩個設備接 200E 交換機不通。後經測試交換機 IOS 版本問題導致不能正常認出盤陣的光纖埠,與交換機的供貨商聯繫更新了兩次 IOS,盤陣的埠能正常識別,但盤陣與機器相連還是無法找到盤陣。經過今天的測試發現三台 I/O 節點採用的 HBA 卡 firmware 版本不一致。最早接光纖交換機及與盤陣直連的的 I/O1 的 firmware 為 v4.03.02,今天又拿出來的兩台 I/O 節點 firmware 為 v4.06.03。用後兩台測試後盤陣、機器、交換機之間可以正常通信,到今天晚上為止沒有發現異常情況。從目前的情況判斷是QLE2460 firmware 為 v4.03.01 的 HBA 卡與 200E IOS V5.3.1 有衝突者不相容導致的故障。至於新的 HBA 卡 firmware為 v4.06.03 與 200E IOS V5.3.1 連接的穩定性如何還要做進一步測試。

診斷處理結果

I/O 1 節點 HBA 卡的 fimware 升級到 v4.06.03 後連接 200E 找不到盤陣的故障已經得到解決。其實是一個 FCHBA 卡的固件版本不一致引起的問題。

共用文件 OCR 及 Voting Disk

Oracle Cluster Registry(OCR):記錄 OCR 記錄節點成員的配置信息,如 database、ASM、instance、 listener、VIP 等 CRS 資源的配置信息,可存儲於裸設備或者群集文件系統上。Voting disk : 即仲裁盤,保存節點的成員信息,當配置多個投票盤的時候個數必須為奇數,每個節點必須同時能夠連接半數以上的投票盤才能夠存活。初次之外包含哪些節點成員、節點的添加和刪除信息。

安裝

在 Oracle RAC 中,軟體不建議安裝在共用文件系統上,包括 CRS_HOME 和 ORACLE_HOME,尤其是 CRS 軟體,推薦安裝在本地文件系統中,這樣在進行軟體升級,以及安裝 patch 和 patchset 的時候可以使用滾動升級(rolling upgrade)的方式,減少計劃當機時間。另外如果軟體安裝在共用文件系統也會增加單一故障點。如果使用 ASM 存儲,需要為 asm 單獨安裝 ORACLE 軟體,獨立的 ORACLE_HOME,易於管理和維護,比如當遇到 asm 的 bug 需要安裝補丁時,就不會影響 RDBMS 文件和軟體。

腦裂症(split brain)

在一個共用存儲的集群中,當集群中 heartbeat 丟失時,如果各節點還是同時對共用存儲去進行操作,那麼在這種情況下所引發的情況是災難的。ORACLE RAC 採用投票演算法來解決這個問題,思想是這樣的:每個節點都有一票,考慮有 A,B,C 三個節點的集群情形,當 A 節點由於各種原因不能與 B,C 節點通信時,那麼這集群分成了兩個 DOMAIN,A 節點成為一個 DOMAIN,擁有一票;B,C 節點成為一個 DOMAIN 擁有兩票,那麼這種情況B,C 節點擁有對集群的控制權,從而把 A 節點踢出集群,對要是通 IO FENCING 來實現。如果是兩節點集群,則引入了仲裁磁碟,當兩個節點不能通信時,請求最先到達仲裁磁碟的節點擁用對集群的控制權。網路問題(interconnect 斷了),時間不一致;misscount 超時 等等,才發生 brain split,而此時為保護整個集群不受有問題的節點影響,而發生 brain split。oracle 採用的是 server fencing,就是重啟有問題的節點,試圖修複問題。當然有很多問題是不能自動修複的。比如時間不一致,而又沒有 ntp;網線壞了。。。這些都需要人工介入修複問題。而此時的表現就是有問題的節點反覆重啟。

集群軟體

從 Oracle10g 起,Oracle 提供了自己的集群軟體,叫做 Oracle Clusterware,簡稱 CRS,這個軟體是安裝 oraclerac 的前提,而上述第三方集群則成了安裝的可選項 。同時提供了另外一個新特性叫做 ASM,可以用於 RAC 下的共用磁碟設備的管理,還實現了數據文件的條帶化和鏡像,以提高性能和安全性 (S.A.M.E: stripe and mirroreverything ) ,不再依賴第三方存儲軟體來搭建 RAC 系統。尤其是 Oracle11gR2 版本不再支持裸設備,Oracle 將全力推廣 ASM,徹底放棄第三方集群組件支持。

Oracle Clusterware 的心跳

Oracle Clusterware 使用兩種心跳設備來驗證成員的狀態,保證集群的完整性。

  • l   一是對 voting disk 的心跳,ocssd 進程每秒向 votedisk 寫入一條心跳信息。
  • l   二是節點間的私有乙太網的心跳。

兩種心跳機制都有一個對應的超時時間,分別叫做 misscount 和 disktimeout:

  • l   misscount 用於定義節點間心跳通信的超時,單位為秒;
  • l   disktimeout ,預設 200 秒,定義 css 進程與 vote disk 連接的超時時間;

reboottime ,發生裂腦並且一個節點被踢出後,這個節點將在reboottime 的時間內重啟;預設是 3 秒。用下麵的命令查看上述參數的實際值:

  • l  # crsctl get css misscount
  • l  # grep misscount $CRS_HOME/log/hostname/cssd/ocssd.log

在下麵兩種情況發生時,css 會踢出節點來保證數據的完整,:

(一) Private Network IO time > misscount,會發生 split brain 即裂腦現象,產生多個“子集群”(subcluster) ,這些子集群進行投票來選擇哪個存活,踢出節點的原則按照下麵的原則:節點數目不一致的,節點數多的 subcluster 存活;節點數相同的,node ID 小的節點存活。

(二) VoteDisk I/O Time > disktimeout ,踢出節點原則如下:失去半數以上 vote disk 連接的節點將在 reboottime 的時間內重啟。例如有 5 個 vote disk,當由於網路或者存儲原因某個節點與其中>=3 個 vote disk 連接超時時,該節點就會重啟。當一個或者兩個 vote disk 損壞時則不會影響集群的運行。

如何查看現有系統的配置

對於一個已經有的系統,可以用下麵幾種方法來確認資料庫實例的心跳配置,包括網卡名稱、IP 地址、使用的網路協議。

 最簡單的方法,可以在資料庫後臺報警日誌中得到。使用 oradebug

SQL> oradebug setmypid

Statement processed.

SQL> oradebug ipc

Information written to trace file.

SQL> oradebug tracefile_name

/oracle/admin/ORCL/udump/orcl2_ora_24208.trc

找到對應 trace 文件的這一行:socket no 7 IP 10.0.0.55 UDP 16878

 從數據字典中得到:

SQL> select * from v$cluster_interconnects;

SQL> select * from x$ksxpia;

心跳調優和設置

為了避免心跳網路成為系統的單一故障點,簡單地我們可以使用操作系統綁定的網卡來作為 Oracle 的心跳網路,以 AIX 為例,我們可以使用 etherchannel 技術,假設系統中有 ent0/1/2/3 四塊網卡,我們綁定 2 和 3 作為心跳:在 HPUX 和 Linux 對應的技術分別叫 APA 和 bonding

UDP 私有網路的調優當使用 UDP 作為資料庫實例間 cache fusion 的通信協議時,在操作系統上需要調整相關參數,以提高 UDP傳輸效率,併在較大數據時避免出現超出 OS 限制的錯誤:

(一) UDP 數據包發送緩衝區:大小通常設置要大於(db_block_size * db_multiblock_read_count )+4k,

(二) UDP 數據包接收緩衝區:大小通常設置 10 倍發送緩衝區;

(三) UDP 緩衝區最大值:設置儘量大(通常大於 2M)並一定要大於前兩個值;

各個平臺對應查看和修改命令如下:

Solaris 查看 ndd /dev/udp udp_xmit_hiwat udp_recv_hiwat udp_max_buf ;

修改 ndd -set /dev/udp udp_xmit_hiwat 262144

ndd -set /dev/udp udp_recv_hiwat 262144

ndd -set /dev/udp udp_max_buf 2621440

AIX 查看 no -a |egrep “udp_|tcp_|sb_max”

修改 no -p -o udp_sendspace=262144

no -p -o udp_recvspace=1310720

no -p -o tcp_sendspace=262144

no -p -o tcp_recvspace=262144

no -p -o sb_max=2621440

Linux 查看 文件/etc/sysctl.conf

修改 sysctl -w net.core.rmem_max=2621440

sysctl -w net.core.wmem_max=2621440

sysctl -w net.core.rmem_default=262144

sysctl -w net.core.wmem_default=262144

HP-UX 不需要

HP TRU64 查看 /sbin/sysconfig -q udp

修改: 編輯文件/etc/sysconfigtab

inet: udp_recvspace = 65536

udp_sendspace = 65536

Windows 不需要

參考文獻


  1. Oracle的三種高可用集群方案
  2. 集群概念介紹:栢圖教育 Oracle 高級課程——理論教材
  3. Oracle 11 RAC生存指南
  4. Oracle 11gR2 RAC管理與性能優化

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • with cte as ( select belongsAgent from [QPProxyDB].[dbo].[BS_ProxyInfo] where ProxyID = @ProxyID union all select a.ProxyID from [QPProxyDB].[dbo].[BS... ...
  • 一、表操作 1、創建表 1 是否可空,null表示空,非字元串 2 not null - 不可空 3 null - 可空 1 預設值,創建列時可以指定預設值,當插入數據時如果未主動設置,則自動添加預設值 2 create table tb1( 3 nid int not null defalut 2 ...
  • 問題背景 在開發項目過程中,客戶要求使用gbase8s資料庫(基於informix),簡單的分頁頁面響應很慢。排查發現分頁sql是先查詢出數據在外面套一層後再取多少條,如果去掉嵌套的一層,直接獲取則很快。日常使用中postgresql並沒有這樣的操作也很快,這是為什麼呢? 說明 在資料庫實現早期,查 ...
  • 執行計劃路徑選擇 postgresql查詢規划過程中,查詢請求的不同執行方案是通過建立不同的路徑來表達的,在生成許多符合條件的路徑之後,要從中選擇出代價最小的路徑,把它轉化為一個計劃,傳遞給執行器執行,規劃器的核心工作就是生成多條路徑,然後從中找出最優的那一條。 代價評估 評估路徑優劣的依據是用系統 ...
  • 問題背景 運維操作失誤,在沒有正常關閉sqlserver的情況下,將伺服器關閉了,重啟後某些表損壞(應該是某些頁損壞了,沒有損壞的頁還能訪問到數據,但是訪問損壞了的頁就有問題),目前資料庫只有4.20號的備份。 報錯信息 查詢腳本:select * from t_jxjs_pctq where c_ ...
  • json,jsonb區別 json和jsonb,而兩者唯一的區別在於效率,json是對輸入的完整拷貝,使用時再去解析,所以它會保留輸入的空格,重覆鍵以及順序等。而jsonb是解析輸入後保存的二進位,它在解析時會刪除不必要的空格和重覆的鍵,順序和輸入可能也不相同。使用時不用再次解析。兩者對重覆鍵的處理 ...
  • 參考博客:Hadoop HBase概念學習系列 參考博客:Hadoop HBase概念學習系列之HBase里的Zookeeper(二十一) 參考博客:Hadoop HBase概念學習系列之HBase里的客戶端和HBase集群建立連接(詳細)(十四) 參考博客:Hadoop HBase概念學習系列之M ...
  • 1. hbase數據模型 1.1. HBase數據模型術語 Table HBase表由多行組成。 Row HBase中的一行由一個行鍵和一個或多個列組成,列的值與這些列相關聯。存儲行時,按行鍵按字母順序排列。因此,行鍵的設計非常重要。目標是以這樣一種方式存儲數據,即相關的行彼此接近。常見的行鍵模式是 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...