1.CRS簡介
湘潭網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)自2013年起到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
從Oracle 10G開始,oracle引進(jìn)一套完整的集群管理解決方案—-Cluster-Ready Services,它包括集群連通性.消息和鎖.負(fù)載管理等框架.從而使得RAC可以脫離第三方集群件,當(dāng)然,CRS與第三方集群件可以共同使用.
(1).CRS進(jìn)程
CRS主要由三部分組成,三部分都作為守護(hù)進(jìn)程出現(xiàn)
<1>CRSD:資源可用性維護(hù)的主要引擎.它用來執(zhí)行高可用性恢復(fù)及管理操作,諸如維護(hù)OCR及管理應(yīng)用資源,它保存著集群的信息狀態(tài)和OCR的配置,此進(jìn)程以root權(quán)限運(yùn)行.
<2>EVMD:事件管理守護(hù)進(jìn)程.此進(jìn)程還負(fù)責(zé)啟動(dòng)racgevt進(jìn)程以管理FAN服務(wù)器端調(diào)用,此進(jìn)程以root權(quán)限運(yùn)行
<3>OCSSD:集群同步服務(wù)進(jìn)程.管理集群節(jié)點(diǎn)的成員資格,它以fatal方式啟動(dòng),因此進(jìn)程發(fā)生故障將導(dǎo)致集群重啟,以防止數(shù)據(jù)壞死.同時(shí),CSS還維護(hù)集群內(nèi)的基本鎖功能,以及負(fù)責(zé)監(jiān)控voting disk的腦裂故障。它以O(shè)racle權(quán)限運(yùn)行
此外,還有一個(gè)進(jìn)程OPRCD,他是集群中的進(jìn)程監(jiān)視程序,僅當(dāng)平臺(tái)上的CRS不使用廠商群件時(shí)候才出現(xiàn),且無論運(yùn)行了多少實(shí)例,每個(gè)節(jié)點(diǎn)只會(huì)存在一組后臺(tái)進(jìn)程.
來看一下這幾個(gè)守護(hù)進(jìn)程:
rac1-> cat/etc/inittab
…………………………….
# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm –nodaemon
h2:35:respawn:/etc/init.d/init.evmd run >/dev/null 2>&1
h3:35:respawn:/etc/init.d/init.cssd fatal >/dev/null 2>&1
h4:35:respawn:/etc/init.d/init.crsd run >/dev/null 2>&1
(2).Virtual IP Address
Oracle 10G RAC下,有3個(gè)重要的IP.
① Public IP ② Private IP ③ Vitual IP
Public IP為數(shù)據(jù)庫所在主機(jī)的公共網(wǎng)絡(luò)IP,Private IP被用來私有高速互聯(lián),而Oracle較前版本,增加了一個(gè)虛擬IP,用來節(jié)點(diǎn)發(fā)生故障時(shí)候更快的故障轉(zhuǎn)移,oracle利用每個(gè)節(jié)點(diǎn)的lisnter偵聽VIP,一旦發(fā)生故障,VIP將進(jìn)行實(shí)際的故障切換,從而在其他的可用的節(jié)點(diǎn)上保持聯(lián)機(jī),從而降低客戶應(yīng)用程序意識(shí)到節(jié)點(diǎn)故障所需要的時(shí)間。
VIP與Public IP必須在同一個(gè)網(wǎng)段內(nèi)。
(3).OCR,Voting disk
OCR(oracle集群注冊(cè)表)和Voting disk(表決磁盤)是CRS下的兩個(gè)重要組件,它們必須放在共享磁盤上,以保證每個(gè)節(jié)點(diǎn)都能對(duì)其訪問。
OCR包含了針對(duì)集群的一些配置信息,諸如:集群數(shù)據(jù)庫中的節(jié)點(diǎn)列表.CRS應(yīng)用程序.資源文件以及事件管理器的授權(quán)信息。他負(fù)責(zé)對(duì)集群內(nèi)的資源追蹤,從而獲知資源正在哪里運(yùn)行,應(yīng)該可以在哪里運(yùn)行。
Voting disk用來解決split-brain故障:如果節(jié)點(diǎn)丟失了與集群中其他節(jié)點(diǎn)的網(wǎng)絡(luò)連接,這些沖突由表決磁盤中的信息來解決
2.ASM相關(guān)
ASM (Automated Storage Management) 是Oracle 10G引入的一種文件類型,他提供了直接的I/O讀寫,是RAC體系下一套不錯(cuò)的對(duì)數(shù)據(jù)文件存儲(chǔ)規(guī)劃的方案. ASM可以自動(dòng)管理磁盤組,并提供數(shù)據(jù)冗余和優(yōu)化.后面章節(jié)會(huì)就ASM的管理以及ASM下的RAC管理,單獨(dú)講解.
3.RAC存儲(chǔ)/網(wǎng)絡(luò)需求
(1).存儲(chǔ)需求
共享存儲(chǔ)器是RAC的重要組件之一。它要求集群內(nèi)的節(jié)點(diǎn)可以同時(shí)讀寫物理磁盤。目前,支持共享存儲(chǔ)的文件類型也比較多,像Oracle自身提供的ASM,OCFS2以及三方提供的群集文件系統(tǒng),都是可以選擇的類型。
表1.1.1顯示了RAC 體系架構(gòu)下各部分所支持的存儲(chǔ)類型 (暫不考慮三方集群文件系統(tǒng),就ASM/raw device/OCFS2和普通文件系統(tǒng)來說)
表1.1.1 RAC各部分所支持的存儲(chǔ)類型
類別 |
支持的存儲(chǔ)類型 |
存儲(chǔ)位置 |
備注 |
Cluster軟件 |
OCFS2,普通文件系統(tǒng) |
共享磁盤/本地磁盤 |
|
OCR,Voting disk |
OCFS2,raw device |
共享磁盤 |
|
數(shù)據(jù)庫軟件 |
OCFS2,普通文件系統(tǒng) |
共享磁盤/本地磁盤 |
|
數(shù)據(jù)庫文件 |
OCFS2,raw device,ASM |
共享磁盤 |
|
歸檔日志文件 |
OCFS2,ASM,普通文件系統(tǒng) |
共享磁盤/本地磁盤 |
|
備份/恢復(fù)文件 |
OCFS2,ASM,普通文件系統(tǒng) |
共享磁盤/本地磁盤 |
|
閃回日志文件 |
OCFS2,ASM |
共享磁盤 |
|
(2).網(wǎng)絡(luò)需求
每個(gè)節(jié)點(diǎn)主機(jī)上至少需要2張物理網(wǎng)卡,以便分配公有IP和私有IP地址。對(duì)于私有IP連接,每個(gè)集群節(jié)點(diǎn)通過專用高速網(wǎng)絡(luò)連接到所有其他節(jié)點(diǎn),目的在于集群上的節(jié)點(diǎn)和實(shí)例交換信息狀態(tài)(鎖信息,全局緩存信息等)。通過高速互聯(lián),Cache Fusion得以實(shí)現(xiàn)。
在實(shí)際環(huán)境中,高速互聯(lián)至少需要配置GB級(jí)的以太網(wǎng),而且,最好不要使用交叉直連。
較好的解決方案是節(jié)點(diǎn)間配置專用交換機(jī),這樣避免因?yàn)榧荷弦粋€(gè)節(jié)點(diǎn)宕掉而影響另外節(jié)點(diǎn)的正常工作。
4.其他
(1).后臺(tái)進(jìn)程
圖1.4.1 Backgroud Process in RAC 10g
由于要維護(hù)多個(gè)實(shí)例同時(shí)訪問資源所必需的鎖定,因此,同single instance相比,RAC下增加了額外的一些進(jìn)程。專門針對(duì)RAC的進(jìn)程有如下幾種:
1. LMS(Global Cache Service) 全局緩存服務(wù)進(jìn)程
LMS負(fù)責(zé)為緩存融合請(qǐng)求在實(shí)例間傳遞塊。當(dāng)一致性請(qǐng)求的時(shí)候,LMS首先回滾塊,創(chuàng)建塊的讀一致性映像(CR),然后將該一致性版本通過高速互聯(lián)傳遞到處理此請(qǐng)求的遠(yuǎn)程實(shí)例中的前臺(tái)進(jìn)程上,LMS進(jìn)程保證了在同一時(shí)刻只允許一個(gè)實(shí)例去更新數(shù)據(jù)塊。
LMS進(jìn)程的數(shù)量由初始化參數(shù)GCS_SERVER_PROCESSES控制。Oracle最大支持36個(gè)LMS進(jìn)程(0–9 and a–z),該初始化參數(shù)默認(rèn)值為2。
2. LMD (Global Enqueue Service Daemon)全局隊(duì)列服務(wù)守護(hù)進(jìn)程
LMD負(fù)責(zé)管理全局隊(duì)列和全局資源訪問,并更新相應(yīng)隊(duì)列的狀態(tài),此外還負(fù)責(zé)遠(yuǎn)程節(jié)點(diǎn)資源的請(qǐng)求與死鎖的檢測(cè)。LMD與LMS進(jìn)程互交工作,共同維護(hù)GRD。
3. LMON (Global Enqueue Service Monitor)全局隊(duì)列服務(wù)監(jiān)控器進(jìn)程
LMON是全局隊(duì)列服務(wù)的監(jiān)控器,他負(fù)責(zé)檢查集群內(nèi)實(shí)例的死亡情況并發(fā)起重新配置,當(dāng)實(shí)例加入或者離開集群的時(shí)候,它負(fù)責(zé)重新配置鎖和資源。
4. LCK(Lock process)鎖進(jìn)程
LCK管理那些不是緩存融合的請(qǐng)求,例如library cahe, row cache.由于LMS進(jìn)程提供了主要的鎖管理功能,因此每個(gè)節(jié)點(diǎn)實(shí)例上只有一個(gè)LCK進(jìn)程。
DIAG (The Diagnostic Daemon)診斷守護(hù)進(jìn)程
DIAG負(fù)責(zé)監(jiān)控實(shí)例的健康狀況并捕獲進(jìn)程失敗的信息,并將失敗信息寫入用于失敗分析,該進(jìn)程自動(dòng)啟動(dòng)且不需要人為調(diào)整,若失敗則自動(dòng)重新啟動(dòng)。
(2).緩存融合/緩存一致性
Cache Fusion是RAC工作原理的一個(gè)中心環(huán)節(jié).他的本質(zhì)就是通過互聯(lián)網(wǎng)絡(luò)在集群內(nèi)各節(jié)點(diǎn)的SGA之間進(jìn)行塊傳遞,從而避免了首先將塊推送到磁盤,然后再重新讀入其他實(shí)例的緩存中,從而最大限度的減少I/O。當(dāng)一個(gè)塊被讀入RAC環(huán)境中某個(gè)實(shí)例的緩存時(shí),該塊會(huì)被賦予一個(gè)鎖資源(與行級(jí)鎖不同),以確保其他實(shí)例知道該塊正在被使用。之后,如果另一個(gè)實(shí)例請(qǐng)求該塊的一個(gè)拷貝,而該塊已經(jīng)處于前一個(gè)實(shí)例的緩存內(nèi),那么該塊會(huì)通過互聯(lián)網(wǎng)絡(luò)直接被傳遞到另一個(gè)實(shí)例的SGA。如果內(nèi)存中的塊已經(jīng)被改變,但改變尚未提交,那么將會(huì)傳遞一個(gè)CR副本。這就意味著,只要可能,數(shù)據(jù)塊無需寫回磁盤即可在各實(shí)例緩存之間移動(dòng),從而避免了同步多實(shí)例的緩存所花費(fèi)的額外I/O,由此,需要互聯(lián)網(wǎng)絡(luò)的速度是高速的,需要快于磁盤訪問的速度.
GCS負(fù)責(zé)維護(hù)全局緩沖區(qū)內(nèi)的緩存一致性,LMS進(jìn)程是其主要組成部分。GCS確保同一時(shí)刻某個(gè)塊上,只能有來自一個(gè)實(shí)例上的進(jìn)程能對(duì)其修改,同時(shí),并獲得該塊的當(dāng)前版本和前映像,以及塊所處的狀態(tài)(NULL,,Shared, Exclusive),模式(local/gobal)。
GES負(fù)責(zé)維護(hù)dictionary cache和library cache緩存一致性(這個(gè)與LCK是不同的)。由于存在某個(gè)節(jié)點(diǎn)上對(duì)數(shù)據(jù)字典的修改(比如ddl和dcl對(duì)object屬性的修改),GES負(fù)責(zé)同步各節(jié)點(diǎn)上的字典緩存,消除差異。GES確保請(qǐng)求訪問相同對(duì)象的多個(gè)實(shí)例間不會(huì)出現(xiàn)死鎖。
GRD包含了所有共享資源的當(dāng)前狀態(tài)信息,它由GES和GCS共同維護(hù),GRD貯存在內(nèi)存中,被用來管理全局資源活動(dòng)。比如:當(dāng)一個(gè)實(shí)例第一次讀取某塊到SGA的時(shí)候,該塊的角色為LOCAL,GCS記錄此狀態(tài)到GRD,一旦有另外的實(shí)例請(qǐng)求該塊,GCS會(huì)更新GRD,將此塊的角色由LOCAL變?yōu)镚LOBAL。
二 RAC安裝
不用把安裝RAC看成是多么困難的一件事情.足夠細(xì)心和耐性,充分的準(zhǔn)備工作,然后加上一丁點(diǎn)運(yùn)氣,相信你能很快部署好一個(gè)RAC測(cè)試環(huán)境.當(dāng)然,虛擬環(huán)境和實(shí)際環(huán)境的安裝不盡相同,而且,生產(chǎn)系統(tǒng)環(huán)境的搭建需要經(jīng)過縝密的規(guī)劃和系統(tǒng)的測(cè)試.但大同小異,安裝過程不該稱為我們的絆腳石.
1.安裝規(guī)劃部署
安裝之前需重點(diǎn)規(guī)劃RAC系統(tǒng)各文件的存儲(chǔ)類型.可以參見表1.3.1。一個(gè)好的存儲(chǔ)規(guī)劃方案,可以省去很多后續(xù)的維護(hù)成本。
2.安裝過程
安裝過程可以參考o(jì)racle聯(lián)機(jī)文檔install guid。(Vmware安裝可以參考Vincent Chan發(fā)表在oracle網(wǎng)站上的一文<使用 VMware Server 在 Oracle Enterprise Linux 上安裝 Oracle RAC 10g>.文中講的很詳細(xì),在此簡單帶過.)。簡單列一下安裝RAC的幾個(gè)重要步驟
配置系統(tǒng)內(nèi)核參數(shù)以及環(huán)境
配置共享存儲(chǔ)
安裝CRS軟件
安裝RDBMS軟件
創(chuàng)建數(shù)據(jù)庫以及配置其他
3.幾點(diǎn)注意問題.
特別提一下vmware下的時(shí)間同步問題,在我的環(huán)境下,兩節(jié)點(diǎn)上時(shí)間差別很大.一開始采用vmware-toolbox工具同步宿主時(shí)間,效果不理想.可以在每個(gè)節(jié)點(diǎn)上放置一個(gè)小腳本,讓他每隔一段時(shí)間以另一個(gè)節(jié)點(diǎn)為基準(zhǔn)同步時(shí)間.這樣,時(shí)間同步問題迎刃而解.在我的環(huán)境下,我設(shè)置每20秒同步一次時(shí)間.
rac1>cat date.sh
#!/bin/sh
while true
do
rdate -s rac2>dev/null 2>&1
sleep 10
done
三 RAC管理維護(hù)
同Single instance相比,RAC的管理維護(hù)要復(fù)雜一些。10g給我們提供了一個(gè)強(qiáng)大的EM管理工具,將很多管理維護(hù)工作簡單和界面化。我們也應(yīng)當(dāng)習(xí)慣使用EM來高效的完成更多的工作。本文以下部分,將暫不討論EM方面的管理,著重于命令行方式。
1.CRS管理維護(hù)
(1).CRS相關(guān)的接口命令
CRS在10G RAC體系下有著舉足輕重的作用。Oracle也提供了一些命令接口讓我們?cè)\斷維護(hù)它。
<1>CRS_*
10G RAC下,有這么幾組crs_命令維護(hù)CRS資源。
[root@rac2 bin]# ls $ORA_CRS_HOME/bin|grep "crs_"|grep -v bin
crs_getperm crs_profile crs_register crs_relocate crs_setperm crs_start crs_stat crs_stop crs_unregister
下面分別講述一下它們。
集群資源查詢:CRS_STAT
可以用來查看RAC中各節(jié)點(diǎn)上resources的運(yùn)行狀況,Resources的屬性等。
例如使用-t選項(xiàng),檢查資源狀態(tài):
[root@rac1 ~]# crs_stat –t
Name Type Target State Host
ora.demo.db application ONLINE ONLINE rac2
ora....o1.inst application ONLINE ONLINE rac1
ora....o2.inst application ONLINE ONLINE rac2
ora....SM1.asm application ONLINE ONLINE rac1
ora....C1.lsnr application ONLINE ONLINE rac1
ora.rac1.gsd application ONLINE ONLINE rac1
ora.rac1.ons application ONLINE ONLINE rac1
ora.rac1.vip application ONLINE ONLINE rac1
ora....SM2.asm application ONLINE ONLINE rac2
ora....C2.lsnr application ONLINE ONLINE rac2
ora.rac2.gsd application ONLINE ONLINE rac2
ora.rac2.ons application ONLINE ONLINE rac2
ora.rac2.vip application ONLINE ONLINE rac2
利于-p選項(xiàng),獲得資源配置屬性。
[root@rac2 bin]# crs_stat -p ora.rac2.vip
NAME=ora.rac2.vip
TYPE=application
ACTION_SCRIPT=/opt/oracle/product/10.2.0/crs_1/bin/racgwrap
ACTIVE_PLACEMENT=1
AUTO_START=1
CHECK_INTERVAL=60
DESCRIPTION=CRS application for VIP on a node
…………………………………………
USR_ORA_STOP_MODE=immediate
USR_ORA_STOP_TIMEOUT=0
USR_ORA_VIP=192.168.18.112
利用-p參數(shù),獲得資源權(quán)限。
[root@rac2 bin]# crs_stat -ls|grep vip
ora.rac1.vip root oinstall rwxr-xr—
ora.rac2.vip root oinstall rwxr-xr--
主要參數(shù)有-t/-v/-p/-ls/-f等。具體可以參見crs_stat –h
集群資源啟動(dòng)/停止CRS_START/CRS_STOP
這組命令主要負(fù)責(zé)各個(gè)節(jié)點(diǎn)上resources的啟動(dòng)/停止。可以針對(duì)全局資源(例如:crs_stop –all,表示停止所有節(jié)點(diǎn)上的resources),也可以針對(duì)節(jié)點(diǎn)上的某個(gè)特定的資源(例如:crs_start ora.rac2.ons,表示啟動(dòng)節(jié)點(diǎn)rac2上的ONS)。
集群資源配置CRS_REGISTER/CRS_UNREGISTER/CRS_PROFILE/CRS_SETPERM
這組命令主要負(fù)責(zé)集群資源的添加刪除以及配置。
CRS_PROFILE:用來生成resource的profile文件(當(dāng)然我們也可以手動(dòng)編輯或者通過現(xiàn)有生成),默認(rèn)存放路徑$ORA_CRS_HOME/crs/profile目錄下,加參數(shù)-dir 手動(dòng)指定目錄。默認(rèn)名稱為resource_name.cap.
crs_profile -create resource_name -t application –a .. –r .. –o..
表3.1為 crs_profile中參數(shù)配置說明(比較多,挑一些說吧):
參數(shù)名稱 |
說明 |
參數(shù)指令(以create為例) |
NAME |
資源名稱 |
crs_profile –create resource_name |
TYPE |
資源類型(application, generic) |
crs_profile – create resource_name–t… |
ACTION_SCRIPT |
用來管理HA方案腳本 |
crs_profile – create resource_name–a … |
ACTIVE_PLACEMENT |
資源貯存的位置/節(jié)點(diǎn) |
crs_profile –create resource_name–o –ap … |
AUTO_START |
資源自啟動(dòng) |
crs_profile –create resource_name–o –as … |
CHECK_INTERVAL |
資源監(jiān)控間隔 |
crs_profile –create resource_name–o –ci … |
FAILOVER_DELAY |
資源failover的等待時(shí)間 |
crs_profile –create resource_name–o –fd … |
FAILURE_INTERVAL |
資源重啟嘗試間隔 |
crs_profile –create resource_name–o –fi … |
FAILURE_THRESHOLD |
資源重啟嘗試次數(shù)(最大20次) |
crs_profile –create resource_name–o –ft … |
HOSTING_MEMBERS |
資源啟動(dòng)或者failover的首要節(jié)點(diǎn)選擇 |
crs_profile –create resource_name–h … |
PLACEMENT |
資源啟動(dòng)或者failover的節(jié)點(diǎn)選擇模式(balanced,balanced,balanced) |
crs_profile – create resource_name-p |
REQUIRED_RESOURCES |
當(dāng)前資源所依賴的資源 |
crs_profile – create resource_name-r |
RESTART_ATTEMPTS |
資源重配置之前的嘗試啟動(dòng)次數(shù) |
crs_profile –create resource_name–o –ra … |
SCRIPT_TIMEOUT |
等待ACTION_SCRIPT的結(jié)果返回時(shí)間 |
crs_profile –create resource_name–o –st … |
USR_ORA_VIP |
Vip地址 |
crs_profile –create vip_name -t application –a $ORA_CRS_HOME/bin/uservip–o oi=…,ov=…,on=… |
crs_profile -update resource_name … 用來更新現(xiàn)有profile(更新的只是profile,而并不是對(duì)已經(jīng)注冊(cè)到crs里面的資源屬性的更改)
crs_register負(fù)責(zé)將resource的注冊(cè)到OCR。注冊(cè)的方法是先生成profile,然后運(yùn)行
crs_register resource [-dir …]命令,同時(shí),crs_register也具有update resource功能,具體辦法可以更新resource對(duì)應(yīng)的profile文件,然后運(yùn)行crs_register -u resource_name [-dir …] 或者直接發(fā)布crs_register –update resource_name …
比如,我將rac節(jié)點(diǎn)上的vip改為手動(dòng)啟動(dòng)。
[root@rac1 crs]# crs_register -update ora.rac1.vip -o as=0
[root@rac1 crs]# crs_stat -p ora.rac1.vip|grep AUTO_START
AUTO_START=0
crs_unregister負(fù)責(zé)將resource從ocr中移除。必要時(shí)候需要加-f參數(shù)。
crs_setperm用來設(shè)置resource的權(quán)限(諸如設(shè)置owner,用戶的讀寫權(quán)限等),更改owner用-o參數(shù),更改group用-g,更改用戶權(quán)限用-u,在此不多舉例了。
<2>.CRSCTL
用crsctl check crs,檢查crs的健康情況。
[root@rac1 ~]# crsctl check crs
CSS appears healthy
CRS appears healthy
EVM appears healthy
用crsctl控制CRS服務(wù)
crsctl start|stop|enable|disable crs
用crsctl啟動(dòng)/停止resource
[root@rac1 ~]# crsctl stop resources
Stopping resources.
Successfully stopped CRS resources
[root@rac1 ~]# crsctl start resources
Starting resources.
Successfully started CRS resources
用crsctl檢查以及添加、刪除voting disk
下面講述。
更多參見crsctl help。
<3>SRVCTL
SRVCTL是一個(gè)強(qiáng)大的CRS和RDBMS的管理配置工具。相關(guān)用法參照srvctl -h
(1) srvctl add/delete .. 添加刪除資源。譬如我們?cè)谶M(jìn)行數(shù)據(jù)庫單實(shí)例遷移到rac的時(shí)候,可以用這個(gè)工具手工注冊(cè)database或者asm實(shí)例到OCR。
(2) srvctl status … 資源的狀態(tài)監(jiān)測(cè)
(3) srvctl start/stop … 資源的啟動(dòng)/停止,這個(gè)可以和crs_start/crs_stop互交使用。
(4) srvctl modify .. 重新定義資源的屬性
………………………………………………………..
(2).OCR的管理維護(hù)
<1> OCR的狀態(tài)驗(yàn)證:
可以使用ocrcheck工具來驗(yàn)證OCR的狀態(tài)以及空間使用情況。在Lunix下,/etc/oracle/ocr.loc文件記錄了OCR使用的設(shè)備情況。
[root@rac1]# ocrcheck
Status of Oracle Cluster Registry is as follows :
Version : 2
Total space (kbytes) : 497896
Used space (kbytes) : 3996
Available space (kbytes) : 493900
ID : 958197763
Device/File Name : /dev/raw/raw5
Device/File integrity check succeeded
Device/File not configured
Cluster registry integrity check succeeded
<2> 在線添加/刪除ocrmirror
OCR支持一個(gè)鏡像,添加/刪除鏡像可以在線完成,主要在某個(gè)online的節(jié)點(diǎn)上執(zhí)行命令即可。
[root@rac1]#ocrconfig -replace ocrmirror /dev/raw/raw5
[root@rac1 oracle]# cat /etc/oracle/ocr.loc
#Device/file getting replaced by device /dev/raw/raw5
ocrconfig_loc=/dev/raw/raw1
ocrmirrorconfig_loc=/dev/raw/raw5
可見,ocr.loc被自動(dòng)更新。
移除ocr或者鏡像的時(shí)候,只要不帶路徑,即可。
當(dāng)一個(gè)crs中存在ocr和鏡像的時(shí)候,如果移除ocr,鏡像會(huì)自動(dòng)轉(zhuǎn)變成ocr的角色。
[root@rac1]# ocrconfig -replace ocr
[root@rac1]# cat /etc/oracle/ocr.loc
#Device/file /dev/raw/raw1 being deleted
ocrconfig_loc=/dev/raw/raw5
可以看到現(xiàn)在的ocrconfig_loc自動(dòng)變?yōu)橄惹暗膐crmirrorconfig_loc設(shè)備。
<3> 邏輯備份/恢復(fù)
備份命令:
ocrconfig –export [ path ]
還原命令
ocrconfig –import [ path ]
還原OCR的時(shí)候,需要停掉各節(jié)點(diǎn)crs服務(wù)。還原完成后,重新啟動(dòng)CRS。(如果有必要,注意在每個(gè)節(jié)點(diǎn)分別修改ocr.loc的對(duì)應(yīng)使用設(shè)備)
<4> 物理備份/恢復(fù)
CRSD負(fù)責(zé)每4個(gè)小時(shí)進(jìn)行一次OCR的備份,默認(rèn)備份路徑在$ORA_CRS_HOME/cdate/crs下,
可以使用ocrConfig –showbackup查看備份情況,如果想更改物理備份路徑,可以使用ocrconfig –backuploc [ path ] 來完成
物理恢復(fù)命令:
ocrconfig –restore [ path ]
同樣,還原OCR的時(shí)候,需要停掉各節(jié)點(diǎn)crs服務(wù)。還原完成后,重新啟動(dòng)CRS。(如果有必要,注意在每個(gè)節(jié)點(diǎn)分別修改ocr.loc的對(duì)應(yīng)使用設(shè)備)
<5> ocrdump
ocrdump可以將ocr信息導(dǎo)出成ascii文本,用于給Oracle Supoort提供檢修。
命令如下:
ocrdump
(3).Voting disk管理維護(hù)
Voting disk的維護(hù)相對(duì)簡單些。
<1> Votingdisk 狀態(tài)查詢
[root@rac1]# crsctl query css votedisk
0 /dev/raw/raw2
located 1 votedisk(s).
<2>在線添加、刪除votingdisk
Oracle建議配置奇數(shù)個(gè)votingdisk,添加/刪除可以在線完成,在某個(gè)online的節(jié)點(diǎn)上執(zhí)行命令即可。
添加votingdisk命令:
crsctl add css votedisk [path] -force
刪除votingdisk命令:
crsctl add css votedisk [path] -force
<3>votingdisk備份恢復(fù)
備份、恢復(fù)采用dd命令?;謴?fù)的時(shí)候,注意停掉各節(jié)點(diǎn)上的CRS服務(wù)。
2.RDBMS管理維護(hù)
(1).spfile以及相關(guān)參數(shù)說明
最普遍情況,節(jié)點(diǎn)共用同一個(gè)spfile文件,放置在共享存儲(chǔ)上,而每個(gè)節(jié)點(diǎn)上,相應(yīng)目錄下有一個(gè)pfile文件,而這個(gè)pfile文件指向共享存儲(chǔ)上的spfile。
當(dāng)我們需要修改某一節(jié)點(diǎn)上的paremeter的時(shí)候,需要顯示的指定sid,例如:
SQL>alter system set sga_target=1024M scope=spfile sid=’rac1’;
System Altered.
這樣,節(jié)點(diǎn)rac1上的sga_target參數(shù)被修改,不會(huì)影響其余節(jié)點(diǎn)上的參數(shù)設(shè)置。如果不加sid,默認(rèn)為sid=’*’,也就是對(duì)所有節(jié)點(diǎn)生效。
RAC下,有一些不同與單實(shí)例的參數(shù),列舉如下:
① cluster_database
一般情況下,該參數(shù)在rac各實(shí)例下應(yīng)該設(shè)置為true。在一些特別情況下,比如upgrade等,需要將該參數(shù)設(shè)置成false。
② db_name/db_unique_name/instance_name
各節(jié)點(diǎn)db_name需要一致,db_unique_name也需要一致(這與standby是不同的)。而instance_name配置成各個(gè)節(jié)點(diǎn)的實(shí)例名稱。
③ instance_number
該參數(shù)表示節(jié)點(diǎn)上實(shí)例的實(shí)例號(hào)。
④ thread
該參數(shù)用來標(biāo)示實(shí)例使用的redo線程。線程號(hào)與節(jié)點(diǎn)號(hào)/實(shí)例號(hào)沒有直接關(guān)聯(lián)。
⑤ local_listener
該參數(shù)用來手工注冊(cè)監(jiān)聽。為解決ORA-12514錯(cuò)誤,可以設(shè)置該參數(shù)。
⑥ remote_listener
該參數(shù)用來進(jìn)行服務(wù)器端負(fù)載均衡配置。
⑦ cluster_interconnects
該參數(shù)用來指定集群中IPC通信的網(wǎng)絡(luò)。如果集群中有多種網(wǎng)絡(luò)用于高速互聯(lián),需要配置該參數(shù)。對(duì)于多個(gè)IP地址,用冒號(hào)將其隔開。對(duì)于集群中當(dāng)前使用的互聯(lián)地址,可以查詢視圖gv$cluster_interconnects或著oradebug ipc來查看。
⑧ max_commit_propagation_delay
該參數(shù)用于配置SCN的產(chǎn)生機(jī)制。在rac下,SCN的同步有2種模式:(1) Lamport Scheme.該模式下,由GES管理SCN的傳播同步,max_commit_propagation_delay表示SCN同步所允許的最大時(shí)間。在該模式下,全局SCN并非完全同步,這在高并發(fā)的OLTP系統(tǒng)中,可能會(huì)對(duì)應(yīng)用造成一定的影響。(2) Broadcast on Commit scheme. 該模式下,一旦任何一個(gè)實(shí)例上事務(wù)發(fā)布commit,都立即同步SCN到全局。
在10g R1下,該參數(shù)默認(rèn)數(shù)值為700,即采用Lamport Scheme模式。而在10g R2下,該參數(shù)默認(rèn)數(shù)值為0,采用Broadcast on Commit scheme模式 (設(shè)置小于700的某一值,都將采用該模式) 。采用何種方式,可以從alert.log中獲知。該參數(shù)值需要每個(gè)節(jié)點(diǎn)保持一致。
(2). Redo/Undo管理
?RAC下的Redo管理
同單實(shí)例的系統(tǒng)一樣,每個(gè)節(jié)點(diǎn)實(shí)例都需要至少2組logfile。各節(jié)點(diǎn)實(shí)例有自己獨(dú)立的重做日志線程(由初始化參數(shù)thread定義),例如:
SQL> select b.THREAD#,a.GROUP#,a.STATUS,a.MEMBER,b.BYTES,b.ARCHIVED,b.STATUS from v$logfile a,v$log b where a.GROUP#=b.GROUP#;
THREAD# GROUP# STATUS MEMBER BYTES ARCHIVED STATUS
------------------- ------- --------------------------------------------------
1 1 STALE +DATA/demo/onlinelog/group_1.257.660614753 52428800 YES INACTIVE
1 2 +DATA/demo/onlinelog/group_2.258.660614755 52428800 NO CURRENT
2 3 +DATA/demo/onlinelog/group_3.265.660615545 52428800 NO CURRENT
2 4 STALE +DATA/demo/onlinelog/group_4.266.660615543 52428800 YES INACTIVE
重做日志需要部署到共享存儲(chǔ)中,必須保證可被所有的集群內(nèi)的節(jié)點(diǎn)實(shí)例訪問。當(dāng)某個(gè)節(jié)點(diǎn)實(shí)例進(jìn)行實(shí)例/介質(zhì)恢復(fù)的時(shí)候,該節(jié)點(diǎn)上的實(shí)例將可以應(yīng)用集群下所有節(jié)點(diǎn)實(shí)例上的重做日志文件(如果需要),從而保證恢復(fù)可以在任意可用節(jié)點(diǎn)進(jìn)行。
?RAC下alter system switch logfile 與alter system archive log current 區(qū)別
alter system switch logfile僅對(duì)當(dāng)前發(fā)布節(jié)點(diǎn)上的對(duì)應(yīng)redo thread進(jìn)行日志切換并歸檔。
alter system archive log current對(duì)集群內(nèi)所有節(jié)點(diǎn)實(shí)例上的redo thread進(jìn)行切換并歸檔(在節(jié)點(diǎn)實(shí)例可用情況下,分別歸檔到各節(jié)點(diǎn)主機(jī)的歸檔目的地,當(dāng)節(jié)點(diǎn)不可用時(shí)候,該線程日志歸檔到命令發(fā)布節(jié)點(diǎn)的歸檔目的地)
?RAC下的Undo管理
RAC下的每個(gè)節(jié)點(diǎn)實(shí)例,也需要有自己單獨(dú)的撤銷表空間。由初始化參數(shù) *.Undo_tablespace 指定。同REDO一樣,UNDO表空間也需要部署到共享存儲(chǔ),雖然每個(gè)節(jié)點(diǎn)上UNDO的使用是獨(dú)立的,但需要保證集群內(nèi)其他節(jié)點(diǎn)實(shí)例對(duì)其訪問,以完成構(gòu)造讀一致性等要求。
SQL>alter system set undo_tablespace=undo1 sid=’demo1’;
SQL>alter system set undo_tablespace=undo2 sid=’demo2’;
(3).Archivelog/flashback配置管理
在RAC下,Archivelog可以放置到本地磁盤,也可以放置到共享存儲(chǔ)。需要對(duì)Archivelog的放置有合理的部署,如果放置到本地磁盤,會(huì)增加備份恢復(fù)的復(fù)雜程度。
閃回區(qū)必須部署到共享存儲(chǔ)上,開啟前,需要配置db_recovery_file_dest、db_recovery_file_dest_size、db_flashback_retention_target等參數(shù)。
下面在一個(gè)非歸檔非閃回的database上,開始?xì)w檔與閃回。
?更改相關(guān)參數(shù)
SQL>alter system set log_archive_dest_1='location=/archive/demo1' sid='demo1';
System altered
SQL> alter system set log_archive_dest_1='location=/archive/demo2' sid='demo2';
System altered
SQL> alter system set db_recovery_file_dest_size=512M;
System altered
SQL> alter system set db_recovery_file_dest='+DG1';
System altered
?停掉所有節(jié)點(diǎn)實(shí)例.開啟過程在一個(gè)實(shí)例上完成。
rac1-> srvctl stop instance -d demo -i demo1
rac1-> srvctl stop instance -d demo -i demo2
rac1-> sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on Sun Aug 3 22:06:50 2008
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> conn /as sysdba
Connected to an idle instance.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 100665588 bytes
Database Buffers 62914560 bytes
Redo Buffers 2973696 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.
SQL> alter database flashback on;
Database altered.
SQL> alter database open;
Database altered.
SQL> select NAME,LOG_MODE,FLASHBACK_ON from v$database;
NAME LOG_MODE FLASHBACK_ON
--------- ------------ ------------------
DEMO ARCHIVELOG YES
10G下,開啟歸檔和閃回并不需要像9i那樣,設(shè)置初始化參數(shù)cluster_database=false.這無疑簡化了操作。
(4).ASM下的RAC管理
?ASM下的參數(shù)文件
RAC下,每個(gè)節(jié)點(diǎn)上有運(yùn)行有一個(gè)ASM實(shí)例,而rdbms instance就運(yùn)行在這個(gè)asm實(shí)例上。Asm實(shí)例是本地的。同rdbms實(shí)例一樣,他需要有參數(shù)文件,參數(shù)文件在每個(gè)節(jié)點(diǎn)的相應(yīng)目錄下。
下面是我的ASM實(shí)例下的pfile文件:
cluster_database=true
background_dump_dest=/opt/oracle/admin/+ASM/bdump
core_dump_dest=/opt/oracle/admin/+ASM/cdump
user_dump_dest=/opt/oracle/admin/+ASM/udump
instance_type=asm
large_pool_size=12M
remote_login_passwordfile=exclusive
asm_diskgroups='DG1'
+ASM2.instance_number=2
+ASM1.instance_number=1
簡單介紹幾個(gè)asm實(shí)例中比較重要的參數(shù):
instance_type:用來說明實(shí)例是ASM 還是RDBMS 類型
asm_diskgroups:ASM磁盤組,asm實(shí)例啟動(dòng)的時(shí)候會(huì)自動(dòng)mount
asm_diskstring:該參數(shù)用來說明能夠創(chuàng)建diskgroup的磁盤設(shè)備,默認(rèn)值是NULL
asm_power_limit:該參數(shù)用來設(shè)置進(jìn)程 ARBx 的數(shù)量,負(fù)責(zé)控制負(fù)載平衡操作的速度。取值 從 0 到 11。默認(rèn)值為1。
?用于記錄ASM實(shí)例信息的數(shù)據(jù)字典。
V$ASM_DISK/ V$ASM_DISK_STAT:記錄可以被ASM實(shí)例識(shí)別的磁盤信息,但這些磁盤并不一定是正在被實(shí)例使用的。
V$ASM_DISKGROUP/ V$ASM_DISKGROUP_STAT:記錄asm下的diskgroup信息。
V$ASM_ALIAS:記錄diskgroup文件的別名信息。
V$ASM_FILE:記錄diskgroup中的文件信息。
V$ASM_OPERATION:記錄ASM實(shí)例中當(dāng)前運(yùn)行的一個(gè)長時(shí)間操作信息。
V$ASM_TEMPLATE:記錄diskgroup模板。
V$ASM_CLIENT:記錄使用該asm實(shí)例下的diskgroup的rdbms實(shí)例信息。
?RAC下ASM磁盤組/文件管理操作
<1>.RAC下在線添加、刪除磁盤組
在一個(gè)節(jié)點(diǎn)上添加diskgroup,集群上另外的節(jié)點(diǎn)并不會(huì)自動(dòng)mount新添加的diskgroup,需要手動(dòng)執(zhí)行。
節(jié)點(diǎn)1:
SQL> show parameter asm_diskgroups
NAME TYPE VALUE
------------------------------------ -----------
asm_diskgroups string DATA, DG1
SQL>CREATE DISKGROUP DATA2 NORMAL REDUNDANCY
FAILGROUP DATA2_gp1 DISK '/dev/raw/raw6' FAILGROUP DATA2_gp2 DISK '/dev/raw/raw7';
Diskgroup created.
SQL> show parameter asm_diskgroups
NAME TYPE VALUE
------------------------------------ -----------
asm_diskgroups string DATA, DG1, DATA2
此時(shí)觀察節(jié)點(diǎn)2,新加的磁盤組沒有被mount。
SQL> show parameter asm_diskgroups
NAME TYPE VALUE
-----------------------------------------------
asm_diskgroups string DATA, DG1
SQL>select group_number,type,state,type,total_mb,free_mb from v$asm_diskgroup_stat;
GROUP_NUMBER STATE TYPE TOTAL_MB FREE_MB
--------------- --------------- ------------------------
1 CONNECTED EXTERN 5726 4217
2 CONNECTED EXTERN 415 297