王曉龍
摘要:本文通過(guò)對(duì)Oracle數(shù)據(jù)庫(kù)在空間和性能上的管理,以及應(yīng)用優(yōu)化數(shù)據(jù)庫(kù)方面作出了詳細(xì)的描述,更好地保持了數(shù)據(jù)信息的完整性以及數(shù)據(jù)存取的穩(wěn)定性,為數(shù)據(jù)的安全提供了技術(shù)支持與保障。
關(guān)鍵詞:Oracle數(shù)據(jù)庫(kù);性能管理;空間管理;應(yīng)用優(yōu)化
一、Oracle數(shù)據(jù)庫(kù)的性能管理
Oracle數(shù)據(jù)庫(kù)在性能管理方面主要分為兩種:主動(dòng)式與被動(dòng)式管理。主動(dòng)式性能管理是關(guān)于開(kāi)發(fā)與設(shè)計(jì)特定系統(tǒng)的運(yùn)行,其中包含性能、規(guī)劃的容量、選擇的硬件、選擇的存儲(chǔ)系統(tǒng),優(yōu)化和配置I-O子系統(tǒng),制定各種不同的組件,使之能夠適應(yīng)應(yīng)用系統(tǒng)以及Oracle數(shù)據(jù)庫(kù)的不同要求。
二、Oracle數(shù)據(jù)庫(kù)的空間管理
空間管理,作為影響Oracle數(shù)據(jù)庫(kù)穩(wěn)定性的重要因素,其主要包括以下四方面的內(nèi)容:
(一)數(shù)據(jù)的分布。數(shù)據(jù)分布是將數(shù)據(jù)按照不同的類(lèi)型,分類(lèi)存放在各個(gè)磁盤(pán)里,實(shí)現(xiàn)多個(gè)磁盤(pán)一起分擔(dān)總I/O來(lái)保持系統(tǒng)的穩(wěn)定性,這在很大程度上能夠縮短磁盤(pán)總I/O的等待時(shí)間。然而某些應(yīng)用系統(tǒng)在設(shè)計(jì)創(chuàng)建的過(guò)程中,往往容易被忽略系統(tǒng)的穩(wěn)定性和I/O的等待時(shí)間,導(dǎo)致一個(gè)磁盤(pán)里存放著大部分的數(shù)據(jù),使磁盤(pán)輸入輸出量分配不均,數(shù)據(jù)越多,影響越大。
(二)應(yīng)用空間的管理以及容量的規(guī)劃。在Oracle數(shù)據(jù)庫(kù)的空間管理中,其中一個(gè)主要的問(wèn)題是防止因數(shù)據(jù)擴(kuò)大而導(dǎo)致數(shù)據(jù)庫(kù)不穩(wěn)定的現(xiàn)象。比如說(shuō),當(dāng)表里所有的空間全被填滿(mǎn)后,Oracle則應(yīng)當(dāng)分配新的區(qū)域以支援該表,但是假如該表所屬的空間不足,或者因?yàn)楸砜臻g里碎片過(guò)多而出現(xiàn)間斷式儲(chǔ)存時(shí),便會(huì)導(dǎo)致儲(chǔ)存數(shù)據(jù)不穩(wěn)定的現(xiàn)象發(fā)生。在此情況下,空間管理則能夠?qū)崿F(xiàn)降低對(duì)系統(tǒng)性能的影響,減輕數(shù)據(jù)庫(kù)管理員的工作量,并且能夠?yàn)楂@取最新的數(shù)據(jù)提供保障。此外,系統(tǒng)用戶(hù)還能夠在空間管理報(bào)告的基礎(chǔ)上,更分了解數(shù)據(jù)庫(kù)在進(jìn)行統(tǒng)計(jì)分析過(guò)程中的狀態(tài)。
(三)數(shù)據(jù)空間應(yīng)用信息的定期更新。Oracle優(yōu)化器通過(guò)應(yīng)用數(shù)據(jù)字典里的數(shù)據(jù)對(duì)象信息對(duì)SQL進(jìn)行優(yōu)化,所以必須對(duì)數(shù)據(jù)對(duì)象的應(yīng)用空間信息進(jìn)行定時(shí)地更新,Oracle運(yùn)行SQL以前,通過(guò)應(yīng)用優(yōu)化器對(duì)最優(yōu)的SQL運(yùn)行路徑進(jìn)行選擇。Oracle7之后則通過(guò)應(yīng)用基于代價(jià)的優(yōu)化模式,該模式必須按照SQL中的引用對(duì)象進(jìn)行優(yōu)化和判斷其中的存儲(chǔ)性能。Oracle對(duì)此會(huì)提供ANALYZE的指令,從而能夠?qū)Σ煌瑪?shù)據(jù)對(duì)象的應(yīng)用空間特性進(jìn)行分析。
(四)數(shù)據(jù)庫(kù)碎片的發(fā)現(xiàn)及重組,在一般情況下,數(shù)據(jù)庫(kù)經(jīng)過(guò)一段時(shí)間的運(yùn)行后,由于對(duì)數(shù)據(jù)進(jìn)行多次的修改、增加、刪減的動(dòng)作,系統(tǒng)就會(huì)殘留一些零細(xì)的碎片,這些碎片可以劃分為以下四類(lèi)。塊級(jí)碎片:由于更改或者刪減數(shù)據(jù)塊里的數(shù)據(jù)而引發(fā)數(shù)據(jù)對(duì)象的間斷式儲(chǔ)存現(xiàn)象,對(duì)儲(chǔ)存空間產(chǎn)生了浪費(fèi),也影響其存取的功能性;段級(jí)碎片:在進(jìn)行表格或索引的創(chuàng)建時(shí),容易造成儲(chǔ)存參數(shù)定義上的不合理。在增加數(shù)據(jù)的情況下,表和索引都會(huì)分配出太多的擴(kuò)展塊,從而容易導(dǎo)致數(shù)據(jù)對(duì)象產(chǎn)生間斷式的儲(chǔ)存。行遷移:數(shù)據(jù)塊內(nèi)部的儲(chǔ)存空間無(wú)法完全容下存儲(chǔ)塊中被更改過(guò)的數(shù)據(jù)而導(dǎo)致數(shù)據(jù)被遷移至其他位置的數(shù)據(jù)塊里,形成間斷式儲(chǔ)存。索引樹(shù)失衡:在通過(guò)數(shù)據(jù)的修改、增加、刪減后,索引樹(shù)的葉子大小各異,使索引無(wú)法給予最簡(jiǎn)便的存取路徑。
三、Oracle數(shù)據(jù)庫(kù)的應(yīng)用優(yōu)化
從數(shù)據(jù)的方向上看,通過(guò)優(yōu)化SQL代碼可以解決80%的Oracale性能問(wèn)題。優(yōu)化的過(guò)程包括了掃描全表、優(yōu)化索引、改進(jìn)并行機(jī)制、選擇更好的數(shù)據(jù)組合方式等過(guò)程,以便能夠達(dá)到最佳的應(yīng)用性能。如果沒(méi)有實(shí)現(xiàn)優(yōu)化SQL,就無(wú)法提升系統(tǒng)性能。通過(guò)選擇最佳的SQL語(yǔ)句可以降低對(duì)中央處理器資源的消耗,加快系統(tǒng)的反應(yīng)速度。此外,經(jīng)過(guò)完善后的SQL語(yǔ)句還能促進(jìn)其擴(kuò)展性。
以下是一些已知與例程優(yōu)化關(guān)系最密切的一些核心Oracle初始化參數(shù)。它們都會(huì)影響Oracle及SGA區(qū)的活動(dòng)。從開(kāi)始到生產(chǎn)環(huán)境前,參數(shù)的變更都必須通過(guò)測(cè)試以后方可使用,生產(chǎn)環(huán)境的參數(shù)一經(jīng)改變,就必須監(jiān)視和測(cè)試Oracle的動(dòng)態(tài)指標(biāo)狀態(tài),以及系統(tǒng)的穩(wěn)定性。
通過(guò)以下Oracle的初始參數(shù),能夠直接對(duì)Oracle以及SGA區(qū)的操作造成影響。這些參數(shù)在進(jìn)行生產(chǎn)環(huán)境以前,任何更改都必須經(jīng)過(guò)測(cè)試以后才能得到應(yīng)用。生產(chǎn)環(huán)境的參數(shù)一旦發(fā)生變動(dòng),其動(dòng)態(tài)指標(biāo)及系統(tǒng)的穩(wěn)定性就必須得到相關(guān)的監(jiān)視和檢測(cè)。
(一)DB_BLOCK_SIZE。在創(chuàng)建數(shù)據(jù)庫(kù)之前設(shè)置此參數(shù),同時(shí)該參數(shù)對(duì)每個(gè)數(shù)據(jù)塊都起到?jīng)Q定性作用。只有數(shù)據(jù)庫(kù)重新創(chuàng)建,才能對(duì)該參數(shù)進(jìn)行更改。同時(shí)該參數(shù)的變動(dòng)也能讓其I/O功能提升至最好的狀態(tài),避免由于殘留的I/O給子系統(tǒng)帶來(lái)壓力。
(二)DB_BLOCK_BUFFERS。此參數(shù)對(duì)SGA區(qū)數(shù)據(jù)庫(kù)緩沖區(qū)中的塊數(shù)量起到?jīng)Q定性作用。這是Oracle進(jìn)行錄入以及讀取的區(qū)域,其錯(cuò)誤配置將會(huì)導(dǎo)致I/O性能發(fā)生嚴(yán)重的問(wèn)題。同時(shí)如果該參數(shù)過(guò)大,也會(huì)導(dǎo)致系統(tǒng)內(nèi)存不足,使操作系統(tǒng)不斷重復(fù)讀寫(xiě)過(guò)程。
(三)SHARED_POOL_SIZE。該參數(shù)決定了SGA活動(dòng)共享區(qū)的大小,是根據(jù)字節(jié)數(shù)進(jìn)行設(shè)定的。同時(shí)其組件的大小與應(yīng)用的類(lèi)型(指重用SQL,還是生成動(dòng)態(tài)SQL等)密切相關(guān),并且決定于同步用戶(hù)的人數(shù)和實(shí)例是否被設(shè)置成為支持多線程的服務(wù)器(MTS)。假如運(yùn)用MTS配置,那么其共享區(qū)會(huì)出現(xiàn)明顯地增加,原因是用戶(hù)進(jìn)程數(shù)據(jù)與光標(biāo)狀態(tài)等程序全局區(qū)域都被安排放進(jìn)了共享區(qū)。
四、結(jié)束語(yǔ)
作為數(shù)據(jù)庫(kù)管理員,不僅要做到保持?jǐn)?shù)據(jù)資源的完整性,還要按照用戶(hù)需求,對(duì)數(shù)據(jù)進(jìn)行創(chuàng)建、管理、維護(hù),以及做好及時(shí)的數(shù)據(jù)備份工作。
參考文獻(xiàn):
[1]杜瑩,王曉明.利用Oracle數(shù)據(jù)庫(kù)管理WebGIS中的地圖數(shù)據(jù)[J].測(cè)繪通報(bào),2004(4):49-51.
[2]呂靜.高職院校中Oracle數(shù)據(jù)庫(kù)管理課程教學(xué)改革與探索[J].中國(guó)新技術(shù)新產(chǎn)品,2010(24):230-230.
[3] Wen Yanping,文燕平.Video Management Using Oracle DatabaseOracle數(shù)據(jù)庫(kù)管理視頻信息[J].現(xiàn)代圖書(shū)情報(bào)技術(shù),2004,20(1):50-52.
[4]歐陽(yáng)姝.淺析利用Oracle數(shù)據(jù)庫(kù)管理的WebGIS地圖數(shù)據(jù)集成的實(shí)現(xiàn)[J].大科技,2013(1):276-277.
[5]陶麗娟.淺談項(xiàng)目教學(xué)法在《Oracle數(shù)據(jù)庫(kù)管理》教學(xué)中的應(yīng)用[J].商情,2013(18):37-37.