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