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