
RAC提供的好處包括:
(1)多節點(diǎn)負載均衡;
(2)提供高可用:故障容錯和無(wú)縫切換功能,將硬件和軟件錯誤造成的影響最小化,下表是RAC與傳統的雙機熱備方式切換時(shí)間的對比:

(3)通過(guò)并行執行技術(shù)提高事務(wù)響應時(shí)間----通常用于數據分析系統;
(4)通過(guò)橫向擴展提高每秒交易數和連接數 ;----通常對于聯(lián)機事務(wù)系統;
(5)節約硬件成本,可以用多個(gè)廉價(jià)PC服務(wù)器代替昂貴的小型機或大型機,同時(shí)節約相應維護成本;
(6)可擴展性好,可以方便添加刪除節點(diǎn),擴展硬件資源;
RAC的缺點(diǎn)有:
相對單機,管理更復雜,要求更高;
在系統規劃設計較差時(shí)性能甚至不如單節點(diǎn);
可能會(huì )增加軟件成本(如果使用高配置的pc服務(wù)器,Oracle一般按照CPU個(gè)數收費)
在Oracle9i之前,RAC的名稱(chēng)是OPS (Oracle parallel Server)。RAC 與 OPS 之間的一個(gè)較大區別是,RAC采用了Cache Fusion(高速緩存合并)技術(shù)。在 OPS 中,節點(diǎn)間的數據請求需要先將數據寫(xiě)入磁盤(pán),然后發(fā)出請求的節點(diǎn)才可以讀取該數據。使用Cache fusion時(shí),RAC的各個(gè)節點(diǎn)的數據緩沖區通過(guò)高速、低延遲的內部網(wǎng)絡(luò )進(jìn)行數據塊的傳輸。
Oracle RAC在中國各行各業(yè)使用都比較廣泛,包括通信移動(dòng)、金融服務(wù)、社會(huì )保障和電子商務(wù)等, 據Oracle統計,2007財年中國有500多家企業(yè)使用Oracle實(shí)時(shí)應用集群,考慮到未登記信息,實(shí)際數字更高于這一數字。典型的用戶(hù)包括:中彩在線(xiàn)/OLTP/4節點(diǎn)/10gR2/AIX5.3、淘寶/DataWarehouse/4節點(diǎn)/10gR2/RHEL4、北京社保/6節點(diǎn)/HP_Alpha/ MA8000、建行證券系統/2節點(diǎn)/IBM_P595/EMC_DMX3、上海電力/2節點(diǎn)/Alpha_GS160、廣東移動(dòng)、山東網(wǎng)通等。
Oracle RAC/Clusterware的結構和組件
一、RAC主要組件, 軟硬件兩部分
(1) 服務(wù)器 >= 2
(2)操作系統,推薦使用Oracle認證的系統;版本不要太老,也不要太新
(3) CPU/內存根據業(yè)務(wù)需要,內存至少1G
(4) 本地磁盤(pán)空間,>=30G
(5)網(wǎng)卡>=2 ,推薦4個(gè)以上千兆網(wǎng)卡
(6) 私有以太網(wǎng)絡(luò ),推薦千兆交換機以上
(7) HBA卡 ,如果是SAN,推薦2個(gè)冗余HBA
(8) 共享存儲設備,推薦SAN設備
(9) 存儲管理, ASM/Cluster LV/裸分區/CFS,不推薦用OCFS,卷管理軟件、多路徑軟件等
(10) 第三方集群軟件: 可選
(11) Oracle Clusterware 軟件
(12) Oracle RDBMS 軟件
二、Clusterware主要進(jìn)程
(1)crsd: 負責管理集群的高可用操作。管理的crs資源包括數據庫、實(shí)例、監聽(tīng)、虛擬IP,ons,gds或者其他,操作包括啟動(dòng)、關(guān)閉、監控及故障切換。改進(jìn)程由root用戶(hù)管理和啟動(dòng)。crsd如果有故障會(huì )導致系統重啟。
(2)cssd,管理各節點(diǎn)的關(guān)系,用于節點(diǎn)間通信,節點(diǎn)在加入或離開(kāi)集群時(shí)通知集群。該進(jìn)程由oracle用戶(hù)運行管理。發(fā)生故障時(shí)cssd也會(huì )自動(dòng)重啟系統。
(3)oprocd – 集群進(jìn)程管理 —Process monitor for the cluster. 用于保護共享數據IO fencing。
僅在沒(méi)有使用vendor的集群軟件狀態(tài)下運行
(4)evmd :事件檢測進(jìn)程,由oracle用戶(hù)運行管理
三、Clusterware使用的共享設備
(1) Oracle Cluster Registry(OCR):記錄集群的配置信息;
(2) Voting disk : 即投票盤(pán),保存節點(diǎn)的成員信息,當配置多個(gè)投票盤(pán)的時(shí)候個(gè)數必須為奇數,每個(gè)節點(diǎn)必須同時(shí)能夠連接半數以上的投票盤(pán)才能夠存活;
四、安裝路徑的選擇

注:
(1)在Oracle RAC中,軟件不建議安裝在共享文件系統上;包括CRS_HOME和ORACLE_HOME,尤其是CRS軟件,推薦安裝在本地文件系統中,這樣在進(jìn)行軟件升級,以及安裝patch和patchset的時(shí)候可以使用滾動(dòng)升級(rolling upgrade)的方式,減少計劃當機時(shí)間。另外如果軟件安裝在共享文件系統也會(huì )增加單一故障點(diǎn)。
(2)如果使用ASM存儲,需要為asm單獨安裝ORACLE軟件,獨立的ORACLE_HOME,易于管理和維護,比如當遇到asm的bug需要安裝補丁時(shí),就不會(huì )影響RDBMS文件和軟件。
(3)在Oracle 11gR2中將新增存儲選項:acfs (Oracle ASM Cluster File System)
第三方集群
在Oracle9i中,除了Windows和Linux,在安裝RAC之前必須先安裝vendor clusterware,即第三方集群,包括IBM的HACMP, HP的ServiceGuard for oracle RAC, Sun cluster,Veritas SFRAC等,這一類(lèi)的集群軟件為Oracle RAC提供了下面的功能:
(1)共享的邏輯卷管理或者集群文件系統用于存放數據文件;
(2)提供了統一的集群的成員組管理;
(3)使用更健壯的SCSI-3 PGR機制來(lái)防止心跳故障(即裂腦split brain)導致的數據損壞,這種功能一般叫做IO fencing;
(4)提供效率更高的、更低延遲的心跳網(wǎng)絡(luò )用于cache fusion,可以相對減少TCP/IP的開(kāi)銷(xiāo),包括:
HP SGeRAC: HMP (Hyper Messaging Protocol),
Sun Cluster: RSM (Remote Shared Memory),
Veritas SFRAC: LLT (low-latency transport),
Compac True Cluster: RDG (reliable data grams);
通常如果要使用第三方集群的心跳協(xié)議,需要將$ORACLE_HOME/lib/libskgxpX.so文件替換為第三方集群
軟件提供的libskgxpX.so文件(其中X代表Oracle版本號9/10/11),skgxp 是System Kernel Generic Interface Inter-Process Communications的縮寫(xiě),是oracle開(kāi)放的一個(gè)應用接口,用于傳輸GCS和GES 的數據。Oracle自帶的libskgxp文件定義的傳輸協(xié)議是UDP/IP。
(5)提供擴展的容災方案,例如campus cluster/metro cluster/extended RAC;如下圖, 以Veritas的SFRAC為例,它提供兩種Oracle Extended RAC方案,方案一是使用Veritas Volume Manager對底層陣列進(jìn)行鏡像,提供同城容災級別的實(shí)時(shí)數據保護;方案二使用GCO/VVR對數據庫進(jìn)行數據復制,可以實(shí)現距離更遠、超過(guò)10km廣域網(wǎng)的容災;

(6)Veritas SFRAC 還提供了以下特性:
補充的Oracle ODM,可以使Oracle同時(shí)擁有文件系統的易管理和裸設備的性能;
標準的多路徑軟件(DMP),不需要再安裝其他軟件就可支持絕大多數磁盤(pán)陣列,在異構SAN環(huán)境中有更好的兼容性;
從Oracle10g起,Oracle提供了自己的集群軟件,叫Oracle clusterware簡(jiǎn)稱(chēng)CRS,這個(gè)軟件是安裝oracle rac的前提,而上述第三方集群則成了安裝的可選項 。同時(shí)提供了另外一個(gè)新特性叫做ASM,可以用于RAC下的共享磁盤(pán)設備的管理,還實(shí)現了數據文件的條帶化和鏡像,以提高性能和安全性 (S.A.M.E: stripe and mirror everything ) ,不再依賴(lài)第三方存儲軟件來(lái)搭建RAC系統。
那么Oracle是如何識別第三方集群的呢?
在安裝完第三方集群后,會(huì )在特定目錄下生成Oracle RAC接口文件,這個(gè)文件的作用就是上面的第二點(diǎn)功能:集群成員管理信息(cluster membership 簡(jiǎn)稱(chēng)CM)。在HPUX下該文件是/opt/nmapi/nmapi2/lib/pa20_64,在A(yíng)IX/Solaris/Linux下這個(gè)文件是/opt/ORCLcluster/lib/libskgxn2.so 。
當安裝CRS的的檢查階段,就會(huì )檢測是否有該文件,如果有的話(huà),在安裝CRS過(guò)程中生成一個(gè)軟連接文件,文件名是ligskgxn2.so,指向上面的libskgxn2.so或pa20_64文件,這個(gè)軟連接的位置在CRS_HOME/lib/目錄;如果沒(méi)有第三方集群,那么CRS安裝過(guò)程中生成自己的libskgxn2.so文件。換句話(huà)說(shuō),在有第三方集群存在的情況下,CRS的集群成員信息是來(lái)自于第三方集群,兩套集群的成員信息保持一致和同步;沒(méi)有第三方集群情況時(shí),CRS自己管理成員信息。
通過(guò)查詢(xún)$CRS_HOME/log/hostname/cssd/ocssd.log可以看到css識別到的第三方集群,下面的例子分別是HACMP、SFRAC、SunCluster、ServiceGuide :
[CSSD]2008-05-27 15:09:43.456 [1029] >TRACE: clssnm_skgxninit: initialized skgxn version (2/0/IBM AIX skgxn)
[CSSD]2008-12-30 21:44:56.172 [1029] >TRACE: clssnm_skgxninit: initialized skgxn version (2/0/Veritas Cluster Server MM
[CSSD]2007-08-10 02:19:39.572 [3] >TRACE: clssnm_skgxninit: initialized skgxn version (2/2/Oracle Solaris UDLM)
[CSSD]2006-09-29 18:57:53.323 [5] >TRACE: clssnm_skgxninit: initialized skgxn version (2/0/Hewlett-Packard SKGXN 2.0)
在9i/8i中沒(méi)有css/crs,該信息可以在后臺進(jìn)程lmon的trace文件中得到(在bdump中);
在安裝Oracle 9i RAC/8i OPS的過(guò)程中,Oracle識別集群方法類(lèi)似。
在多個(gè)平臺上,如果兩個(gè)節點(diǎn)沒(méi)有正確鏈接libskgxn2文件,可能會(huì )導致第二個(gè)實(shí)例無(wú)法mount或出現ORA-600錯誤。
Oracle支持的RAC環(huán)境
因為Oracle RAC本身比較復雜,在安裝和管理中可能會(huì )遇到各種問(wèn)題,涉及到OS、RDBMS、Cluster軟件和網(wǎng)絡(luò )、主機、存儲等硬件,為了避免不必要的問(wèn)題發(fā)生,在安裝之前,我們需要確認安裝環(huán)境是否滿(mǎn)足要求,包括軟件和硬件兩方面,尤其是Vendor clusterware和OS 的版本的兼容性需要注意,可以從metalink中得到最新的Oracle官方認證信息:登陸Metalink.oracle.com 選擇 Certify,選擇by product,選擇real application server,選擇對應平臺就可以得到。下面列出一些關(guān)于硬件和平臺支持的常見(jiàn)問(wèn)題:
官方不支持的:Vmware, Sun LDOM ,Solaris Local Container/Zones
官方支持的: IBM LPAR, IBM VIOS(Virtual IO Server), Solaris Global Containers
RHEL GFS , ISCSI,
私有網(wǎng)絡(luò )(心跳線(xiàn))的支持: 不支持使用交叉線(xiàn),支持 Infiniband RDS (10gR2之后)
異構環(huán)境:支持不同的硬件、但相同的軟件(OS/Oracle)組成的集群,不支持32位與64位系統間的集群
目前支持的NFS的server包括:
EMC Celerra
Fujitsu Filer NR1000 Series
IBM N Series
NetApp FAS, F, G Series
Pillar Data Systems Axiom 500
Sun StorageTek 5000 Series
Oracle Clusterware的心跳
Oracle clusterware 使用兩種心跳設備來(lái)驗證成員的狀態(tài),保證集群的完整性;一是對voting disk的心跳,ocssd進(jìn)程每秒向votedisk寫(xiě)入一條心跳信息;二是節點(diǎn)間的私有以太網(wǎng)的心跳,兩種心跳機制都有一個(gè)對應的超時(shí)時(shí)間,分別叫做misscount和disktimeout:
misscount 用于定義節點(diǎn)間心跳通信的超時(shí),單位為秒;
disktimeout ,默認200秒,定義css進(jìn)程與vote disk連接的超時(shí)時(shí)間;
reboottime ,發(fā)生裂腦并且一個(gè)節點(diǎn)被踢出后,這個(gè)節點(diǎn)將在reboottime的時(shí)間內重啟;默認是3秒;
其中misscount默認值見(jiàn)下表

用下面的命令查看上述參數的實(shí)際值:1. # crsctl get css misscount
2. # grep misscount $CRS_HOME/log/hostname/cssd/ocssd.log
[CSSD]2008-11-27 22:29:42.397 [1] >TRACE: clssnmInitNMInfo: misscount set to 600
在下面兩種情況發(fā)生時(shí),css會(huì )踢出節點(diǎn)來(lái)保證數據的完整,:
(1) Private Network IO time > misscount,會(huì )發(fā)生split brain即裂腦現象,產(chǎn)生多個(gè)“子集群”(subcluster) ,這些子集群進(jìn)行投票來(lái)選擇哪個(gè)存活,踢出節點(diǎn)的原則按照下面的原則:
節點(diǎn)數目不一致的,節點(diǎn)數多的subcluster存活;節點(diǎn)數相同的,node ID小的節點(diǎn)存活。
(2) Vote Disk IO Time > disktimeout ,踢出節點(diǎn)原則如下:失去半數以上vote disk連接的節點(diǎn)將在reboottime的時(shí)間內重啟;例如有5個(gè)vote disk,當由于網(wǎng)絡(luò )或者存儲原因某個(gè)節點(diǎn)與其中>=3個(gè)vote disk連接超時(shí)時(shí),該節點(diǎn)就會(huì )重啟。當一個(gè)或者兩個(gè)vote disk損壞時(shí)則不會(huì )影響集群的運行。
可以手工修改這三個(gè)參數的值,單位都是秒:(謹慎使用)
$CRS_HOME/bin/crsctl set css misscount
$CRS_HOME/bin/crsctl set css reboottime
$CRS_HOME/bin/crsctl set css disktimeout
或者重新設置成默認值:crsctl unset css misscount
Clusterware的私有網(wǎng)絡(luò )
在Oracle 10g/11g中,Oracle的私有網(wǎng)絡(luò )(private network)包括clusterware的私有網(wǎng)絡(luò )和數據庫實(shí)例的私有網(wǎng)絡(luò ):
clusterware的私有網(wǎng)絡(luò )主要包括css數據的傳送,即用一種特殊的ping命令來(lái)檢測其他機器的狀態(tài);
數據庫實(shí)例的私有網(wǎng)絡(luò ),包括RDMS和ASM的,用于cache fusion(GCS/GES)數據的傳輸。
當我們只使用一個(gè)私有網(wǎng)卡的時(shí),同時(shí)傳送上面兩類(lèi)的數據。如果我們在安裝時(shí)指定了兩個(gè)私有網(wǎng)卡,首先使用如下面$CRS_HOME/bin/oifcfg getif命令來(lái)得到所有網(wǎng)絡(luò )接口列表,這些信息保存在ocr中:
# oifcfg getif
en0 10.200.56.0 global public
en3 192.168.3.0 global cluster_interconnect
en5 192.168.5.0 global cluster_interconnect
情況會(huì )有所不同,clusterware的私有網(wǎng)絡(luò ),目前(10g/11g)只能使用一個(gè)網(wǎng)絡(luò )接口,對應于/etc/hosts中定義的private hostname的那個(gè)網(wǎng)卡,可以通過(guò)查看ocssd的log來(lái)確定:
當/etc/hosts 中定義private hostname為192.168.3.233時(shí)看到 :
[ CSSD]2009-01-16 17:34:12.406 [1029] >TRACE: clssgmPeerListener: Listening on (ADDRESS=(PROTOCOL=tcp)(DEV=12) (HOST=192.168.3.233)(PORT=45527))
這個(gè)是與其他節點(diǎn)css進(jìn)行通信的信息:
[ CSSD]2009-01-16 17:36:27.463 [1029] >TRACE: clssgmConnectToNode: node 2 clsc (ADDRESS=(PROTOCOL=tcp)(DEV=12) (HOST=192.168.3.234)(PORT=37732)) - size 64 ver 1
當/etc/hosts 中定義private hostname為192.168.5.233時(shí),css使用了另外一個(gè)網(wǎng)絡(luò ):
[ CSSD]2009-01-16 18:59:56.411 [1029] >TRACE: clssgmPeerListener: Listening on (ADDRESS=(PROTOCOL=tcp)(DEV=12) (HOST=192.168.5.233)(PORT=50415))
Oracle實(shí)例的私有網(wǎng)絡(luò )
Oracle實(shí)例的心跳網(wǎng)絡(luò )使用方式的優(yōu)先級從高到低如下:
(1) 如果使用了第三方集群的IPC,替換了對應$ORACLE_HOME/lib/libskgxnX.so文件,那么數據庫實(shí)例的cache fusion會(huì )使用對應的網(wǎng)絡(luò )協(xié)議,而忽略ocr中和數據庫初始化參數中cluster_interconnects的配置,下面的例子當中就使用了VCSIPC,可以從對應的alert log中驗證:
db_name = r10g
open_cursors = 300
pga_aggregate_target = 1237319680
Fri Mar 13 14:00:35 2009
Oracle instance running with ODM: Veritas 6.0 ODM Library, Version 1.1
cluster interconnect IPC version:
VERITAS IPC 5.1.0.0 15:16:24 Feb 12 2009
IPC Vendor 86 proto 76
Version 1.0
PMON started with pid=2, OS id=4399196
DIAG started with pid=3, OS id=3936288
(2) 如果沒(méi)有使用第三方IPC,則優(yōu)先使用數據庫初始化參數的cluster_interconnects配置,這個(gè)參數的格式為if1:if2:...:ifn,可以不同于crs的私有網(wǎng)絡(luò ),需要注意的是,該參數不支持多個(gè)網(wǎng)卡的故障切換;
(3) 沒(méi)有上面兩個(gè)配置,數據庫會(huì )使用oifcfg列出的心跳的網(wǎng)絡(luò ),在對應的告警日志中可以得到:
Interface type 1 en6 192.168.61.0 configured from OCR for use as a cluster interconnect
Interface type 1 en0 10.182.0.0 configured from OCR for use as a public interface
. . . .
Cluster communication is configured to use the following interface(s) for this instance
192.168.61.0
(4) 沒(méi)有1和2的配置,并且oifcfg也沒(méi)有配置cluster_interconnect,則數據庫會(huì )使用共有網(wǎng)絡(luò )進(jìn)行心跳信息的傳輸,這種配置其實(shí)是配置失敗的情況,數據庫雖然能夠啟動(dòng),但急需DBA修正,在告警日志中可以看到:
WARNING: No cluster interconnect has been specified. Depending on
the communication driver configured Oracle cluster traffic
may be directed to the public interface of this machine.
Oracle recommends that RAC clustered databases be configured
with a private interconnect for enhanced security and
performance.
對于一個(gè)已經(jīng)有的系統,可以用下面幾種方法確認數據庫實(shí)例的心跳配置,包括網(wǎng)卡名稱(chēng),IP地址,使用的網(wǎng)絡(luò )協(xié)議:
(1) 最簡(jiǎn)單的方法:可以在數據庫的后臺報警日志中得到。具體參見(jiàn)上面列出的告警日志;
(2) 使用oradebug ;
SQL> oradebug setmypid
SQL> oradebug ipc
SQL> oradebug tracefile_name
找到對應trace文件的這一行:socket no 10 IP 10.0.0.1 UDP 49197
(3) 從數據字典中得到(V$CLUSTER_INTERCONNECTS 和 V$CONFIGURED_INTERCONNECTS),或查詢(xún)x$ksxpia
SQL> SELECT * FROM V$CLUSTER_INTERCONNECTS; ----Oracle 11g 開(kāi)始支持此試圖
NAME IP_ADDRESS IS_ SOURCE
------------------------------ ---------------- --- -------------------------------
en3 192.168.2.31 NO Oracle Cluster Repository
en5 192.168.3.231 NO Oracle Cluster Repository
SQL> SELECT * FROM V$CONFIGURED_INTERCONNECTS;
NAME IP_ADDRESS IS_ SOURCE
------------------------------ ---------------- --- -------------------------------
en3 192.168.2.31 NO Oracle Cluster Repository
en5 192.168.3.231 NO Oracle Cluster Repository
en0 10.200.59.231 YES Oracle Cluster Repository
SQL> select * from x$ksxpia ;
ADDR INDX INST_ID PUB_KSXPIA PICKED_KSXPIA NAME_KSXPIA IP_KSXPIA
---------------- ---------- ---------- ---------- --------------- --------------- ----------------
00000001104AAF28 0 1 N OCR en6 192.168.61.121
00000001104AAF28 1 1 Y OCR en0 10.182.6.211
為了避免心跳網(wǎng)絡(luò )成為系統的單一故障點(diǎn),簡(jiǎn)單地我們可以使用操作系統綁定的網(wǎng)卡來(lái)作為Oracle的心跳網(wǎng)絡(luò ),以AIX為例,我們可以使用etherchannel技術(shù),假設系統中有ent0/1/2/3四塊網(wǎng)卡,我們綁定2和3作為心跳:
#mkdev -c adapter -s pseudo -t ibm_ech -a adapter_names='ent2,ent3' ## 將生成網(wǎng)卡設備ent4
#/usr/lib/methods/defif
#lsdev -Cc adapter | grep ent
#lsattr -El ent4
#ifconfig en4 inet 192.168.3.231 netmask 255.255.255.0 up
在Solaris上可以使用dladm來(lái)創(chuàng )建鏈路聚合:
# dladm create-aggr -d bge2 -d bge3 1
# ifconfig aggr1 plumb 192.168.3.231 netmask 255.255.255.0 up
# dladm show-aggr
# ifconfig -a
同樣在HPUX和Linux對應的技術(shù)分別叫APA和bonding。
UDP私有網(wǎng)絡(luò )的調優(yōu)
當使用UDP作為數據庫實(shí)例間cashe fusion的通信協(xié)議時(shí),在操作系統上需要調整相關(guān)參數,以提高UDP傳輸效率,并在較大數據時(shí)避免出現超出OS限制的錯誤:
(1) UDP數據包發(fā)送緩沖區:大小通常設置要大于(db_block_size * db_multiblock_read_count )+4k,
(2) UDP數據包接收緩沖區:大小通常設置10倍發(fā)送緩沖區;
(3) UDP緩沖區最大值:設置盡量大(通常大于2M)并一定要大于前兩個(gè)值;
各個(gè)平臺對應查看和修改命令如下:
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 不需要
常見(jiàn)安裝、管理錯誤
1. 安裝CRS失敗,或執行root.sh報錯,可能原因:
(1) 節點(diǎn)間的時(shí)間不同步,解決方法:使用ntp服務(wù)
(2) Linux下啟用了默認的防火墻,導致執行root.sh報錯:
Failure at final check of Oracle CRS stack.
10
解決方法:禁用iptables ,注釋/etc/pam.d/other ;
# service iptables stop; # chkconfig iptables off.
(3) 裸設備的權限問(wèn)題,可能因為操作系統重新啟動(dòng)后權限發(fā)生變化。(RHEL4)
解決方法: 把 chown oracle:dba /dev/raw/raw* 命令加入到/etc/rc.local中,每次開(kāi)機自動(dòng)執行
或者修改文件/etc/udev/permissions.d/50-udev.permissions
第113行raw/*:root:disk:0660 改成 raw/*:oracle:dba:0660
(4) Solaris使用了包括cylinder 0的磁盤(pán)分區來(lái)存儲OCR或者vote disk。
解決辦法:相關(guān)分區不應該包括cylinder 0,可以從1開(kāi)始。
(5) 使用的公網(wǎng)IP地址不可路由,
解決方法:添加相關(guān)網(wǎng)關(guān)
(6) 在/etc/hosts 中沒(méi)有loopback地址,即127.0.0.1 localhost
(7) 主機名含有大些字母、減號或者下劃線(xiàn)等特殊字符;
(8) HPUX中oracle不要使用gnu的bash,修改使用默認shell;
(9) 檢查操作系統、第三方集群是否是oracle官方支持的,是否需要補丁,比如在A(yíng)IX5.3+HACMP上安裝
Oracle 10g/11g RAC,oslevel就需要06及以上;
(10) AIX平臺,需要將共享設備的reserve_policy (reserve_lock) 屬性修改為no_reserve(no);
(11) 所有節點(diǎn)看到的OCR和vote設備的路徑名應該一致,如果不一致,可以用軟連接解決;
(12) 心跳設備問(wèn)題或者ocr/votedisk 訪(fǎng)問(wèn)問(wèn)題,unix/linux查看有無(wú)/tmp/crsctl.*文件,得到錯誤信息;
(13) 在CRS舊的安裝的環(huán)境中重新安裝失敗
解決方法: dd清除ocr和vote disk,并使用下面語(yǔ)句清理舊的crs配置文件
rm -rf /usr/tmp/.oracle /var/tmp/.oracle /tmp/.oracle /etc/oracle/* /var/opt/oracle/*
rm -rf /etc/init.cssd /etc/init.crs* /etc/init.evmd /etc/init.d/init.cssd /etc/init.d/init.crs
rm -rf /etc/init.d/init.crsd /etc/init.d/init.evmd /etc/rc3.d/K96init.crs /etc/rc3.d/S96init.crs
rm -rf /etc/rc.d/rc2.d/K96init.crs /etc/rc.d/rc2.d/S96init.crs
2 客戶(hù)端有時(shí)候報錯:
ORA-12545: Connect failed because target host or object does not exist
ORA-12545: 因目標主機或對象不存在, 連接失敗
解決方法:設置local_listener初始化參數
3 如果選擇節點(diǎn)界面出不來(lái)。
(1)HACMP環(huán)境中需要檢查oracle 用戶(hù)必須在 hagsuser組里.
(2)如果是hacmp5.4,需要打Oracle補丁6718715;
(3)可以使用集群配置文件cluster CONFIGURATION FILE ,內容模板如下:
MyCluster
rac01 rac01-priv rac01-vip
rac02 rac02-priv rac02-vip
rac03 rac03-priv rac03-vip
rac04 rac04-priv rac04-vip
4. AIX上數據庫啟動(dòng)報錯
ora-27504 IPC error creating OSD context
ora-27300 OS system dependent operation:sendmsg failed with status:59
ora-27301 OS failure message:Message too long
ora-27302 failure occurred at:sskgxpsnd1
原因:沒(méi)有設置網(wǎng)絡(luò )參數udp_recvspace/udp_sendspace
5. Windows平臺,ORA-600 [kccsbck_first]
解決方法:關(guān)閉Media Sense(媒體感知)
6. 系統循環(huán)重啟:
可能是CRS導致,如果因為crs,首先設置 crsctl disable crs 來(lái)禁止oracle crs的自動(dòng)啟動(dòng)。
查看OS、crsd和cssd的對應日志,看/tmp/下是否有crs文件 (ls -lrt /tmp/crsctl*),確定crs失敗原因。
7. 第二個(gè)節點(diǎn)的數據實(shí)例無(wú)法mount,掛起或者報錯,
原因1:使用了vendor clusterware ,libskgxn2.so文件鏈接錯誤,
解決方法:比較兩個(gè)節點(diǎn)的ORACLE_HOME/lib/libskgxn2和CRS_HOME/lib/libskgxn2*都是否相同,
如果不同需要重新link
原因2:任何平臺Oracle 9i,沒(méi)有設置網(wǎng)絡(luò )參數udp參數
導致udp_sendspace或者udp_recvspace小于 db_block_size * db_file_multiblock_read_count
解決方法:設置對應參數,如AIX上設置udp_recvspace = 65536 udp_sendspace = 65536
原因3:AIX/HACMP/Oracle9i,在hacmp中定義了service IP
解決方法:在初始化參數中定義cluster_interconnects
原因4:任何平臺,設置了錯誤的cluster_interconnects
解決方法:檢查并糾正此參數,
8. 建庫時(shí)不能識別裸設備;
原因1:Oracle,10.2.0.3 ,很多平臺(比如aix和linux)有rawutl相關(guān)bug,
解決辦法:還原10.2.0.1中的rawutl工具,該程序在 $ORACLE_HOME/bin目錄中。
原因2:Oracle9i,AIX平臺,需要設置環(huán)境變量export PGSD_SUBSYS=grpsvcs
9. evm資源自動(dòng)報錯oac_init:2: Could not connect to server, clsc retcode = 9
解決方法:關(guān)閉 “UDP ICMP rejections”
/etc/rc.d/init.d/iptables stop ;chkconfig iptables off
聯(lián)系客服