在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 數(shù)據(jù)庫(kù)/ RAC 特殊問(wèn)題和實(shí)戰(zhàn)經(jīng)驗(yàn)
RAC 后臺(tái)進(jìn)程
RAC 特殊問(wèn)題和實(shí)戰(zhàn)經(jīng)驗(yàn)
ORACLE 11 G 版本 2 RAC 在 LINUX 上使用 NFS 安裝前準(zhǔn)備
集群安裝【RAC1】
關(guān)于本書(shū)
基本測(cè)試與使用
參考文獻(xiàn)
Oracle 集群概念和原理
集群概念介紹
緩存融合技術(shù)介紹
工作原理和相關(guān)組件
數(shù)據(jù)庫(kù)安裝

RAC 特殊問(wèn)題和實(shí)戰(zhàn)經(jīng)驗(yàn)

共享存儲(chǔ)

在需要將一個(gè) LUN (邏輯單元號(hào))映射給多個(gè)節(jié)點(diǎn)、為集群提供一個(gè)共享的存儲(chǔ)卷時(shí),同一個(gè)存儲(chǔ) LUN 在各個(gè)主機(jī)端的 LUNID 必須是相同的。比如:

  • 在為多個(gè) ESX 節(jié)點(diǎn)創(chuàng)建一個(gè) VMFS 卷的時(shí)候
  • 在雙機(jī) HA 集群創(chuàng)建共享存儲(chǔ)的時(shí)候

時(shí)間一致性

集群模式下,各個(gè)節(jié)點(diǎn)要協(xié)同工作,因此,各主機(jī)的時(shí)間必須一致。因此,各主機(jī)的時(shí)間必須一致。各個(gè)節(jié)點(diǎn)之間的時(shí)間差不能超時(shí),一般如果超過(guò) 30s,節(jié)點(diǎn)很可能會(huì)重啟,所以要同步各節(jié)點(diǎn)的時(shí)間。例如,需要配置一個(gè) ntp 時(shí)鐘服務(wù)器,來(lái)給 RAC 的各個(gè)節(jié)點(diǎn)進(jìn)行時(shí)間同步?;蛘咦尮?jié)點(diǎn)之間進(jìn)行時(shí)間同步,保證各個(gè)節(jié)點(diǎn)的時(shí)間同步,但是無(wú)法保證 RAC 數(shù)據(jù)庫(kù)的時(shí)間的準(zhǔn)確性。

互聯(lián)網(wǎng)絡(luò)(或者私有網(wǎng)絡(luò)、心跳線)

集群必須依賴(lài)內(nèi)部的互聯(lián)網(wǎng)絡(luò)實(shí)現(xiàn)數(shù)據(jù)通訊或者心跳功能。因此,采用普通的以太網(wǎng)還是其他的高速網(wǎng)絡(luò)(比如 IB),就很有講究,當(dāng)然了,還有拿串口線實(shí)現(xiàn)心跳信息傳遞。此外,采用什么樣的網(wǎng)絡(luò)參數(shù)對(duì)集群整體的性能和健壯性都大有關(guān)系。

案例:

XX 市,4 節(jié)點(diǎn) Oracle 10g RAC

操作系統(tǒng)采用的是 RHEL 4,按照默認(rèn)的安裝文檔,設(shè)置網(wǎng)絡(luò)參數(shù)為如下值:

net.core.rmem_default = 262144
net.core.rmem_max = 262144

執(zhí)行一個(gè)查詢語(yǔ)句,需要 11 分鐘,修改參數(shù):

net.core.rmem_default = 1048576
net.core.rmem_max = 1048576

再次執(zhí)行僅需 16.2 秒。

固件、驅(qū)動(dòng)、升級(jí)包的一致性

案例:

XX 市,HPC 集群,運(yùn)行 LS-DYNA(通用顯示非線性有限元分析程序)。

集群存儲(chǔ)系統(tǒng)的環(huán)境說(shuō)明:存儲(chǔ)系統(tǒng)的 3 個(gè) I/O 節(jié)點(diǎn)通過(guò) FC SAN 交換機(jī)連接到一個(gè)共享的存儲(chǔ)。

  1. 節(jié)點(diǎn)使用的 FC HBA 卡為 Qlogic QLE2460;
  2. 光纖交換機(jī)為 Brocade 200E
  3. 磁盤(pán)陣列為 Dawning DS8313FF

故障現(xiàn)象

集群到貨后發(fā)現(xiàn)盤(pán)陣與機(jī)器直連能通,兩個(gè)設(shè)備接 200E 交換機(jī)不通。后經(jīng)測(cè)試交換機(jī) IOS 版本問(wèn)題導(dǎo)致不能正常認(rèn)出盤(pán)陣的光纖端口,與交換機(jī)的供貨商聯(lián)系更新了兩次 IOS,盤(pán)陣的端口能正常識(shí)別,但盤(pán)陣與機(jī)器相連還是無(wú)法找到盤(pán)陣。經(jīng)過(guò)今天的測(cè)試發(fā)現(xiàn)三臺(tái) I/O 節(jié)點(diǎn)采用的 HBA 卡 firmware 版本不一致。最早接光纖交換機(jī)及與盤(pán)陣直連的的 I/O1 的 firmware 為 v4.03.02,今天又拿出來(lái)的兩臺(tái) I/O 節(jié)點(diǎn) firmware 為 v4.06.03。用后兩臺(tái)測(cè)試后盤(pán)陣、機(jī)器、交換機(jī)之間可以正常通信,到今天晚上為止沒(méi)有發(fā)現(xiàn)異常情況。從目前的情況判斷是QLE2460 firmware 為 v4.03.01 的 HBA 卡與 200E IOS V5.3.1 有沖突者不兼容導(dǎo)致的故障。至于新的 HBA 卡 firmware為 v4.06.03 與 200E IOS V5.3.1 連接的穩(wěn)定性如何還要做進(jìn)一步測(cè)試。

診斷處理結(jié)果

I/O 1 節(jié)點(diǎn) HBA 卡的 fimware 升級(jí)到 v4.06.03 后連接 200E 找不到盤(pán)陣的故障已經(jīng)得到解決。其實(shí)是一個(gè) FCHBA 卡的固件版本不一致引起的問(wèn)題。

共享文件 OCR 及 VOTING DISK

Oracle Cluster Registry(OCR):記錄 OCR 記錄節(jié)點(diǎn)成員的配置信息,如 database、ASM、instance、 listener、VIP 等 CRS 資源的配置信息,可存儲(chǔ)于裸設(shè)備或者群集文件系統(tǒng)上。Voting disk : 即仲裁盤(pán),保存節(jié)點(diǎn)的成員信息,當(dāng)配置多個(gè)投票盤(pán)的時(shí)候個(gè)數(shù)必須為奇數(shù),每個(gè)節(jié)點(diǎn)必須同時(shí)能夠連接半數(shù)以上的投票盤(pán)才能夠存活。初次之外包含哪些節(jié)點(diǎn)成員、節(jié)點(diǎn)的添加和刪除信息。

安裝

在 Oracle RAC 中,軟件不建議安裝在共享文件系統(tǒng)上,包括 CRS_HOME 和 ORACLE_HOME,尤其是 CRS 軟件,推薦安裝在本地文件系統(tǒng)中,這樣在進(jìn)行軟件升級(jí),以及安裝 patch 和 patchset 的時(shí)候可以使用滾動(dòng)升級(jí)(rolling upgrade)的方式,減少計(jì)劃當(dāng)機(jī)時(shí)間。另外如果軟件安裝在共享文件系統(tǒng)也會(huì)增加單一故障點(diǎn)。如果使用 ASM 存儲(chǔ),需要為 asm 單獨(dú)安裝 ORACLE 軟件,獨(dú)立的 ORACLE_HOME,易于管理和維護(hù),比如當(dāng)遇到 asm 的 bug 需要安裝補(bǔ)丁時(shí),就不會(huì)影響 RDBMS 文件和軟件。

腦裂癥(SPLIT BRAIN)

在一個(gè)共享存儲(chǔ)的集群中,當(dāng)集群中 heartbeat 丟失時(shí),如果各節(jié)點(diǎn)還是同時(shí)對(duì)共享存儲(chǔ)去進(jìn)行操作,那么在這種情況下所引發(fā)的情況是災(zāi)難的。ORACLE RAC 采用投票算法來(lái)解決這個(gè)問(wèn)題,思想是這樣的:每個(gè)節(jié)點(diǎn)都有一票,考慮有 A,B,C 三個(gè)節(jié)點(diǎn)的集群情形,當(dāng) A 節(jié)點(diǎn)由于各種原因不能與 B,C 節(jié)點(diǎn)通信時(shí),那么這集群分成了兩個(gè) DOMAIN,A 節(jié)點(diǎn)成為一個(gè) DOMAIN,擁有一票;B,C 節(jié)點(diǎn)成為一個(gè) DOMAIN 擁有兩票,那么這種情況B,C 節(jié)點(diǎn)擁有對(duì)集群的控制權(quán),從而把 A 節(jié)點(diǎn)踢出集群,對(duì)要是通 IO FENCING 來(lái)實(shí)現(xiàn)。如果是兩節(jié)點(diǎn)集群,則引入了仲裁磁盤(pán),當(dāng)兩個(gè)節(jié)點(diǎn)不能通信時(shí),請(qǐng)求最先到達(dá)仲裁磁盤(pán)的節(jié)點(diǎn)擁用對(duì)集群的控制權(quán)。網(wǎng)絡(luò)問(wèn)題(interconnect 斷了),時(shí)間不一致;misscount 超時(shí) 等等,才發(fā)生 brain split,而此時(shí)為保護(hù)整個(gè)集群不受有問(wèn)題的節(jié)點(diǎn)影響,而發(fā)生 brain split。oracle 采用的是 server fencing,就是重啟有問(wèn)題的節(jié)點(diǎn),試圖修復(fù)問(wèn)題。當(dāng)然有很多問(wèn)題是不能自動(dòng)修復(fù)的。比如時(shí)間不一致,而又沒(méi)有 ntp;網(wǎng)線壞了。。。這些都需要人工介入修復(fù)問(wèn)題。而此時(shí)的表現(xiàn)就是有問(wèn)題的節(jié)點(diǎn)反復(fù)重啟。

集群軟件

從 Oracle10g 起,Oracle 提供了自己的集群軟件,叫做 Oracle Clusterware,簡(jiǎn)稱(chēng) CRS,這個(gè)軟件是安裝 oraclerac 的前提,而上述第三方集群則成了安裝的可選項(xiàng) 。同時(shí)提供了另外一個(gè)新特性叫做 ASM,可以用于 RAC 下的共享磁盤(pán)設(shè)備的管理,還實(shí)現(xiàn)了數(shù)據(jù)文件的條帶化和鏡像,以提高性能和安全性 (S.A.M.E: stripe and mirroreverything ) ,不再依賴(lài)第三方存儲(chǔ)軟件來(lái)搭建 RAC 系統(tǒng)。尤其是 Oracle11gR2 版本不再支持裸設(shè)備,Oracle 將全力推廣 ASM,徹底放棄第三方集群組件支持。

ORACLE CLUSTERWARE 的心跳

Oracle Clusterware 使用兩種心跳設(shè)備來(lái)驗(yàn)證成員的狀態(tài),保證集群的完整性。

  • 一是對(duì) voting disk 的心跳,ocssd 進(jìn)程每秒向 votedisk 寫(xiě)入一條心跳信息。
  • 二是節(jié)點(diǎn)間的私有以太網(wǎng)的心跳。 兩種心跳機(jī)制都有一個(gè)對(duì)應(yīng)的超時(shí)時(shí)間,分別叫做 misscount 和 disktimeout:
  • misscount 用于定義節(jié)點(diǎn)間心跳通信的超時(shí),單位為秒;
  • disktimeout ,默認(rèn) 200 秒,定義 css 進(jìn)程與 vote disk 連接的超時(shí)時(shí)間;

reboottime ,發(fā)生裂腦并且一個(gè)節(jié)點(diǎn)被踢出后,這個(gè)節(jié)點(diǎn)將在 reboottime 的時(shí)間內(nèi)重啟;默認(rèn)是 3 秒 用下面的命令查看上述參數(shù)的實(shí)際值:

  • # crsctl get css misscount
  • # grep misscount $CRS_HOME/log/hostname/cssd/ocssd.log

在下面兩種情況發(fā)生時(shí),css 會(huì)踢出節(jié)點(diǎn)來(lái)保證數(shù)據(jù)的完整:

(一) Private Network IO time > misscount,會(huì)發(fā)生 split brain 即裂腦現(xiàn)象,產(chǎn)生多個(gè)“子集群”(subcluster) ,這些子集群進(jìn)行投票來(lái)選擇哪個(gè)存活,踢出節(jié)點(diǎn)的原則按照下面的原則:節(jié)點(diǎn)數(shù)目不一致的,節(jié)點(diǎn)數(shù)多的 subcluster 存活;節(jié)點(diǎn)數(shù)相同的,node ID 小的節(jié)點(diǎn)存活。

(二) VoteDisk I/O Time > disktimeout ,踢出節(jié)點(diǎn)原則如下:失去半數(shù)以上 vote disk 連接的節(jié)點(diǎn)將在 reboottime 的時(shí)間內(nèi)重啟。例如有 5 個(gè) vote disk,當(dāng)由于網(wǎng)絡(luò)或者存儲(chǔ)原因某個(gè)節(jié)點(diǎn)與其中>=3 個(gè) vote disk 連接超時(shí)時(shí),該節(jié)點(diǎn)就會(huì)重啟。當(dāng)一個(gè)或者兩個(gè) vote disk 損壞時(shí)則不會(huì)影響集群的運(yùn)行。

如何查看現(xiàn)有系統(tǒng)的配置

對(duì)于一個(gè)已經(jīng)有的系統(tǒng),可以用下面幾種方法來(lái)確認(rèn)數(shù)據(jù)庫(kù)實(shí)例的心跳配置,包括網(wǎng)卡名稱(chēng)、IP 地址、使用的網(wǎng)絡(luò)協(xié)議。

最簡(jiǎn)單的方法,可以在數(shù)據(jù)庫(kù)后臺(tái)報(bào)警日志中得到。使用 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

找到對(duì)應(yīng) trace 文件的這一行:socket no 7 IP 10.0.0.55 UDP 16878

從數(shù)據(jù)字典中得到:

SQL> select * from v$cluster_interconnects;

http://wiki.jikexueyuan.com/project/oraclecluster/images/11.png" alt="" />

SQL> select * from x$ksxpia;

http://wiki.jikexueyuan.com/project/oraclecluster/images/12.png" alt="" />

心跳調(diào)優(yōu)和設(shè)置

為了避免心跳網(wǎng)絡(luò)成為系統(tǒng)的單一故障點(diǎn),簡(jiǎn)單地我們可以使用操作系統(tǒng)綁定的網(wǎng)卡來(lái)作為 Oracle 的心跳網(wǎng)絡(luò),以 AIX 為例,我們可以使用 etherchannel 技術(shù),假設(shè)系統(tǒng)中有 ent0/1/2/3 四塊網(wǎng)卡,我們綁定 2 和 3 作為心跳:在 HPUX 和 Linux 對(duì)應(yīng)的技術(shù)分別叫 APA 和 bonding。

UDP 私有網(wǎng)絡(luò)的調(diào)優(yōu)當(dāng)使用 UDP 作為數(shù)據(jù)庫(kù)實(shí)例間 cache fusion 的通信協(xié)議時(shí),在操作系統(tǒng)上需要調(diào)整相關(guān)參數(shù),以提高 UDP 傳輸效率,并在較大數(shù)據(jù)時(shí)避免出現(xiàn)超出 OS 限制的錯(cuò)誤:

  • UDP 數(shù)據(jù)包發(fā)送緩沖區(qū):大小通常設(shè)置要大于(db_block_size * db_multiblock_read_count )+4k,
  • UDP 數(shù)據(jù)包接收緩沖區(qū):大小通常設(shè)置 10 倍發(fā)送緩沖區(qū);
  • UDP 緩沖區(qū)最大值:設(shè)置盡量大(通常大于 2M)并一定要大于前兩個(gè)值;

各個(gè)平臺(tái)對(duì)應(yīng)查看和修改命令如下:

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 不需要

LOCK(鎖)是用來(lái)控制并發(fā)的數(shù)據(jù)結(jié)構(gòu),如果有兩個(gè)進(jìn)程同時(shí)修改同一個(gè)數(shù)據(jù), 為了防止出現(xiàn)混亂和意外,用鎖來(lái)控制訪問(wèn)數(shù)據(jù)的次序。有鎖的可以先訪問(wèn),另外一個(gè)進(jìn)程要等到第一個(gè)釋放了鎖,才能擁有鎖,繼續(xù)訪問(wèn)。總體來(lái)說(shuō),RAC 里面的鎖分兩種, 一種是本地主機(jī)的進(jìn)程之間的鎖,另外一種是不同主機(jī)的進(jìn)程之間的鎖。本地鎖的機(jī)制有兩類(lèi),一類(lèi)叫做 lock(鎖),另外一類(lèi)叫做 latch 閂。

全局鎖就是指 RAC lock,就是不同主機(jī)之間的鎖,Oracle 采用了 DLM(Distributed Lock Management,分布式鎖管理)機(jī)制。在 Oracle RAC 里面,數(shù)據(jù)是全局共享的,就是說(shuō)每個(gè)進(jìn)程看到的數(shù)據(jù)塊都是一樣的,在不同機(jī)器間,數(shù)據(jù)塊可以傳遞。給出了 GRD目錄結(jié)構(gòu)。

http://wiki.jikexueyuan.com/project/oraclecluster/images/13.png" alt="" />

可以看出 Mode、Role、n 構(gòu)成了 RAC lock 的基本結(jié)構(gòu)

  1. Mode 有 N、S、X3 種方式
  2. Role 有 Local 和 Global 兩種
  3. N 有 PI 和 XI 兩種,一般 0 表示 XI,1 表示 PI
  4. 全局內(nèi)存管理
  5. RAC 中的數(shù)據(jù)庫(kù)文件
  6. RAC 中讀的一致性
  7. 群集就緒服務(wù)(CRS)
  8. 全局資源目錄

一致性管理

數(shù)據(jù)一致性和并發(fā)性描述了 Oracle 如何維護(hù)多用戶數(shù)據(jù)庫(kù)環(huán)境中的數(shù)據(jù)一致性問(wèn)題。在單用戶數(shù)據(jù)庫(kù)中,用戶修改數(shù)據(jù)庫(kù)中的數(shù)據(jù),不用擔(dān)心其他用戶同時(shí)修改相同的數(shù)據(jù)。但是,在多用戶數(shù)據(jù)庫(kù)中,同時(shí)執(zhí)行的多個(gè)事務(wù)中的語(yǔ)句可以修改同一數(shù)據(jù)。同時(shí)執(zhí)行的事務(wù)需要產(chǎn)生有意義的和一致性的結(jié)果。因而,在多用戶數(shù)據(jù)庫(kù)中,數(shù)據(jù)并發(fā)性和數(shù)據(jù)一致性的控制非常重要:數(shù)據(jù)并發(fā)性:每個(gè)用戶可以看到數(shù)據(jù)的一致性結(jié)果。ANSI/IOS SQL 標(biāo)準(zhǔn)(SQL 92)定義了 4 個(gè)事務(wù)隔離級(jí)別,對(duì)事務(wù)處理性能的影響也個(gè)不相同。這些隔離級(jí)別是考慮了事務(wù)并發(fā)執(zhí)行必須避免的 3 個(gè)現(xiàn)象提出的。3 個(gè)應(yīng)該避免的現(xiàn)象為:

  1. 臟讀:一個(gè)事務(wù)可以讀取其他事務(wù)寫(xiě)入但還沒(méi)有提交的數(shù)據(jù)。
  2. 不可重復(fù)讀(模糊讀):一個(gè)事務(wù)重復(fù)讀到以前讀到的和查詢到的數(shù)據(jù),這些數(shù)據(jù)是其他的已提交事務(wù)已經(jīng)修改或者刪除的數(shù)據(jù)。
  3. 幻影讀:一個(gè)事務(wù)重復(fù)運(yùn)行查詢返回的一些列行,這些行包括其他已經(jīng)提交的事務(wù)已經(jīng)插入的額外的行。

SQL92 根據(jù)這些對(duì)象定義了 4 個(gè)隔離級(jí)別,事務(wù)運(yùn)行在特定的隔離級(jí)別允許特別的一些表現(xiàn)。如下表表示隔離級(jí)別阻止的讀現(xiàn)象。

http://wiki.jikexueyuan.com/project/oraclecluster/images/14.png" alt="" />