RAC資料庫例項之間的三種心跳機制

2021-10-08 00:26:02 字數 1567 閱讀 9754

和css 部分類似,rac資料庫中存在3種心跳機制:網路心跳、磁碟心跳、本地心跳

1、網路心跳:

資料庫的網路心跳機制是通過lmno程序來實現的,每個例項的lmon金嫦娥會定期通過資料庫的私網(記憶體融合使用的網路)與所有例項進行通訊,以確認其他節點(例項)的狀態。如果,某個例項一段時間之內(預設 300s)不能響應其他節點發動的網路心跳資訊,那麼資料庫集群就會需要進行重新配置,而使用者能後看的最直觀的資訊就是ora-29740錯誤。所以,資料庫層面的網路心跳與集群中的網路心跳類似。

另外,需要說明的是,資料庫層面的網路心跳除了lmon程序實現之外,本地例項的lms、lmd和lck0也會與遠端節點對應的lms、lmd和lck0程序進行通訊的,來檢測彼此之間的狀態。但是這種狀態的檢測在例項之間傳輸訊息的的時候才會發生,所以從嚴格意思上講,例項之間的lms、lmd和lck0程序進行狀態檢測並能補鞥人為是例項的網路心跳。不過,他們的確能夠提供一種類似於網路心跳的方法。

2、磁碟心跳

資料庫層面的磁碟心跳和集群層面和集群層面的磁碟心跳基本相同,但是,由於資料庫層面並沒有vf存在,所以,實現的方式會有所不同。對於rac資料庫,ckpt程序預設每3秒向資料庫的控制檔案寫入本地例項能夠訪問的其他例項的資訊,從而完成資料庫的磁碟心跳。當然,磁碟心跳中的「其他節點狀態」資訊是通過lmon程序獲得的。而對於使用者而言,如果資料庫例項的磁碟心跳出了問題,最直觀的資訊就是ora-494錯誤。

注意:如果資料庫中存在多個控制檔案的話,ckpt必須保證所有控制檔案的寫入操作返回之後才能完成磁碟心跳操作,因為資料庫要求所有控制檔案的捏弄必須是一致的。

在資料庫層面,磁碟心跳的主要功能有兩個:

1、確認本地例項是否正常;

2、當資料庫層面出現腦裂時,負責提供投票資訊。

功能1非常好理解,如果某個例項一段時間(預設900秒)之間都不能完後才能和控制檔案的i/o操作,那麼本地節點會選擇通過重啟例項的方式來維護資料庫集群的一致性。

功能2的作用是lmon程序會將網路心跳中包含的遠端節點狀態資訊傳送給ckpt程序。而對於資料庫例項,他的執行狀態只有兩個情況,執行和關閉。

3、 本地心跳

事實上,本地心跳的概念是從11gr1版本開始被引入的,從11g版本開始,本地的lms、lmon和lmd程序就會定期的檢查彼此的狀態,如果發現某乙個程序出現了問題(最常見額問題就是hang),就可以通過重啟例項的方式來維護資料庫集群的一致性。這種行為就是通過一下3的影藏引數來控制的。

_lm_rcvr_hang_check_frequency:這個引數指定了程序之間彼此狀態檢查的時間間隔。預設誒60秒。

_lm_revr_hang_allow_tme:這個引數指定了乙個程序處於hang狀態的最大超時時間,改引數預設值為200s。

_lm_rcvr_hang_kill:這個引數指定了當乙個程序處於hang狀態的時間超過了_lm_hang_allow_time之後,是否允許重啟資料庫例項。改引數預設為false。

到11gr2版本開始恩地心跳的概念出了新的變化,lmhb程序會定期監控lmon、lms、lmd、lck0等於cache fusion 相關額重要後台程序,如果lmhb程序發現某乙個重要後台的程序在一段時間內沒有更新自己的狀態資訊,就會進行分析,如果有必要會通知重啟本地節點的方式來解決問題。

RAC環境資料庫重啟例項

rac 應用越來越廣泛了。rac技術作為 oracle 資料庫集群環境,它的管理有自己的一整套知識,我在此來演示一下 rac的重啟過程。oracle常用管理命令 1 crs打頭的命令,主要使用者集群底層結構的管理,位於 oracle crs home bin下,一般在系統安裝完畢後只用到 crs s...

資料庫三種正規化

正規化是符合某一種級別的關係模式的集合。關聯式資料庫中的關係必須 滿足一定的要求。滿足最低要求的叫第一正規化,簡稱1nf,在第一正規化基礎上進一步滿足一些要求的為第二正規化,簡稱2nf。其餘依此類推,目前有六種範 式 1nf,2nf,3nf,bcnf,4nf,5nf。1 第一正規化 1nf 在任何乙...

資料庫三種事務

什麼是事務 是不可分割的邏輯單元,由多個操作部分組成 select getdate 函式 1.自動提交事務 insert update delete都是自動提交事務 比如乙個學生表和班級表有外來鍵約束 只刪掉班級表的資料是執行不了的 insert into student values 張三 男 2...