1. 程式人生 > >【Oracle 叢集】ORACLE DATABASE 11G RAC 知識圖文詳細教程之RAC 特殊問題和實戰經驗(五)

【Oracle 叢集】ORACLE DATABASE 11G RAC 知識圖文詳細教程之RAC 特殊問題和實戰經驗(五)

在需要將一個 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 不需要

相關推薦

Oracle 叢集ORACLE DATABASE 11G RAC 知識圖文詳細教程RAC 特殊問題實戰經驗

在需要將一個 LUN (邏輯單元號)對映給多個節點、為叢集提供一個共享的儲存卷時,同一個儲存 LUN 在各個主機端的 LUNID 必須是相同的。比如:  (一) 在為多個 ESX 節點建立一個 VMFS 卷的時候 (二) 在雙機 HA 叢集建立共享儲存的時候 時間一致性 叢集模式下,各

Oracle 叢集ORACLE DATABASE 11G RAC 知識圖文詳細教程RAC 工作原理相關元件

概述:寫下本文件的初衷和動力,來源於上篇的《oracle基本操作手冊》。oracle基本操作手冊是作者研一假期對oracle基礎知識學習的彙總。然後形成體系的總結,一則進行回顧複習,另則便於查詢使用。本圖文文件亦源於此。閱讀Oracle RAC安裝與使用教程前,筆者先對這篇文章整體構思和形成進行梳理。

Oracle 叢集11G RAC 知識圖文詳細教程RAC在LINUX上使用NFS安裝前準備

目錄 介紹                           下載軟體 本文使用Oracle Enterprise Linux 5.7。 一般的圖形作業系統安裝指南在這裡。 更具體地說,它應該是一個伺服器安裝的2 g交換(最好是3-4G),Li

Oracle 叢集ORACLE DATABASE 11G RAC 知識圖文詳細教程快取融合技術主要後臺程序

      前面已經介紹了 RAC 的後臺程序,為了更深入的瞭解這些後臺程序的工作原理,先了解一下 RAC 中多節點對共享資料檔案訪問的管理是如何進行的。要了解 RAC 工作原理的中心,需要知道 Cache Fusion 這個重要的概念,要發揮 Cache Fusion 的作用,要有一個前提條件,那就

Oracle 叢集ORACLE DATABASE 11G RAC 知識圖文詳細教程叢集概念介紹

白寧超 2015年7月16日 概述:寫下本文件的初衷和動力,來源於上篇的《oracle基本操作手冊》。oracle基本操作手冊是作者研一假期對oracle基礎知識學習的彙總。然後形成體系的總結,一則進行回顧複習,另則便於查詢使用。本圖文文件亦源於此。閱讀Oracle RAC安裝與使用教程前,筆者先

Oracle 叢集ORACLE DATABASE 11G RAC 知識圖文詳細教程ORACLE叢集概念原理

概述:寫下本文件的初衷和動力,來源於上篇的《oracle基本操作手冊》。oracle基本操作手冊是作者研一假期對oracle基礎知識學習的彙總。然後形成體系的總結,一則進行回顧複習,另則便於查詢使用。本圖文文件亦源於此。閱讀Oracle RAC安裝與使用教程前,筆者先對這篇文章整體構思和形成進行梳理。

Oracle 叢集Oracle 11G RAC教程叢集安裝七)

Oracle登入rac1進行上傳,解壓安裝p13390677_112040_Linux-x86-64_1of7.zip、p13390677_112040_Linux-x86-64_2of7.zip、p13390677_112040_Linux-x86-64_3of7.zip到/media下,並解壓

Visual Studio解決錯誤 fatal error C1010: unexpected end of file while looking for precompiled head

set while err sin 結束 art fat 出現 using 原文轉自 http://blog.csdn.net/liuqiyao_01/article/details/38867145 在編譯VS時候,出現fatal error C1010: unexp

MM 發票MM MIRO界面中的ITEM LIST的布局可自己定義

方便 jpg 下拉 定義 ges -1 bsp create http 轉載自 https://mp.weixin.qq.com/s/3WHQc885Muz9hPwfwP4ODA 進入如下界面: 輸入布局的名字,事務代碼,點‘Create’按鈕,進入如下界面: 可以將

解憂雜貨店寫在最最最最前面--華為數通R&S實驗漫載1

華為數通 路由與交換 華為認證 《華為數通R&S實驗漫載》是主要講述華為數通(R&S)認證方向的實驗部分教程,本篇文章是第一篇,重點在於寫給誰看,看了有什麽用。 為什麽叫【解憂雜貨店】? 為什麽叫解憂雜貨店呢?因為我希望通過這個教程能夠像浪矢雜貨店的主人浪矢雄治那樣,為他人提供咨詢

解憂雜貨店缺省路由的配置--華為數通R&S實驗漫載6

華為數通 路由交換 華為認證 前言 上一節我們講到了靜態路由的負載分擔和路由備份的配置,今天我們看一下什麽是缺省路由?如何配置缺省靜態路由?其實我們每天都在使用缺省路由,缺省路由就相當於,我在一個山區中,我去任何地方都要從一個峽谷走出去,而這個從峽谷走出的路就是缺省路由。 實驗拓撲 網絡規劃

備忘從基礎到深度學習OpenCV視訊教程計算機視覺影象識別實戰Python C C++

├─第01講 工欲善其事必先利其器-影象處理基礎 │      cv第一次資料.rar │      第一課.mkv │      ├─第02講 初探計算機視覺 │      cv_第一二講.pdf │      cv第二次資料.rar │      第二課.mkv │  

達內課程網路通訊Post例項解析Json2

如何使用Android程式碼傳送HTTP POST請求 1、建立URL物件 URL url = new URL("http://xxx"); 2、建立HttpURLConnection物件 conn = url.openConnection() 3、設定訊息

實戰Unity3d實戰Unity3d網路遊戲實戰6:服務端框架的搭建

Unity3d實戰之Unity3d網路遊戲實戰篇(6):服務端框架的搭建 學習書籍《Unity3d網路遊戲實戰》 羅培羽著 機械工業出版社 本文是作者在學習過程中遇到的認為值得記錄的點,

Oracle 叢集Linux下Oracle RAC叢集搭建Oracle DataBase安裝八)

  以oracle使用者身份登入RAC1主節點,對解壓後的檔案安裝。(只需要主節點進行配置即可,子節點通過ssh通訊,自動配置) ./runInstaller 不選擇複選框security updates checkbox,下一步.  

Oracle 叢集Linux下Oracle RAC叢集搭建基本測試與使用九)

概述:寫下本文件的初衷和動力,來源於上篇的《oracle基本操作手冊》。oracle基本操作手冊是作者研一假期對oracle基礎知識學習的彙總。然後形成體系的總結,一則進行回顧複習,另則便於查詢使用。本圖文文件亦源於此。閱讀Oracle RAC安裝與使用教程前,筆者先對這篇文章整體構思和形成進行梳理。

ORACLE效能ORACLE伺服器的CPU負載均衡過高

ORACLE伺服器的CPU和負載均衡過高 場景: 資料庫版本:11.2.0.4 RAC;系統版本:Oracle Linux 6.4 巡檢發現DDDRAC庫CPU/負載均衡過高,load(15m)值達到了40以上,CPU值達到90%以上。 解決: 發現CPU和過載過高後,檢視磁碟I

技術支援Oracle plsql中的having子句並非都能改寫成where子句。having子句的適用場景。

一句話: group by子句讓聚合函式輸出不同的記錄,having子句優先順序低於聚合函式,其就是用於篩選聚合後的各組值,以彌補where子句的不足。所以,having子句中的條件必須是聚合函式。 例子: update t_userinfo tu set tu.stat

錯誤更正oracle 備份: 每天備份,全備份,保留七天。

1. 保留七天 只保留七天的備份是這樣設定的 RMAN> connect target/ connected to target database: DBSID (DBID=3100778

程式碼保留Oracle時間比較與當前時間

功能:提供查詢對記錄中最大值與當前時間的比較。可實現一個指定範圍與當前時間的比較。實現思路:通過對記錄中最大的時間加上指定月份得到範圍上限,並用CURRENT_DATE獲取當前系統時間與之比較,如果超出該上限則判斷為