IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置:首頁數(shù)據(jù)庫Oracle → Oracle中最易忽視的兩個(gè)重要進(jìn)程

Oracle中最易忽視的兩個(gè)重要進(jìn)程

時(shí)間:2015/6/28來源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評論(0)

oracle數(shù)據(jù)庫中有兩個(gè)進(jìn)程非常的渺小,但是其作用卻是非常的巨大。由于其比較小而往往被數(shù)據(jù)庫管理員所忽視。筆者這次就給大家提醒提醒,不要忽視了這兩個(gè)進(jìn)程的作用。如果利用的好的話,會減少系統(tǒng)管理員不少的工作。

一、系統(tǒng)監(jiān)視進(jìn)程SMON

這個(gè)進(jìn)程對于Oracle數(shù)據(jù)庫來說,可以利用一句話來概括,即人小鬼大。其負(fù)責(zé)的內(nèi)容并不是很多,但是對于數(shù)據(jù)的安全與數(shù)據(jù)庫的性能卻有很關(guān)鍵的作用。如隨著表空間中的數(shù)據(jù)不斷的建立、刪除、更新等等,在表空間中難免會產(chǎn)生碎片。由于這些碎片的存在,數(shù)據(jù)庫的性能會逐漸的降低。而現(xiàn)在系統(tǒng)監(jiān)視進(jìn)程SMON的作用,就可以解決這些碎片。SMON進(jìn)程會將各個(gè)表空間的空閑碎片合并在一起,讓數(shù)據(jù)庫系統(tǒng)更加容易分配。從而提高數(shù)據(jù)庫的性能。另外,在數(shù)據(jù)庫運(yùn)行的過程中,會因?yàn)閿嚯娀蛘咂渌脑蚨l(fā)生故障。此時(shí)由于數(shù)據(jù)高速緩存中的臟緩存塊還沒有來得及寫入到數(shù)據(jù)文件中,從而導(dǎo)致數(shù)據(jù)的丟失。在數(shù)據(jù)庫啟動的時(shí)候,系統(tǒng)監(jiān)視進(jìn)程SMON會在下一次啟動例程的時(shí)候,自動讀取重做日志文件并對數(shù)據(jù)庫進(jìn)行恢復(fù)。也就是說,進(jìn)行將已提交的事物寫入數(shù)據(jù)文件(已經(jīng)寫入到日志文件中而沒有寫入到數(shù)據(jù)文件中的數(shù)據(jù))、回退未提交的事務(wù)操作。可見,SMON進(jìn)程在Oracle數(shù)據(jù)庫中是一個(gè)比較小但是卻非常重要的角色。

在管理這個(gè)進(jìn)程的時(shí)候,筆者認(rèn)為主要需要注意兩個(gè)問題。一是其啟動的時(shí)機(jī)。一般情況下,例程重新啟動的時(shí)候,會啟動這個(gè)系統(tǒng)監(jiān)視進(jìn)程。然后在這個(gè)例程運(yùn)行期間,這個(gè)進(jìn)程也會被系統(tǒng)定期的喚醒,然后其會檢查是否有工作需要其完成。最重要的是,在有需要的時(shí)候,數(shù)據(jù)庫管理員可以通過其他進(jìn)程來啟動這個(gè)SMON系統(tǒng)系統(tǒng)監(jiān)視進(jìn)程,來完成一些特定的工作。

第二需要注意表空間配置對這個(gè)進(jìn)程的影響。在表空間管理中,有一個(gè)參數(shù)叫做PCTINCREASE。如果將這個(gè)參數(shù)設(shè)置為0的話,則這個(gè)SMON系統(tǒng)監(jiān)視進(jìn)程對于這個(gè)表空間的作用就要打折扣了。在設(shè)置為0的情況下,SMON進(jìn)程就不會對這個(gè)表空間中的空閑碎片進(jìn)行整理、合并操作。也就是說,需要數(shù)據(jù)庫管理員通過數(shù)據(jù)的導(dǎo)出導(dǎo)入等手工操作,才能夠解決表空間的碎片問題。顯然這會增加數(shù)據(jù)庫管理員的工作量。為此筆者建立,除非有特別的需要,不要將這個(gè)參數(shù)設(shè)置為0。讓SMON進(jìn)程自動對表空間中的碎片進(jìn)行管理,自動合并表空間中的空閑碎片。不過如果某個(gè)表空間這個(gè)參數(shù)設(shè)置為0的話,不會影響到系統(tǒng)監(jiān)視進(jìn)程的其他用途,如不會影響到在例程非正常關(guān)閉時(shí)對數(shù)據(jù)的恢復(fù)操作。即即使這個(gè)參數(shù)設(shè)置為0 ,在有需要的時(shí)候其仍然可以利用重做日志文件中的記錄來恢復(fù)相關(guān)的數(shù)據(jù)。

二、歸檔進(jìn)程ARCH。

在重做日志文件管理中有歸檔與非歸檔兩種模式。在日志進(jìn)行切換時(shí),如果不對原先的日志文件進(jìn)行歸檔,而直接覆蓋的話,就叫做非歸檔模式。相反,在寫入下一個(gè)日志文件的時(shí)候,會先對目標(biāo)日志文件進(jìn)行歸檔,這就叫做歸檔模式。歸檔進(jìn)程ARCH就是負(fù)責(zé)在重做日志文件切換后將已經(jīng)寫滿的重做日志文件復(fù)制到歸檔日志文件中,以防止循環(huán)寫入重做日志文件時(shí)將其覆蓋。所以說,只有數(shù)據(jù)庫運(yùn)行在歸檔模式時(shí),這個(gè)ARCH進(jìn)程才會被啟動。在任何一中操作模式下,重做日志文件都會被循環(huán)使用。所以當(dāng)LGWR進(jìn)程在進(jìn)行日志切換,需要用到下一個(gè)日志文件時(shí),則數(shù)據(jù)庫會被暫時(shí)的掛起,進(jìn)行目標(biāo)日志文件的歸檔工作。直到這個(gè)目標(biāo)重做日志文件歸檔完畢后,數(shù)據(jù)庫才會恢復(fù)正常。所以說,歸檔日志的操作,有時(shí)候也會影響數(shù)據(jù)庫的性能,特別是當(dāng)需要進(jìn)行頻繁的大批量數(shù)據(jù)更改的時(shí)候。

那么有什么方法可以提高歸檔作業(yè)的效率呢?筆者如下一些建議可供數(shù)據(jù)庫管理員參考。

一是可以增加歸檔進(jìn)程的個(gè)數(shù)。在默認(rèn)情況下,一個(gè)例程只會啟動一個(gè)歸檔進(jìn)程ARCH。當(dāng)ARCH進(jìn)程正在歸檔一個(gè)重做日志文件時(shí),任何其他的進(jìn)程都不能夠訪問這個(gè)重做日志文件。如果在Oracle數(shù)據(jù)庫中,可以根據(jù)需要啟動多個(gè)歸檔進(jìn)程ARCH。在Oracle數(shù)據(jù)庫中,啟動多個(gè)歸檔進(jìn)程時(shí)分為手工與自動兩個(gè)方式。為了提高重做日志文件歸檔的速度,當(dāng)用戶進(jìn)程發(fā)生比較長時(shí)間的等待時(shí), LGWR進(jìn)程會根據(jù)時(shí)機(jī)情況來自動啟動多個(gè)歸檔進(jìn)程。在Oracle數(shù)據(jù)庫中其最多可以啟動十個(gè)歸檔進(jìn)程。另外如果數(shù)據(jù)庫管理員在部署數(shù)據(jù)庫的時(shí)候,估計(jì)日志歸檔作業(yè)會影響到數(shù)據(jù)庫的性能,就可以手工來啟動多個(gè)歸檔進(jìn)程。這是通過初始化參數(shù)LOG_ARCHIVE_MAX_PROCESSES確定的?梢詫⑦@個(gè)參數(shù)設(shè)置為大于1 的數(shù)值(注意不能夠超過9個(gè)歸檔進(jìn)程)。如此的話,數(shù)據(jù)庫在創(chuàng)建例程的時(shí)候就會啟動多個(gè)歸檔進(jìn)程。不過筆者還是傾向于讓數(shù)據(jù)庫系統(tǒng)來自動管理這個(gè)進(jìn)程。數(shù)據(jù)庫管理員最好不要干涉。另外需要注意,這個(gè)ARCH歸檔進(jìn)程個(gè)數(shù)與DBWR進(jìn)程個(gè)數(shù)的區(qū)別。默認(rèn)情況下,DBWR進(jìn)程也只有一個(gè)。為了提高數(shù)據(jù)庫的性能,可以根據(jù)情況增加這個(gè)DBWR進(jìn)程的個(gè)數(shù)。不過其增加時(shí)受到CPU數(shù)量的限制,即一個(gè)DBWR進(jìn)程需要使用一個(gè)獨(dú)立的CPU。如果想啟動三個(gè)DBWR進(jìn)程的話,就必須采用3個(gè)CPU處理器。而對于ARCH歸檔進(jìn)程來說,則沒有這個(gè)限制。即使只有一個(gè)CPU處理器,其也可以啟動三個(gè)甚至更多的ARCH進(jìn)程。

二是增加重做日志文件來延長歸檔日志進(jìn)程啟動的時(shí)間間隔。通常情況下,只有當(dāng)前一個(gè)重做日志文件寫滿、需要進(jìn)行日志切換的時(shí)候,才會觸發(fā)這個(gè)ARCH歸檔日志進(jìn)程。所以如果重做文件比較大,其日志切換的時(shí)間間隔就會延長。則ARCH歸檔日志進(jìn)程的啟動時(shí)間間隔業(yè)會比較長。所以說,通過調(diào)整重做日志文件的大小,可以延長歸檔進(jìn)程啟動的時(shí)間間隔。從而降低因?yàn)闅w檔進(jìn)程啟動而對數(shù)據(jù)庫性能造成的負(fù)面影響。

三是在數(shù)據(jù)庫初始化的過程中,可能需要導(dǎo)入大量的數(shù)據(jù)。此時(shí)會對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行大量的插入、刪除、更新等操作,從而導(dǎo)致重做日志文件切換頻繁。這就會導(dǎo)致數(shù)據(jù)庫需要頻繁啟動ARCH歸檔進(jìn)程。數(shù)據(jù)庫大量的更新操作、重做日志文件(LGWR進(jìn)程)、歸檔重做日志文件(ARCH)進(jìn)程之間就形成了一條無形的鏈條。由于"蝴蝶效應(yīng)",從而降低了數(shù)據(jù)庫的性能。為此在必要的時(shí)候,需要砍斷這跟鏈條,以提高數(shù)據(jù)庫的性能。如可以在數(shù)據(jù)大量導(dǎo)入、更新、刪除的時(shí)候,不往日志文件中插入記錄,或者臨時(shí)增加重做日志文件的空間。如此的話,在進(jìn)行這些操作時(shí)就可以避免進(jìn)行重做日志切換或者延長重做日志切換的時(shí)間間隔。從而ARCH歸檔日志進(jìn)程也可以避免或者延長其時(shí)間間隔,從而提高數(shù)據(jù)庫的性能。當(dāng)數(shù)據(jù)庫初始化完成之后,再將其恢復(fù)過來。這些臨時(shí)性的調(diào)整雖然比較麻煩,但是卻可以提高數(shù)據(jù)庫的性能。為此筆者認(rèn)為這是值得的。

可見以上兩個(gè)進(jìn)程在Oracle數(shù)據(jù)庫中其作用雖然有限,但是卻跟數(shù)據(jù)庫的性能息息相關(guān)。在日常操作中,靈活使用這個(gè)兩個(gè)進(jìn)程的特性,就可以提高某些操作的速度。這比通過優(yōu)化SQL語句等方法來提高數(shù)據(jù)庫性能要簡單的多。為此筆者建議各位數(shù)據(jù)庫管理員,這兩個(gè)進(jìn)程雖然小,但是其作用不可忽視。數(shù)據(jù)庫管理員要對這兩個(gè)進(jìn)程引起重視。

關(guān)鍵詞標(biāo)簽:SMON,ARCH,Oracle

相關(guān)閱讀

文章評論
發(fā)表評論

熱門文章 Oracle中使用alter table來增加,刪除,修改列Oracle中使用alter table來增加,刪除,修改列oracle中使用SQL語句修改字段類型-oracle修oracle中使用SQL語句修改字段類型-oracle修使用低權(quán)限Oracle數(shù)據(jù)庫賬戶得到管理員權(quán)限使用低權(quán)限Oracle數(shù)據(jù)庫賬戶得到管理員權(quán)限Oracle對user的訪問控制Oracle對user的訪問控制

相關(guān)下載

人氣排行 ORACLE SQL 判斷字符串是否為數(shù)字的語句Oracle中使用alter table來增加,刪除,修改列的語法ORACLE和SQL語法區(qū)別歸納(1)oracle grant 授權(quán)語句如何加速Oracle大批量數(shù)據(jù)處理Oracle刪除表的幾種方法ORACLE修改IP地址后如何能夠使用Oracle 10g創(chuàng)建表空間和用戶并指定權(quán)限