亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Oracle RAC原理及分析

 更新時間:2024年06月13日 16:05:37   作者:富士康質檢員張全蛋  
這篇文章主要介紹了Oracle RAC原理,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

單點數(shù)據庫VS RAC

單節(jié)點數(shù)據庫,如果實例宕機了,如果一個業(yè)務鏈接在實例上面,那么這個業(yè)務就中斷了。這個時候系統(tǒng)就不具有可用性了,那么這個時候單節(jié)點的可用性是很差的。

對于RAC來說,和單實例一樣,還是一份數(shù)據文件,都是相同的存儲上面放著oracle的文件,但是是由三個實例共用同一份數(shù)據文件。這樣的好處是在三個實例之間做了冗余,在上面三個實例當中任意兩個壞了業(yè)務都可以鏈接到剩下的一個實例,都可以正常的工作。RAC提供了在實例級別的冗余。

RAC不能夠解決在數(shù)據的安全,盡管有多個實例,但是只有一份數(shù)據文件,這樣只要數(shù)據文件損壞了,那么整個數(shù)據庫就損壞了。

什么是RAC

一般每個實例都放在不同的服務器上面,這樣可以起到冗余作用。所有的數(shù)據庫文件都放在共享存儲上面,但是還有一些文件放在每個實例自己的本地的磁盤上面,比如參數(shù)文件,每一個實例都可以有自己的參數(shù)文件,這個參數(shù)文件既可以放在本地也可以放在共享存儲上面,多個實例都使用同一個參數(shù)文件。

在RAC里面,最重要的就是實例和實例之間的交互,即使是分離的實例,但是讀取的數(shù)據是相同的,RAC不是分布式的系統(tǒng),因為它只有一個存儲,分布式系統(tǒng)是指數(shù)據發(fā)布在不同的數(shù)據庫上面,然后通過中間件來協(xié)調做查詢。RAC還是一臺數(shù)據庫,多個實例。

RAC架構

對于RAC來說至少有兩套物理上不同的網絡,私有網絡是專門用來實例之間的數(shù)據交互。

如果私有網絡,所有的數(shù)據都在一個網絡下面,那么那么就會對數(shù)據造成影響,嚴重的影響RAC的性能了。

實例之間數(shù)據之間傳遞使用私有網絡和對外服務提供的網絡之間是物理分開的。

所以RAC至少有兩套網絡,一個是實例之間的數(shù)據的傳遞,另外一個是公有網絡,是對外提供服務的,外面的業(yè)務是提供公有網絡的IP鏈接到數(shù)據庫的。

RAC的特點

除了具有普通的數(shù)據庫特性外:

每一個節(jié)點的instance都有自己的SGA

每一個節(jié)點的instance都有自己的background process

每一個節(jié)點的instance都有自己的redo logs

每一個節(jié)點的instance都有自己的undo表空間

每一個節(jié)點的實例都有自己的SGA,但是之間在SGA里面的數(shù)據塊都是需要相互傳遞的。

每一個節(jié)點都有自己的redo,redo不是共用的。雖然redo是放在共享磁盤上面,但是每個實例都有自己的redo,各有各的。當實例2壞了,實例1做恢復的時候可以通過實例2的redo信息來進行恢復。

每個實例都要處理自己的一套事務,所以需要使用自己的UNDO。

所以在RAC架構下面,每一套實例都有自己的東西。

RAC如何容錯的

使用SAN存儲,存儲和服務器就不在一起了,而是和服務器分離了,是一個網絡的存儲系統(tǒng),服務器是服務器,存儲是存儲,完全分離的。

當節(jié)點1壞了,不僅僅只是將業(yè)務切換到節(jié)點2,這個時候還要處理節(jié)點1壞了遺留下來的問題。主要是一些提交和未提交的事務。

比如實例1壞了,實例2就要從實例1的redo里面讀最后一次checkpoint之后的信息,就是實例1最后將所有的數(shù)據寫到磁盤之后產生的所有的redo應用,該回滾的回滾,該恢復的恢復。

即現(xiàn)將以提交和未提交的事務產生的redo都先應用,因為是最后一次checkpoint之后的信息,之前的信息是已經寫到磁盤上面了,所謂的恢復是將未寫到磁盤上面的信息進行恢復。(雖然實例壞了,但是實例的redo并沒有壞,放置在共享存儲上面,它的redo還是允許其他實例訪問的)實例2讀取實例1的redo,然后全部應用一遍,之后再回滾未提交的事務修改的數(shù)據塊,這個有點像實例的恢復。

RAC Background Processes

這里面會比單實例環(huán)境下面的實例多出幾個進程。

多出來的進程就用來保證在rac環(huán)境下面rac之間交換需要做的比如鎖,資源交換之間的控制。

RAC相關的后臺進程

LMS - Gobal Cache Service Process 全局緩存服務進程

LMS進程是在RAC環(huán)境下面最重要的一個進程,是處理全局的緩存,所謂的緩存就是數(shù)據庫一個實例到另外一個實例數(shù)據的交換進程。

LMD - Global Enqueue Service Daemon 全局查詢服務守護進程

LMON - Global Enqueue Service Monitor全局查詢服務監(jiān)視進程

LCK0 - Instance Enqueue Process 實例查詢進程

DIAG (Diagnostic Daemon) 診斷守護進程

RAC后臺進程

LMON--Lock Monitor Processes

監(jiān)控整個集群狀況,維護GCS的內存結構。

處理非正常終止的進程和實例。

當實例離開和加入集群時,鎖和資源的重新配置。

管理全局的鎖和資源。

監(jiān)控全局的鎖資源,處理死鎖和阻塞。

也被稱為Global enqueue service monitor

LMSn-- Lock Monitor Services

LMS進程主要用來管理集群內數(shù)據塊的訪問,并在不同實例的BUFFER CACHE中傳輸塊鏡像。

當在某個數(shù)據塊上發(fā)生一致性讀時,LMS負責回滾該數(shù)據塊,并將它copy到請求的實例上。

每個RAC節(jié)點至少有2個LMS進程。 也稱作 GCS (Global Cache Services) processes.

LCK--Lock Process

LCK進程主要用來管理實例間資源請求和跨實例調用操作,調用操作包括數(shù)據字典等對象的訪問;并處理非CACEH FUSION的CHACE資源請求(例如:DICTIONARY CACHE或row cache的請求)由于LMS進程負責主要的鎖管理功能,所以每個實例只有一個LCK進程。

可以看到有這么多的進程都和鎖有關系,歸根結底就是一個數(shù)據塊從一個實例到另外一個實例,維護一致性的依據就是鎖。只有通過鎖才可以維護數(shù)據塊在兩個實例之間的一致性。

LMD--Lock Monitor Daemon Process

LMD進程主要管理對全局隊列和資源的訪問,并更新相應隊列的狀態(tài),處理來自于其他實例的資源請求。

每一個全局隊列的當前狀態(tài)存儲在相應的實例共享內存中,該狀態(tài)表明該實例具有相應的權利使用該資源。

一個實例(master)的共享內存中存在一個特殊的隊列,該隊列紀錄來自其他遠程實例的資源請求,當遠程實例的LMD進程發(fā)出一個資源請求時,該請求指向master實例的LMD,當master實例的LMD進程受到該請求后,在共享內存中的特殊隊列中監(jiān)測該資源是否無效,如果有效則LMD進程更新該資源對列的狀態(tài),并通知請求資源的LMD進程該資源隊列可以使用了,如果資源隊列正在被其他實例使用或者當前無效,則LMD進程通知正在使用中的實例的LMD進程應該釋放該資源,等資源釋放變得有效時,MASTER實例的LMD進程更新該資源隊列的狀態(tài)并通知請求資源實例的LMD進程該資源隊列可以使用了。

DIAG (Diagnostic Daemon)

Oracle10g新的后臺進程。

例行對實例的健康情況進行監(jiān)控,同時也監(jiān)控實例是否掛起或者出現(xiàn)死鎖。

收集實例和進程出錯時的關鍵診斷信息。

這個進程會更新alert日志文件,寫入一些重要告警信息。

上面這些都是RAC下面實例多出的進程,下面就是RAC自己的進程了。

RAC的服務進程

獨立的服務CRS

  • CRS- 集群資源服務
  • CSS - 集群同步服務
  • EVMD 事件管理服務
  • ONS--事件的發(fā)布及訂閱服務

用來協(xié)調兩個實例之間來訪問存儲,這個架構就是CRS。在RAC下面因為要對全局資源進行控制,所以實例不能直接訪問存儲,必須通過CRS層來訪問。(RAC指的是架構,具體是由CRS這套服務來實現(xiàn)的,這套服務里面有上面的四個服務組成)。

CRS--Cluster Ready Services

管理集群內高可用操作的基本程序。

CRS管理的任何事物被稱之為資源

數(shù)據庫、實例、監(jiān)聽、虛擬IP(VIP)地址、應用進程等等

CRS是根據存儲于OCR中的資源配置信息來管理這些資源

當一資源的狀態(tài)改變時,CRS進程生成一個事件。

CSS--Cluster Synchronization Service

管理集群節(jié)點的成員資格

控制哪個結點為集群的成員、結點在加入或離開集群時通知集群成員來控制

集群的配置信息

此進程發(fā)生故障導致集群重啟

EVM--Event Management

事件管理守護進程。

發(fā)布CRS創(chuàng)建事件的后臺進程

ONS--Oracle Notification Service

通信的快速應用通知事件的發(fā)布及訂閱服務

Oracle集群體系結構

Oracle RAC,全稱是Oracle Real Application Cluster,即正真的應用集群,是Oracle提供的一個并行集群系統(tǒng),整個集群系統(tǒng)由Oracle Clusterware(集群就緒軟件)和Real Aplication(RAC)兩大部分組成。

Oracle RAC的實質是位于不同的操作系統(tǒng)的Oracle實例節(jié)點同時訪問訪問同一個Oracle數(shù)據庫,每個節(jié)點間可以通過私有網絡進行通信,互相監(jiān)控節(jié)點的運行狀態(tài),Oracle數(shù)據庫所有的數(shù)據文件,聯(lián)機日志文件,控制文件等均放在集群的共享設備上面,而共享設備可以是RAW,ASM,OCFS2等,所有集群節(jié)點可以同時讀寫共享存儲,Oracle RAC的基本拓撲結構如下。(RAW就是裸設備,沒有文件系統(tǒng),就是直接在硬盤上面進行讀寫)。

這個圖分為三個部分,第一個部分就是客戶端,第二個部分是節(jié)點部分,最后一部分是共享存儲部分。

作為用戶會去訪問集群數(shù)據庫,在節(jié)點層有許多節(jié)點,每一個節(jié)點相當于一個主機,或者一個操作系統(tǒng)。每一個操作系統(tǒng)是安裝在一臺服務器上獨立完成的。最底層是os,即操作系統(tǒng)。在操作系統(tǒng)上層安裝的是clusterware,這是一個高可用的集群軟件。再上面一層是oracle rac數(shù)據庫,這個數(shù)據庫還啟動了rac監(jiān)聽,每一個節(jié)點都是有os,clusterware,oracle rac listener三部分組成的。

在10g之前的產品,如果要使用rac集群就必須要借助第三方高可用軟件。在10g之后Oracle推出了自己的一款clusterware,對于高可用軟件這部分可以使用oracle自身的,也可以使用第三方的。

在每一個節(jié)點上面啟動相關的實例,每一個實例會啟動相關的監(jiān)聽端口。這個端口就是監(jiān)聽客戶端過來的請求,在Oracle集群當中可以有多個節(jié)點。

共享存儲是rac為了實現(xiàn)數(shù)據的共享,實現(xiàn)共享方式有很多種,比如raw,asm等。

由拓撲結構可知:

一個Oracle Rac數(shù)據庫有多個服務器節(jié)點組成,每個服務節(jié)點上面都有自己獨立的OS,ClusterWare,Oracle RAC數(shù)據庫程序等,每個節(jié)點都有自己的網絡監(jiān)聽器。ClusterWare是一個集群軟件,主要用于集群系統(tǒng)管理,Oracle RAC數(shù)據庫程序用于提供Oracle實例進程,以提供客戶端訪問集群系統(tǒng),監(jiān)聽服務主要用于監(jiān)控自己網絡端口的信息,所有的服務和程序提供操作系統(tǒng)都去訪問一個共享存儲,最終完成數(shù)據的讀寫。共享存儲的方式有很多種,可以通過自動存儲管理(ASM),Oracle集群文件系統(tǒng)(OCFS),裸設備(RAW),網絡共享區(qū)域存儲(NAS)等來保證整個集群系統(tǒng)的數(shù)據一致性。

Oracle rac數(shù)據庫和經常所說的數(shù)據庫有什么區(qū)別呢?Oracle rac數(shù)據庫主要是提供oracle實例進程,以供客戶端訪問集群系統(tǒng)。從Oracle運行機制來說,集群中每臺服務器就是一個Oracle實例,多個實例對應同一個Oracle數(shù)據庫,組成了Oracle數(shù)據庫的集群。

從圖中可以看出,運行在兩個節(jié)點上面的數(shù)據庫訪問同一個RAC數(shù)據庫,并且兩個節(jié)點的本地磁盤僅用存放Oracle安裝程序和ClusterWare軟件,而在共享存儲上,存放著Oracle的控制文件,數(shù)據文件,聯(lián)機日志文件,歸檔日志文件等,這是安裝Oracle Rac時的一種數(shù)據存儲方式,其實,RAC提供了多種數(shù)據存儲方式。

集群里面的每一個服務器或者里面的每一個節(jié)點就是一個Oracle實例,有多個節(jié)點或者說是多個實例同時訪問同一個數(shù)據庫。從上圖可以看到節(jié)點的本地磁盤上面存儲的是Oracle的安裝程序和clusterware集群軟件的程序。在共享存儲上面存放著Oracle的數(shù)據文件,控制文件,聯(lián)機文件等等。

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Oracle表的分類以及相關參數(shù)的詳解

    Oracle表的分類以及相關參數(shù)的詳解

    本篇文章是對Oracle中表的分類以及相關參數(shù)進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • oracle中截斷表的使用介紹

    oracle中截斷表的使用介紹

    Oracle中如果刪除了表中的某一條數(shù)據,還可以通過回滾操作(rollback)進行回滾,假如想清空一張表的數(shù)據,但是又不想使其能進行回滾操作,就可以立刻釋放資源,這時就需要使用截斷表
    2012-11-11
  • Oracle去掉特殊字符的具體方法

    Oracle去掉特殊字符的具體方法

    這篇文章介紹了Oracle去掉特殊字符的實例代碼,有需要的朋友可以參考一下
    2013-10-10
  • Oracle和MySQL的數(shù)據導入為何差別這么大

    Oracle和MySQL的數(shù)據導入為何差別這么大

    這篇文章主要介紹了Oracle和MySQL的數(shù)據導入有哪些區(qū)別,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-08-08
  • Oracle將查詢的結果放入一張自定義表中并再查詢數(shù)據

    Oracle將查詢的結果放入一張自定義表中并再查詢數(shù)據

    可以將查詢的結果放入到一張自定義表中,同時可以再從這個自定義的表中查詢數(shù)據,詳細的sql如下,感興趣的朋友不要錯過
    2014-08-08
  • Oracle提高sql執(zhí)行效率的心得建議

    Oracle提高sql執(zhí)行效率的心得建議

    sql執(zhí)行效率一直都是為人所關注,那到底應該怎樣提高呢?有什么比較好的方法,下面與大家分享下比較不錯的建議,感興趣的朋友可以參考下,希望對大家有所幫助
    2013-08-08
  • Oracle聯(lián)機日志文件與歸檔文件詳細介紹

    Oracle聯(lián)機日志文件與歸檔文件詳細介紹

    這篇文章主要介紹了Oracle聯(lián)機日志文件與歸檔文件,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-11-11
  • Oracle 10g利用amdu抽取數(shù)據文件的方法教程

    Oracle 10g利用amdu抽取數(shù)據文件的方法教程

    這篇文章主要給大家介紹了關于Oracle 10g利用amdu抽取數(shù)據文件的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-12-12
  • Oracle數(shù)據庫常用命令整理(實用方法)

    Oracle數(shù)據庫常用命令整理(實用方法)

    這篇文章主要介紹了Oracle數(shù)據庫常用命令整理(實用方法),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • Oracle進行數(shù)據庫升級和降級的操作代碼

    Oracle進行數(shù)據庫升級和降級的操作代碼

    數(shù)據庫升級是一個復雜的過程,涉及到備份現(xiàn)有數(shù)據、安裝新版本的數(shù)據庫軟件、遷移數(shù)據和應用程序的兼容性測試等步驟,數(shù)據庫降級通常比升級更具挑戰(zhàn)性,所以本文給大家介紹了Oracle進行數(shù)據庫升級和降級的操作,需要的朋友可以參考下
    2024-09-09

最新評論