孫悅程 張悅 劉衛(wèi)華 周麗麗
摘要:當(dāng)前Oracle被廣泛部署于氣象業(yè)務(wù)應(yīng)用系統(tǒng),隨著氣象現(xiàn)代化的不斷發(fā)展,氣象部門對(duì)于數(shù)據(jù)庫系統(tǒng)的高可用性十分重視。OracleRAC作為實(shí)時(shí)應(yīng)用集群的技術(shù),能夠?qū)Ω咴L問量和高數(shù)據(jù)量查詢進(jìn)行有效支撐。本文在OracleRAC技術(shù)基礎(chǔ)上,實(shí)施設(shè)計(jì)并實(shí)現(xiàn)了大連氣象綜合數(shù)據(jù)庫,并通過數(shù)據(jù)庫審計(jì)系統(tǒng)對(duì)大連氣象綜合數(shù)據(jù)庫進(jìn)行監(jiān)控管理。
關(guān)鍵詞:OracleRAC:高可用性;氣象
大連氣象綜合數(shù)據(jù)庫依托于OracleRAC雙機(jī)集群技術(shù),使大連氣象局全部相關(guān)探測數(shù)據(jù)從目前分散在各個(gè)業(yè)務(wù)系統(tǒng)、分散在各數(shù)據(jù)庫中的各個(gè)表中統(tǒng)一至一套合理設(shè)計(jì)的一體化數(shù)據(jù)庫平臺(tái)上,使得困擾我局多年的基礎(chǔ)氣象探測數(shù)據(jù)雜亂零散的現(xiàn)狀得以較好的解決,為基于氣象數(shù)據(jù)的預(yù)報(bào)預(yù)警業(yè)務(wù)、公眾服務(wù)業(yè)務(wù)等相關(guān)業(yè)務(wù)提供堅(jiān)實(shí)的基礎(chǔ)。
1 Oracle RAC技術(shù)
Oracle RAC的實(shí)質(zhì)是位于不同操作系統(tǒng)的Oracle實(shí)例節(jié)點(diǎn)同時(shí)訪問同一個(gè)Oracle數(shù)據(jù)庫,每個(gè)節(jié)點(diǎn)間通過私有網(wǎng)絡(luò)進(jìn)行通信,互相監(jiān)控節(jié)點(diǎn)的運(yùn)行狀態(tài),Oracle數(shù)據(jù)庫所有的數(shù)據(jù)文件、聯(lián)機(jī)日志文件、控制文件等均放在集群的共享存儲(chǔ)設(shè)備(由ASM管理)上,所有集群節(jié)點(diǎn)可以同時(shí)讀寫共享存儲(chǔ)。Oracle RAC的基本邏輯結(jié)構(gòu)如下所示:
為了保證數(shù)據(jù)庫的穩(wěn)定性和高可用性,項(xiàng)目采用了兩臺(tái)Linux主機(jī)(服務(wù)器A與服務(wù)器B)外掛共享磁盤陣列存儲(chǔ)(華為Ocean Store)的硬件結(jié)構(gòu),在內(nèi)網(wǎng)安裝部署了Oracle RAC集群環(huán)境,利用氣象業(yè)務(wù)網(wǎng)實(shí)時(shí)收集各部門原始?xì)庀筚Y料文件(氣象數(shù)據(jù)PC)入庫存儲(chǔ)后,提供給各業(yè)務(wù)部門和終端用戶使用。
對(duì)于純文本類及純圖像類數(shù)據(jù),使用了一臺(tái)文件服務(wù)器,創(chuàng)建文件收集和存儲(chǔ)目錄,完成數(shù)據(jù)的分門別類的整理收集。
具體的物理結(jié)構(gòu)圖如下圖:
通過Oracle RAC集群,構(gòu)建了一個(gè)高性能、高可靠的數(shù)據(jù)庫集群系統(tǒng),其優(yōu)勢在于:
1.1 可以實(shí)現(xiàn)數(shù)據(jù)庫的高可用性
Oracle RAC集群可以根據(jù)設(shè)定的調(diào)度策略,在兩個(gè)節(jié)點(diǎn)(服務(wù)器A與服務(wù)器B)間實(shí)現(xiàn)負(fù)載均衡,每個(gè)節(jié)點(diǎn)都是工作的,同時(shí)也處于互相監(jiān)控狀態(tài),當(dāng)某個(gè)節(jié)點(diǎn)出現(xiàn)故障時(shí),RAC集群自動(dòng)將其故障節(jié)點(diǎn)從集群隔離,并將故障節(jié)點(diǎn)的請(qǐng)求自動(dòng)轉(zhuǎn)移到另一節(jié)點(diǎn)上,從而實(shí)現(xiàn)服務(wù)透明切換。
1.2 提高了數(shù)據(jù)庫并發(fā)連接數(shù)
Oracle RAC集群會(huì)根據(jù)請(qǐng)求自動(dòng)分配連接節(jié)點(diǎn)。當(dāng)一個(gè)客戶端發(fā)送請(qǐng)求到Oracle RAC集群后,集群將根據(jù)負(fù)載均衡策略,會(huì)把請(qǐng)求發(fā)送給其中某一節(jié)點(diǎn)處理,從而提高數(shù)據(jù)庫的并發(fā)連接數(shù),而這一切對(duì)于客戶端來說都是透明的。
1.3 具有很好的擴(kuò)展性
在目前使用雙機(jī)兩節(jié)點(diǎn)的情況下,可以通過增加節(jié)點(diǎn)無縫擴(kuò)展RAC集群從而提高集群可用性和并發(fā)連接數(shù)。
Oracle RAC集群搭建完成以后,系統(tǒng)順利通過了各項(xiàng)測試:
(1)浮動(dòng)IP切換測試;
(2)節(jié)點(diǎn)機(jī)意外宕機(jī)、恢復(fù)測試;
(3)Oracle集群負(fù)載均衡功能測試。
2 數(shù)據(jù)庫設(shè)計(jì)
在數(shù)據(jù)表的設(shè)計(jì)方面:
2.1 合理設(shè)計(jì)數(shù)據(jù)庫表結(jié)構(gòu)
對(duì)于經(jīng)常使用的表(如自動(dòng)站數(shù)據(jù)表),由于其使用頻率很高,要盡量減少表中的記錄數(shù)和字段數(shù)。例如,自動(dòng)站數(shù)據(jù)(包括常規(guī)自動(dòng)站和區(qū)域自動(dòng)站)設(shè)計(jì)成一張表,雖然可以方便程序的設(shè)計(jì)與維護(hù),但經(jīng)過分析發(fā)現(xiàn),由于數(shù)據(jù)量太大,會(huì)影響數(shù)據(jù)的查詢。如果根據(jù)要素分類和使用頻率情況,將自動(dòng)站數(shù)據(jù)分別設(shè)計(jì)為常規(guī)自動(dòng)站自動(dòng)項(xiàng)目表、常規(guī)自動(dòng)站人工項(xiàng)目表、常規(guī)自動(dòng)站雨量信息表、區(qū)域自動(dòng)站數(shù)據(jù)表及區(qū)域自動(dòng)站雨量表等,則可以大大提高查詢效率。
2.2 根據(jù)經(jīng)常查詢的字段合理設(shè)計(jì)索引
必要的主鍵合理的索引能夠提高整個(gè)數(shù)據(jù)庫的操作效率。在索引設(shè)計(jì)中,索引字段應(yīng)挑選經(jīng)常出現(xiàn)在Where子句中的字段,特別是大表的字段;復(fù)合索引建立的順序應(yīng)當(dāng)和查詢Where字句書寫的順序一致,從而避免索引建立后未被正常使用。例如自動(dòng)站數(shù)據(jù)表在日期時(shí)間和站號(hào)上創(chuàng)建復(fù)合索引,因?yàn)檫@兩個(gè)要素是最經(jīng)常出現(xiàn)在SQL查詢語句中。
3 結(jié)語
大連氣象綜合數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn)了一套整合各類氣象數(shù)據(jù)的實(shí)時(shí)氣象數(shù)據(jù)庫,提供了數(shù)據(jù)庫結(jié)構(gòu)的詳細(xì)說明以及對(duì)應(yīng)的接口,為局內(nèi)各業(yè)務(wù)單位基于基礎(chǔ)氣象數(shù)據(jù)的預(yù)報(bào)預(yù)警、氣象服務(wù)等業(yè)務(wù)應(yīng)用提供了底層數(shù)據(jù)支撐和便利。
作者簡介:第一作者:孫悅程,男,工程師,主要研究氣象信息處理。