唐明曄
摘要:Oracle數(shù)據(jù)庫(kù)具有可用性強(qiáng)、可擴(kuò)展性好、安全穩(wěn)定等特點(diǎn),在各行各業(yè)得到了廣泛應(yīng)用。但其操作相對(duì)于其它數(shù)據(jù)庫(kù)而言更為復(fù)雜,技術(shù)含量也較高。著重探討了Oracle數(shù)據(jù)庫(kù)的日常維護(hù)與優(yōu)化策略,以此來提高Oracle數(shù)據(jù)庫(kù)的穩(wěn)定性和安全性,達(dá)到優(yōu)化數(shù)據(jù)庫(kù)性能的目的。
關(guān)鍵詞:Oralce數(shù)據(jù)庫(kù);數(shù)據(jù)備份;數(shù)據(jù)安全
DOIDOI:10.11907/rjdk.161421
中圖分類號(hào):TP392
文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2016)005-0171-02
0 引言
在證券公司中,所有業(yè)務(wù)活動(dòng)都離不開數(shù)據(jù)的寫入、更改和查詢,不論是核心還是非核心系統(tǒng),在后臺(tái)都至少有一個(gè)數(shù)據(jù)庫(kù),Oracle數(shù)據(jù)庫(kù)服務(wù)器往往是整個(gè)系統(tǒng)的核心,其穩(wěn)定性和性能高低是整個(gè)系統(tǒng)健康運(yùn)行的基礎(chǔ)。Oracle數(shù)據(jù)庫(kù)功能較強(qiáng),具有靈活性、穩(wěn)定性等特點(diǎn),這對(duì)數(shù)據(jù)庫(kù)維護(hù)提出了更高要求[1]。證券公司的交易具有實(shí)時(shí)性的特點(diǎn),需要數(shù)據(jù)庫(kù)有較高的性能和穩(wěn)定性,數(shù)據(jù)庫(kù)管理員在交易前能及時(shí)發(fā)現(xiàn)數(shù)據(jù)庫(kù)的故障隱患,在發(fā)生故障時(shí)能夠及時(shí)處理。證券公司的一些業(yè)務(wù)系統(tǒng)會(huì)產(chǎn)生大量數(shù)據(jù),業(yè)務(wù)活動(dòng)中,這些數(shù)據(jù)會(huì)被用來進(jìn)行分析和處理,容易造成繁瑣的查詢操作,占用數(shù)據(jù)庫(kù)相當(dāng)比重的系統(tǒng)資源,這就需要數(shù)據(jù)庫(kù)具有足夠的存儲(chǔ)空間和較強(qiáng)的性能。因此,為了保證數(shù)據(jù)庫(kù)有足夠的數(shù)據(jù)存儲(chǔ)空間、完備的備份措施、可靠的用戶安全性,并且能夠適應(yīng)實(shí)時(shí)交易對(duì)性能和穩(wěn)定性的要求,需要定時(shí)檢查數(shù)據(jù)的各種狀態(tài)及操作系統(tǒng)狀況,根據(jù)各種不同業(yè)務(wù)對(duì)于數(shù)據(jù)庫(kù)的需要,分別優(yōu)化不同系統(tǒng)的數(shù)據(jù)庫(kù)性能,在確保數(shù)據(jù)庫(kù)穩(wěn)定的前提下提高數(shù)據(jù)庫(kù)的性能。
1 Oracle數(shù)據(jù)庫(kù)維護(hù)
對(duì)Oracle數(shù)據(jù)庫(kù)的運(yùn)行狀態(tài)、備份情況、日志文件及其空間、性能等進(jìn)行實(shí)時(shí)監(jiān)控,對(duì)系統(tǒng)資源的使用情況作定期檢查,及時(shí)發(fā)現(xiàn)數(shù)據(jù)庫(kù)的安全性問題并加以解決,檢測(cè)數(shù)據(jù)庫(kù)的各項(xiàng)性能指標(biāo),查找數(shù)據(jù)庫(kù)出現(xiàn)問題的原因,是控制數(shù)據(jù)庫(kù)風(fēng)險(xiǎn)的必要措施。只有這樣,才能提高數(shù)據(jù)庫(kù)安全性,提升數(shù)據(jù)庫(kù)運(yùn)行效率,盡可能保證系統(tǒng)穩(wěn)定運(yùn)行。
1.1 數(shù)據(jù)庫(kù)備份
數(shù)據(jù)庫(kù)中數(shù)據(jù)的安全性和完整性至關(guān)重要,及時(shí)備份數(shù)據(jù)庫(kù),能夠最大限度地減少因?yàn)閿?shù)據(jù)庫(kù)損壞而造成的損失。數(shù)據(jù)庫(kù)備份可分為物理備份和邏輯備份[2]。物理備份可分為冷備份及熱備份,冷備份是在數(shù)據(jù)庫(kù)停止的狀況下,備份數(shù)據(jù)庫(kù)中的物理文件,熱備份是在數(shù)據(jù)庫(kù)已打開的狀態(tài)下使用歸檔模式備份數(shù)據(jù)庫(kù)的方法,相對(duì)于冷備份,熱備份的操作較復(fù)雜,系統(tǒng)消耗較大,但可以實(shí)現(xiàn)某一時(shí)間點(diǎn)上的恢復(fù)。在數(shù)據(jù)庫(kù)損壞時(shí),如果前一天做過一個(gè)冷備份,也有當(dāng)天的熱備份,就可以利用這些備份文件恢復(fù)更多的數(shù)據(jù)。
邏輯備份分為用戶備份、表備份、完全備份[3]。用戶備份是將指定用戶的所有對(duì)象導(dǎo)出,表備份是將指定的表導(dǎo)出備份,完全備份是將數(shù)據(jù)庫(kù)中的所有對(duì)象導(dǎo)出。邏輯備份的備份和恢復(fù)都比較簡(jiǎn)單,能夠通過腳本自動(dòng)執(zhí)行備份和恢復(fù),但是只能恢復(fù)到上次備份時(shí)間點(diǎn),不能恢復(fù)到當(dāng)前時(shí)間點(diǎn),這樣會(huì)使得部分?jǐn)?shù)據(jù)丟失。平時(shí)注意將完全備份和熱備份等多種備份方式結(jié)合使用,可以在數(shù)據(jù)庫(kù)發(fā)生故障時(shí),更完整地恢復(fù)數(shù)據(jù)。
1.2 日志檢查
作為數(shù)據(jù)庫(kù)管理員,應(yīng)該了解告警日志是什么以及如何進(jìn)行告警文件的錯(cuò)誤檢查。實(shí)時(shí)監(jiān)控?cái)?shù)據(jù)庫(kù)的告警日志可以幫助數(shù)據(jù)庫(kù)管理員及時(shí)了解數(shù)據(jù)庫(kù)的變化與異常,以便及時(shí)處理。
每日應(yīng)檢查數(shù)據(jù)庫(kù)的告警日志文件(Alert_SID.log),告警日志包含“Error”、“Failed”、“ORA-”等數(shù)據(jù)庫(kù)系統(tǒng)出錯(cuò)提示信息,這些信息對(duì)監(jiān)控?cái)?shù)據(jù)庫(kù)的作用很大,可根據(jù)錯(cuò)誤信息分析并解決某些數(shù)據(jù)庫(kù)問題。Oracle在運(yùn)行過程中,會(huì)在告警日志文件中記錄增加數(shù)據(jù)文件以及創(chuàng)建、刪除表空間等數(shù)據(jù)庫(kù)相關(guān)操作;記錄數(shù)據(jù)庫(kù)重做日志的每一個(gè)切換時(shí)間,并檢查點(diǎn)操作沒有執(zhí)行完而發(fā)生的不可切換的原因;當(dāng)數(shù)據(jù)庫(kù)出現(xiàn)壞塊、表空間不夠、數(shù)據(jù)庫(kù)內(nèi)部錯(cuò)誤時(shí),會(huì)記錄錯(cuò)誤數(shù)據(jù)。應(yīng)定期檢查日志文件,及時(shí)發(fā)現(xiàn)問題并解決。
1.3 系統(tǒng)磁盤空間檢查
磁盤空間不足會(huì)使歸檔日志等數(shù)據(jù)寫入數(shù)據(jù)庫(kù)失敗,導(dǎo)致應(yīng)用服務(wù)器在啟動(dòng)時(shí)報(bào)錯(cuò),無法連接到數(shù)據(jù)庫(kù)。要避免這種情況發(fā)生,需要定期檢查系統(tǒng)磁盤空間,如果文件系統(tǒng)的剩余空間過小或增長(zhǎng)較快,需對(duì)其進(jìn)行確認(rèn)并刪除不用的文件以釋放空間。
1.4 表空間檢查
表空間不足,會(huì)造成數(shù)據(jù)庫(kù)性能下降。在數(shù)據(jù)庫(kù)中,可通過設(shè)置表空間來限制用戶所能夠使用的磁盤空間大小。System表空間會(huì)記錄用戶對(duì)象的一些信息,若系統(tǒng)表空間已滿,則創(chuàng)建用戶對(duì)象失敗。碰到這種情況,可以嘗試清理或轉(zhuǎn)移存放于系統(tǒng)表空間的用戶對(duì)象。表空間盡量讓剩余空間百分比保持在10%以上,如果低于10%就增加數(shù)據(jù)文件或者增加數(shù)據(jù)文件的大小。
1.5 Oracle數(shù)據(jù)庫(kù)性能檢查
檢查Oracle數(shù)據(jù)庫(kù)性能情況,包括CPU、I/O、內(nèi)存等性能,記錄db_cache_size,適當(dāng)加大數(shù)據(jù)庫(kù)高速?zèng)_緩存區(qū)大小。檢查共享池命中率,如低于95%,則需要調(diào)整應(yīng)用程序使用綁定變量,或者調(diào)整數(shù)據(jù)庫(kù)參數(shù)shared pool的大小。檢查數(shù)據(jù)庫(kù)的CPU、IO、內(nèi)存等使用情況,使用vmstat、iostat、sar、top等命令進(jìn)行信息收集并檢查這些信息,判斷資源使用情況。系統(tǒng)剩余的CPU和內(nèi)存平均值下降至10%以下時(shí)視為CPU使用率異常,需記錄該數(shù)值,并將狀態(tài)記為異常。檢查緩沖區(qū)命中率,如果命中率低于90%,可以通過調(diào)整數(shù)據(jù)庫(kù)參數(shù)加以解決。
1.6 用戶密碼修改檢查
在數(shù)據(jù)庫(kù)系統(tǒng)上往往存在很多用戶,如第三方數(shù)據(jù)庫(kù)監(jiān)控系統(tǒng)、初始安裝數(shù)據(jù)庫(kù)時(shí)的演示用戶、管理員用戶等,這些用戶的密碼往往是寫定的,被很多人知道,會(huì)被別有用心的人利用以攻擊系統(tǒng)甚至修改數(shù)據(jù)。需要修改密碼的用戶包括數(shù)據(jù)庫(kù)管理員用戶SYS、SYSTEM等。登陸系統(tǒng)后,通過命令查看是否存在已經(jīng)不再使用或是陌生的帳號(hào),若存在,則記錄為異常。
2 數(shù)據(jù)庫(kù)性能優(yōu)化
Oracle數(shù)據(jù)庫(kù)的優(yōu)化對(duì)于提升服務(wù)器系統(tǒng)的可用性和性能具有重要意義。隨著公司業(yè)務(wù)的調(diào)整與發(fā)展,數(shù)據(jù)庫(kù)優(yōu)化也是一個(gè)持續(xù)而長(zhǎng)久的過程,只要性能得以提高,調(diào)整和優(yōu)化就算是有效的。
2.1 避免I/O磁盤爭(zhēng)用
磁盤爭(zhēng)用通常發(fā)生在多個(gè)進(jìn)程試圖同時(shí)訪問同一個(gè)物理磁盤的情況下,因此將磁盤的I/O均勻分布在多個(gè)可用磁盤上,可有效地減少磁盤的競(jìng)用[4]。使用分布I/O減少磁盤競(jìng)爭(zhēng),如將數(shù)據(jù)文件、重做日志文件和歸檔文件分開,以避免同一時(shí)間、同一硬盤同時(shí)讀寫不同的數(shù)據(jù)。可分割表數(shù)據(jù),分開表和索引,減少與Oracle無關(guān)的磁盤I/O。
2.2 LGWR I/O調(diào)整
I/O每次寫的大小依賴于LOG緩沖區(qū)的大小,該值由LOG BUFFER設(shè)置,緩沖區(qū)太大會(huì)延遲寫操作,太小可能導(dǎo)致頻繁的I/O操作。如果I/O操作的平均值很大,則LOG文件會(huì)成為瓶頸,可使用STRIPE REDO LOG文件避免該問題。
2.3 檢查點(diǎn)調(diào)整
檢查點(diǎn)是一個(gè)內(nèi)部事件,當(dāng)檢查點(diǎn)自動(dòng)執(zhí)行時(shí),會(huì)觸發(fā)數(shù)據(jù)庫(kù)寫進(jìn)程將數(shù)據(jù)緩沖中的數(shù)據(jù)塊寫到磁盤上的數(shù)據(jù)文件中。檢查點(diǎn)的頻繁發(fā)生會(huì)加快數(shù)據(jù)庫(kù)的恢復(fù),但是增加了I/O次數(shù),會(huì)降低系統(tǒng)性能。
2.4 Oracle內(nèi)存優(yōu)化
內(nèi)存的大小和分配與數(shù)據(jù)庫(kù)的運(yùn)行速度有直接關(guān)系,合理的配置內(nèi)存能提高數(shù)據(jù)庫(kù)的性能。數(shù)據(jù)庫(kù)需配置的內(nèi)存主要有系統(tǒng)全局區(qū)(SGA)和程序緩存區(qū)(PGA)[5],SGA對(duì)系統(tǒng)內(nèi)的所有進(jìn)程都是共享的,各種數(shù)據(jù)庫(kù)的操作主要是在該系統(tǒng)全局區(qū)內(nèi)完成。系統(tǒng)全局區(qū)由共享池、數(shù)據(jù)緩沖區(qū)、重做日志緩沖區(qū)和大型池等組成,通過合理設(shè)置這些內(nèi)存緩存區(qū),將大部分頻繁使用的數(shù)據(jù)存儲(chǔ)在內(nèi)存中,即可大大提高內(nèi)存區(qū)的命中率,加快數(shù)據(jù)讀取速度。程序緩沖區(qū)是為某個(gè)用戶進(jìn)程所服務(wù)的,主要包含排序區(qū)、會(huì)話區(qū)、堆棧區(qū)和游標(biāo)區(qū)4個(gè)部分。其中,排序區(qū)是數(shù)據(jù)庫(kù)管理員需要注意的,如果用戶有很多需要排序的操作,為用戶設(shè)置較大的排序區(qū),能夠提高用戶訪問數(shù)據(jù)的效率。
3 結(jié)語(yǔ)
數(shù)據(jù)庫(kù)在建立并投入運(yùn)行后,必須對(duì)數(shù)據(jù)庫(kù)的運(yùn)行情況進(jìn)行有效的監(jiān)控分析,在數(shù)據(jù)庫(kù)出現(xiàn)問題時(shí)及時(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行維護(hù)和管理。在業(yè)務(wù)發(fā)展期,數(shù)據(jù)庫(kù)管理員需要根據(jù)新的需求對(duì)數(shù)據(jù)庫(kù)作適當(dāng)優(yōu)化。本文探討了證券行業(yè)Oracle數(shù)據(jù)庫(kù)運(yùn)行維護(hù)及優(yōu)化策略,以更好地保障數(shù)據(jù)安全和系統(tǒng)穩(wěn)定。
參考文獻(xiàn):
[1]芮勝利.維護(hù)Oracle數(shù)據(jù)庫(kù)安全的方法[J].計(jì)算機(jī)與網(wǎng)絡(luò),2012,38(22):69-70.
[2]劉強(qiáng),羅玲.淺談數(shù)據(jù)庫(kù)系統(tǒng)的日常維護(hù)與優(yōu)化[J].媒體時(shí)代,2015(10):215-216.
[3]郭鳳清.探討Oracle數(shù)據(jù)庫(kù)日常維護(hù)與優(yōu)化[J].科技風(fēng),2014(24):120.
[4]巢子杰.Oracle數(shù)據(jù)庫(kù)優(yōu)化探究[J].軟件導(dǎo)刊,2010,9(2):142-144.
[5]韋安云.Oracle數(shù)據(jù)庫(kù)的性能調(diào)整與優(yōu)化方法探析[J].電腦知識(shí)與技術(shù),2015(21):129-133.
(責(zé)任編輯:孫 娟)