摘要:內(nèi)存結(jié)構(gòu)是Oracle數(shù)據(jù)庫(kù)體系結(jié)構(gòu)中最為重要的部分之一,也是影響數(shù)據(jù)庫(kù)性能的主要因素。在Oracle數(shù)據(jù)庫(kù)中,服務(wù)器內(nèi)存的大小將直接影響數(shù)據(jù)庫(kù)的運(yùn)行速度,特別是多個(gè)用戶連接數(shù)據(jù)庫(kù)時(shí),服務(wù)器必須有足夠的內(nèi)存支持,否則不是有的用戶可能連接上,就是查詢速度明顯下降。因此,在開(kāi)始對(duì)Oracle數(shù)據(jù)庫(kù)學(xué)習(xí)和操作前,有必要理解Oracle的內(nèi)存結(jié)構(gòu)。
關(guān)鍵詞:Oracle數(shù)據(jù)庫(kù) 內(nèi)存結(jié)構(gòu) 運(yùn)行速度
中圖分類號(hào):TP311.13 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2016)10-0251-01
1 內(nèi)存結(jié)構(gòu)
影響數(shù)據(jù)庫(kù)性能的最主要因素是內(nèi)存。Oracle數(shù)據(jù)庫(kù)的內(nèi)存結(jié)構(gòu)分為程序全局區(qū)(PGA)和系統(tǒng)全局區(qū)(SGA),每個(gè)Oracle數(shù)據(jù)庫(kù)實(shí)例有且僅有一個(gè)系統(tǒng)全局區(qū)SGA。在Oracle實(shí)例的啟動(dòng)時(shí)自動(dòng)分配內(nèi)存,Oracle數(shù)據(jù)庫(kù)關(guān)閉時(shí)釋放。
SGA(System Global Area)是一組共享緩沖存儲(chǔ)區(qū),它由Oracle系統(tǒng)分配,用來(lái)存放控制信息和數(shù)據(jù)庫(kù)數(shù)據(jù),以便實(shí)現(xiàn)對(duì)oracle數(shù)據(jù)庫(kù)的管理和操作。SGA中包含3個(gè)必備(共享池(Shared Pool)、日志緩沖區(qū)(RedoLog Buffer Cache))、數(shù)據(jù)緩沖區(qū)(Database Buffer Cache)和2個(gè)可選(Java池(可選)(Java Pool)、大型池(可選)(Lager Pool))??赏ㄟ^(guò)SHOW命令查看SGA的大小,SQL>SHOW PARAMETER sga_max_size;
共享池包含的庫(kù)高速緩存器對(duì)SQL語(yǔ)句和PL/SQL程序進(jìn)行語(yǔ)法分析、編譯和執(zhí)行的內(nèi)存區(qū)能提高SQL性能和用于收集最近使用的數(shù)據(jù)庫(kù)中的數(shù)據(jù)定義信息的數(shù)據(jù)字典緩存器能有效改善響應(yīng)時(shí)間??赏ㄟ^(guò)SHOW命令查看shared pool的大小并用ALTER SYSTEM SET命令修改shared pool的大小,SQL>SHOW PARAMETER shared_pool_size;
SQL>ALTER SYSTEM SET shared_pool_size =15M;
數(shù)據(jù)緩沖區(qū)(Database Buffer Cache)存儲(chǔ)數(shù)據(jù)文件中數(shù)據(jù)塊的拷貝。利用最近最少使用算法(LRU)可以使數(shù)據(jù)的更新操作性能大大地提高。查看數(shù)據(jù)緩沖區(qū)的大小和修改大小的方法同上用SHOW和ALTER SYSTEM SET命令,只需將shared_pool_size改為db_cache_size即可。
日志緩沖區(qū)(Database Buffer Cache)是個(gè)環(huán)狀的(可循環(huán)的)緩存器,用于存儲(chǔ)數(shù)據(jù)庫(kù)的修改操作信息,恢復(fù)數(shù)據(jù)庫(kù)信息。其查看大小方法為:SQL>SHOW PARAMETER log_buffer;
Java池(Java Pool)是可選項(xiàng),為執(zhí)行Java命令提供分析與執(zhí)行的內(nèi)存空間。其查看大小和修改大小的方法同上用SHOW和ALTER SYSTEM SET命令,只需將shared_pool_size改為java_pool_size即可。
大型池(Lager Pool)也是可選項(xiàng),用于Oracle數(shù)據(jù)庫(kù)的備份與恢復(fù)操作、并行的消息緩存等。其查看和修改大小的方法同上,將shared_pool_size改為large_pool_size。
2 進(jìn)程結(jié)構(gòu)
Oracle進(jìn)程結(jié)構(gòu)的類型有:用戶進(jìn)程和Oracle進(jìn)程,服務(wù)器進(jìn)程和后臺(tái)進(jìn)程構(gòu)成Oracle進(jìn)程,每個(gè)系統(tǒng)進(jìn)程的大部分操作都是相互獨(dú)立的,互不干擾。
用戶進(jìn)程是連接Oracle數(shù)據(jù)庫(kù)執(zhí)行應(yīng)用程序時(shí)創(chuàng)建用以完成相關(guān)用戶所指定的任務(wù)。在oracle數(shù)據(jù)庫(kù)中有兩個(gè)與用戶進(jìn)程相關(guān)的概念:連接與會(huì)話。連接是一條用于連接用戶進(jìn)程與數(shù)據(jù)庫(kù)實(shí)例的通信路徑,該通信路徑由硬件線路、網(wǎng)絡(luò)協(xié)議和操作系統(tǒng)進(jìn)程通信機(jī)制構(gòu)成。
服務(wù)器進(jìn)程用于處理用戶進(jìn)程所提出的請(qǐng)求,此用戶進(jìn)程是由連接到Oracle數(shù)據(jù)庫(kù)實(shí)例的用戶所提出的。
后臺(tái)進(jìn)程:是一些相互獨(dú)立的附加進(jìn)程。此進(jìn)程用于確保oracle數(shù)據(jù)庫(kù)不僅能在任意時(shí)刻都能處理復(fù)雜的數(shù)據(jù)操作和多用戶的并發(fā)請(qǐng)求,還能提高并優(yōu)化系統(tǒng)性能。
后臺(tái)進(jìn)程分為必備進(jìn)程和可選進(jìn)程。
必備進(jìn)程是當(dāng)Oracle開(kāi)啟時(shí)所必須要有的5個(gè)基本進(jìn)程,缺一不可,如果進(jìn)程崩潰數(shù)據(jù)庫(kù)也會(huì)崩潰。它們分別是:DBWRn(將數(shù)據(jù)緩沖區(qū)中被修改過(guò)的數(shù)據(jù)寫(xiě)回到數(shù)據(jù)文件里)、LGWR(將日志緩沖區(qū)寫(xiě)入磁盤(pán)上的一個(gè)日志文件,是負(fù)責(zé)管理日志緩沖區(qū)的一個(gè)Oracle后臺(tái)進(jìn)程)、PMON(監(jiān)視數(shù)據(jù)庫(kù)的用戶進(jìn)程,并釋放不當(dāng)中斷連接而被占用的資源)、SMON(在實(shí)例開(kāi)始時(shí)執(zhí)行必要的恢復(fù)。負(fù)責(zé)清理不再使用的臨時(shí)段和在字典管理的表空間中合并臨近的空閑區(qū)段)、CKRT(主要負(fù)責(zé)數(shù)據(jù)文件和控制文件的最新?tīng)顟B(tài))。
可選進(jìn)程是當(dāng)有需要開(kāi)啟特殊功能時(shí)才會(huì)啟動(dòng)的進(jìn)程如:ARCn(自動(dòng)地在LGWR進(jìn)程將事務(wù)日志文件填寫(xiě)重做項(xiàng)后備份這些事務(wù)日志文件)、REDO(負(fù)責(zé)在分布式數(shù)據(jù)庫(kù)環(huán)境下,自動(dòng)恢復(fù)失敗的分布式事務(wù))等等。
參考文獻(xiàn)
[1]王紅艷,李濤.ORACLE數(shù)據(jù)庫(kù)集群技術(shù)的具體實(shí)施[J].電腦知識(shí)與技術(shù),2011(02).
[2]張學(xué)義,王觀玉,黃雋.基于Oralce數(shù)據(jù)庫(kù)SQL查詢優(yōu)化研究[J].制造業(yè)自動(dòng)化,2011(02).
[3]李可可.淺析Oracle數(shù)據(jù)庫(kù)的性能優(yōu)化方法[J].硅谷,2011(02).
[4]盧友娥,游莉.Oracle數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)存優(yōu)化探討[J].石油工業(yè)計(jì)算機(jī)應(yīng)用,2011(01).
[5]張婷.Oracle數(shù)據(jù)庫(kù)優(yōu)化研究[J].中國(guó)新技術(shù)新產(chǎn)品,2011(10).
[6]楊俊杰.淺析Oracle數(shù)據(jù)庫(kù)應(yīng)用[J].中國(guó)新技術(shù)新產(chǎn)品,2011(10).
收稿日期:2016-09-08
作者簡(jiǎn)介:鄧麗萍(1982—),女,漢族,江西貴溪人,畢業(yè)于江西師范大學(xué),現(xiàn)就職于江西信息應(yīng)用職業(yè)技術(shù)學(xué)院,講師,碩士,研究方向:軟件開(kāi)發(fā)、
軟件教學(xué)。