在Oracle數(shù)據(jù)庫(kù)系統(tǒng)中內(nèi)存結(jié)構(gòu)主要分為系統(tǒng)全局區(qū)(SGA)和程序全局區(qū)(PGA),SGA隨著數(shù)據(jù)庫(kù)實(shí)例的啟動(dòng)向操作系統(tǒng)申請(qǐng)分配一塊內(nèi)存結(jié)構(gòu),隨著數(shù)據(jù)庫(kù)實(shí)例的關(guān)閉釋放,每一個(gè)Oracle數(shù)據(jù)庫(kù)實(shí)例有且只有一個(gè)SGA。PGA隨著Oracle服務(wù)進(jìn)程啟動(dòng)的時(shí)候申請(qǐng)分配的一塊內(nèi)存結(jié)構(gòu)。如果在共享服務(wù)結(jié)構(gòu)中PGA存在SGA中。在后面我們將表述各個(gè)部件
創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括峨眉山網(wǎng)站建設(shè)、峨眉山網(wǎng)站制作、峨眉山網(wǎng)頁(yè)制作以及峨眉山網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,峨眉山網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到峨眉山省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!重要提示,提高SGA的大小可以在一定程度上提高Oracle數(shù)據(jù)庫(kù)系統(tǒng)的性能,但你設(shè)置SGA的值如果不能鎖定在內(nèi)存物理頁(yè)上,有些部分可能被交換到系統(tǒng)的交換文件中。這樣你的Oracle數(shù)據(jù)庫(kù)系統(tǒng)將變慢。系統(tǒng)全局區(qū)是一組包含數(shù)據(jù)和控制信息的共享內(nèi)存結(jié)構(gòu),允許Oracle服務(wù)的眾多后臺(tái)進(jìn)程同時(shí)訪問(wèn)或修改其中的數(shù)據(jù),所以有些時(shí)候也被稱為“全局共享區(qū)”,參數(shù)文件中的SGA_MAX_SIZE指定SGA動(dòng)態(tài)大小。
系統(tǒng)全局區(qū)由以下主要幾個(gè)部分組成:
※ 共享池SharedPool
※ 數(shù)據(jù)高速緩存DatabaseBufferCache
※ 重做日志緩存RedoLogBufferCache
※ Java池(可選)JavaPool
※ 大池(可選)LagerPool
共享池存儲(chǔ)了最近多數(shù)使用的執(zhí)行SQL語(yǔ)句和最近使用的數(shù)據(jù)定義。它包含庫(kù)高速緩存器和數(shù)據(jù)字典緩存器這兩個(gè)與性能相關(guān)的內(nèi)存結(jié)構(gòu)。共享池的大小可以通過(guò)初始化參數(shù)文件(通常為init.ora)中的SHARED_POOL_SIZE決定。共享池是活動(dòng)非常頻繁的內(nèi)存結(jié)構(gòu),會(huì)產(chǎn)生大量的內(nèi)存碎片,所以你要確保它盡可能足夠大。
庫(kù)高速緩存器,他又包含共享SQL區(qū)和共享PL/SQL區(qū)兩個(gè)組件區(qū)。為了提高SQL語(yǔ)句的性能,在提交SQL語(yǔ)句或PL/SQL程序塊時(shí)Oracle服務(wù)器將先利用最近最少使用(LRU)算法檢查庫(kù)高速緩存中是否存在相同的SQL語(yǔ)句或PL/SQL程序塊,若有則使用原有的分析樹(shù)和執(zhí)行路徑。
數(shù)據(jù)字典緩存器,它收集最近使用的數(shù)據(jù)庫(kù)中的數(shù)據(jù)定義信息。它包含數(shù)據(jù)文件、表、索引、列、用戶、訪問(wèn)權(quán)限、其他數(shù)據(jù)庫(kù)對(duì)象等信息。在分析階段決定數(shù)據(jù)庫(kù)對(duì)象的可訪問(wèn)信息。利用數(shù)據(jù)字典緩存器有效的改善了響應(yīng)時(shí)間。它的大小由共享池的大小決定。
它存儲(chǔ)數(shù)據(jù)文件中數(shù)據(jù)塊的拷貝。利用這種結(jié)構(gòu)使數(shù)據(jù)的更新操作性能大大的提高。數(shù)據(jù)高速緩存中的數(shù)據(jù)交換同樣采用最近最少使用算法(LRU)。它的大小主要受到DB_BLOCK_SIZE決定。數(shù)據(jù)高速緩存它由DB_CACHE_SIZE、DB_KEEP_CACHE_SIZE、DB_RECYCLE_CACHE_SIZE這些獨(dú)立的子緩存器構(gòu)成,同時(shí)它能動(dòng)態(tài)的增長(zhǎng)或收縮。
重做日志緩存器是個(gè)環(huán)狀的緩存器,它記載所有數(shù)據(jù)的改變,主要目的用于恢復(fù)。改變后的記錄內(nèi)部稱為重做條目,重做條目包含重構(gòu)或重做信息。它的大小由初始化參數(shù)中的LOG_BUFFER決定。重做日志緩存尺寸若太小會(huì)導(dǎo)致進(jìn)程競(jìng)爭(zhēng),并引起寫(xiě)日志進(jìn)程之間的競(jìng)爭(zhēng)。
Java池是在安裝使用Java后,才在SGA中出現(xiàn)的一個(gè)組件,它的大小由JAVA_POOL_SIZE初始化參數(shù)決定。Java池為執(zhí)行Java命令提供分析與執(zhí)行內(nèi)存空間。
數(shù)據(jù)庫(kù)管理員可以可選配置被稱為大池的內(nèi)存區(qū),它主要用于存儲(chǔ)為共享服務(wù)器保存會(huì)話信息、I/O服務(wù)進(jìn)程、Oracle備份與恢復(fù)操作、并行的消息緩存等內(nèi)容。值得一提的是大池不像其他內(nèi)存組件中存在LRU列表。
程序全局區(qū)用于保存每一個(gè)用戶連接到數(shù)據(jù)庫(kù)的信息。連接到數(shù)據(jù)庫(kù)的信息主要有回話信息、排序信息和游標(biāo)信息等三方面。
Oracle的進(jìn)程主要分為用戶進(jìn)程、服務(wù)進(jìn)程和后臺(tái)進(jìn)程三類。用戶進(jìn)程運(yùn)行在應(yīng)用或Oracle工具中;服務(wù)進(jìn)程在一個(gè)Oracle數(shù)據(jù)庫(kù)實(shí)例啟動(dòng)后當(dāng)一個(gè)用戶建立連接后創(chuàng)建的;后臺(tái)進(jìn)程則完成不同特定任務(wù)的一些進(jìn)程。
Oracle的后臺(tái)進(jìn)程如下:
※ 寫(xiě)數(shù)據(jù)DatabaseWriter(DBW0或DBWn);
※ 寫(xiě)日志LogWriter(LGWR);
※ 檢查點(diǎn)Checkpoint(CKPT);
※ 系統(tǒng)監(jiān)視SystemMonitor(SMON);
※ 進(jìn)程監(jiān)視ProcessesMonitor(PMON);
※ 歸檔Archive(ARCn);
※ 恢復(fù)Recover(RECO);
※ 鎖管理服務(wù)LockManagerServer(LMS)–僅在RealApplicationClusters;
※ 隊(duì)列監(jiān)視QueueMonitor(OMNn);
※ 調(diào)度Dispatcher(Dnnn);
※ 服務(wù)Server(Snnn);
數(shù)據(jù)寫(xiě)進(jìn)程負(fù)責(zé)將重寫(xiě)塊(dirtyblock)從數(shù)據(jù)高速緩存中寫(xiě)到磁盤(pán)上的數(shù)據(jù)文件里。為了使數(shù)據(jù)庫(kù)的性能受I/O限制降到最低,DBWn不是每一個(gè)塊修改時(shí)立即寫(xiě)到磁盤(pán)上,而是等到符合一定條件后讀取高速緩存中的重寫(xiě)塊列表,并將其指定的塊成批地寫(xiě)到數(shù)據(jù)文件中。
數(shù)據(jù)寫(xiě)進(jìn)程活動(dòng)的條件如下:
※ 服務(wù)進(jìn)程無(wú)法發(fā)現(xiàn)可用緩存
※ 檢查點(diǎn)出現(xiàn)
※ 重寫(xiě)塊到達(dá)極限
※ 超時(shí)
※ ARC發(fā)出需求
※ 表空間脫機(jī)
※ 表空間只讀
※ 表丟棄或表截?cái)?br/>※ 表空間開(kāi)始備份
雖然一個(gè)數(shù)據(jù)庫(kù)寫(xiě)進(jìn)程(DBW0)對(duì)大多數(shù)系統(tǒng)是足夠的,但是如果你的系統(tǒng)修改數(shù)據(jù)量很大要提高些性能你可以配置更多的寫(xiě)進(jìn)程(DBW1到DBW9和DBWa到DBWj)。這些增加的DBWn進(jìn)程無(wú)法在單處理系統(tǒng)中使用。初始化參數(shù)DB_WRITER_PROCESSES指定了DBWn進(jìn)程的序號(hào),此參數(shù)大允許值為20。
寫(xiě)日志進(jìn)程是負(fù)責(zé)管理重做日志緩存的——將重做日志從緩存區(qū)寫(xiě)到磁盤(pán)重做日至文件中。LGWR寫(xiě)從上次寫(xiě)后開(kāi)始到最后復(fù)制到緩存中的所有重做條目。要記住Oracle數(shù)據(jù)庫(kù)系統(tǒng)直到LGWR將重做信息從緩存器中寫(xiě)到在線重做日志才認(rèn)為事務(wù)完成并發(fā)送成功代碼。LGWR進(jìn)程對(duì)數(shù)據(jù)庫(kù)性能的影響不大。
寫(xiě)日志在下列條件中活動(dòng):
※ 在COMMIT;
※ 緩存器使用達(dá)到三分之一時(shí)
※ 緩存器使用達(dá)到1M時(shí)
※ 每隔3秒
※ 在DBWn活動(dòng)之前
檢查點(diǎn)進(jìn)程是負(fù)責(zé)向DBWn發(fā)送信號(hào);用檢查點(diǎn)的信息更新數(shù)據(jù)文件頭;用檢查點(diǎn)信息更新控制文件信息。檢查點(diǎn)頻繁出現(xiàn)、日志頻繁切換或數(shù)據(jù)庫(kù)有很多數(shù)據(jù)文件時(shí),該進(jìn)程可以減少LGWR的工作量。數(shù)據(jù)庫(kù)管理員可以通過(guò)設(shè)置初始化參數(shù)CHECKPOINT_PROCESS為TRUE或FALSE來(lái)確定這個(gè)數(shù)據(jù)庫(kù)實(shí)例是否使用檢查點(diǎn)進(jìn)程。在初始化參數(shù)中LOG_CHECKPOINT_INTERVAL和LOG_CHECKPOINT_TIMEOUT來(lái)改變檢查點(diǎn)出現(xiàn)的頻率。設(shè)置這兩個(gè)參數(shù)要小心,多檢查點(diǎn)雖然能使LGWR進(jìn)程工作量下降,但是過(guò)多的檢查點(diǎn)會(huì)導(dǎo)致系統(tǒng)處理時(shí)間和I/O時(shí)間浪費(fèi)在不必要的開(kāi)啟和關(guān)閉檢查點(diǎn)的執(zhí)行上。
系統(tǒng)監(jiān)視進(jìn)程是有規(guī)律的周期性活動(dòng)。
它負(fù)責(zé)的目的如下:
※ 在實(shí)例啟動(dòng)中如果需要執(zhí)行恢復(fù);
※ 重新分配臨時(shí)段;
※ 每隔3秒合并表空間中相鄰的自由區(qū);
※ 根據(jù)需要將表空間或數(shù)據(jù)文件回復(fù)到聯(lián)機(jī)狀態(tài);
※ 對(duì)于應(yīng)用集群系統(tǒng),它執(zhí)行恢復(fù)一個(gè)失敗的CPU或Oracle實(shí)例。
系統(tǒng)監(jiān)視這進(jìn)程在數(shù)據(jù)庫(kù)系統(tǒng)實(shí)例啟動(dòng)時(shí)如果出現(xiàn)故障,那么數(shù)據(jù)庫(kù)系統(tǒng)將無(wú)法開(kāi)始工作。如果任何停止的事務(wù)因?yàn)槲募蛔x或脫機(jī)錯(cuò)誤導(dǎo)致實(shí)例恢復(fù)過(guò)程中跳過(guò),SMON將使表空間或文件回復(fù)到聯(lián)機(jī)狀態(tài)。SMON進(jìn)程對(duì)于一個(gè)實(shí)例能執(zhí)行實(shí)例應(yīng)用集群,一個(gè)SMON對(duì)于一個(gè)實(shí)例能執(zhí)行實(shí)例恢復(fù)為一個(gè)失敗CPU或?qū)嵗?/p>
進(jìn)程監(jiān)視進(jìn)程負(fù)責(zé)在下列過(guò)程失敗后釋放相關(guān)對(duì)象:
※ 事務(wù)回退
※ 釋放相關(guān)鎖
※ 釋放相關(guān)資源
※ 重新分配發(fā)生錯(cuò)誤的調(diào)度
PMON周期性的檢查調(diào)度狀態(tài)和服務(wù)進(jìn)程,并重新使除Oracle有意終止以外的已停止的進(jìn)程運(yùn)行;PMON同樣也注冊(cè)關(guān)于實(shí)例和調(diào)度進(jìn)程用于網(wǎng)絡(luò)監(jiān)聽(tīng)的信息。如果這個(gè)進(jìn)程在數(shù)據(jù)庫(kù)系統(tǒng)實(shí)例啟動(dòng)時(shí)出現(xiàn)故障,那么數(shù)據(jù)庫(kù)系統(tǒng)也將無(wú)法開(kāi)始工作。
恢復(fù)進(jìn)程負(fù)責(zé)自動(dòng)解決恢復(fù)分步式數(shù)據(jù)庫(kù)系統(tǒng)中陷于失敗的分布式事務(wù)。關(guān)于此進(jìn)程的詳細(xì)將在分布式數(shù)據(jù)庫(kù)章節(jié)中介紹。
這是一個(gè)可選的后臺(tái)進(jìn)程。只有當(dāng)Oracle數(shù)據(jù)庫(kù)實(shí)例運(yùn)行在歸檔模式時(shí)出現(xiàn)。歸檔進(jìn)程負(fù)責(zé)在日志文件切換時(shí)將所有重做日志信息復(fù)制到指定的設(shè)備文件中。一個(gè)Oracle數(shù)據(jù)庫(kù)實(shí)例最多可以擁有(ARC0到ARC9)10個(gè)歸檔進(jìn)程。其他Oracle的后臺(tái)進(jìn)程,如鎖管理服務(wù)、隊(duì)列監(jiān)視、調(diào)度等均不是一個(gè)Oracle數(shù)據(jù)庫(kù)實(shí)例必須的。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。