Oracle數(shù)據(jù)庫中的兩個進程
以下的文章主要是在Oracle數(shù)據(jù)庫中提供一些方法來提高歸檔作業(yè)的效率,如果你對這些相關的方法有所了解的話,會對你在Oracle數(shù)據(jù)庫方面的知識有所了解,以下是文章的具體介紹,望你瀏覽完以下的內容會有所收獲。
一是可以增加歸檔進程的個數(shù)。在默認情況下,一個例程只會啟動一個歸檔進程ARCH。當ARCH進程正在歸檔一個重做日志文件時,任何其他的進程都不能夠訪問這個重做日志文件。如果在Oracle數(shù)據(jù)庫中,可以根據(jù)需要啟動多個歸檔進程ARCH。在Oracle數(shù)據(jù)庫中,啟動多個歸檔進程時分為手工與自動兩個方式。
為了提高重做日志文件歸檔的速度,當用戶進程發(fā)生比較長時間的等待時, LGWR進程會根據(jù)時機情況來自動啟動多個歸檔進程。在Oracle數(shù)據(jù)庫中其最多可以啟動十個歸檔進程。另外如果數(shù)據(jù)庫管理員在部署數(shù)據(jù)庫的時候,估計日志歸檔作業(yè)會影響到數(shù)據(jù)庫的性能,就可以手工來啟動多個歸檔進程。
這是通過初始化參數(shù)LOG_ARCHIVE_MAX_PROCESSES確定的??梢詫⑦@個參數(shù)設置為大于1 的數(shù)值(注意不能夠超過9個歸檔進程)。如此的話,數(shù)據(jù)庫在創(chuàng)建例程的時候就會啟動多個歸檔進程。不過筆者還是傾向于讓數(shù)據(jù)庫系統(tǒng)來自動管理這個進程。數(shù)據(jù)庫管理員***不要干涉。
另外需要注意,這個ARCH歸檔進程個數(shù)與DBWR進程個數(shù)的區(qū)別。默認情況下,DBWR進程也只有一個。為了提高數(shù)據(jù)庫的性能,可以根據(jù)情況增加這個DBWR進程的個數(shù)。不過其增加時受到CPU數(shù)量的限制,即一個DBWR進程需要使用一個獨立的CPU。如果想啟動三個DBWR進程的話,就必須采用3個CPU處理器。
而對于ARCH歸檔進程來說,則沒有這個限制。即使只有一個CPU處理器,其也可以啟動三個甚至更多的ARCH進程。
二是增加重做日志文件來延長歸檔日志進程啟動的時間間隔。通常情況下,只有當前一個重做日志文件寫滿、需要進行日志切換的時候,才會觸發(fā)這個ARCH歸檔日志進程。所以如果重做文件比較大,其日志切換的時間間隔就會延長。則ARCH歸檔日志進程的啟動時間間隔業(yè)會比較長。
所以說,通過調整重做日志文件的大小,可以延長歸檔進程啟動的時間間隔。從而降低因為歸檔進程啟動而對數(shù)據(jù)庫性能造成的負面影響。
三是在數(shù)據(jù)庫初始化的過程中,可能需要導入大量的數(shù)據(jù)。此時會對數(shù)據(jù)庫中的數(shù)據(jù)進行大量的插入、刪除、更新等操作,從而導致重做日志文件切換頻繁。這就會導致數(shù)據(jù)庫需要頻繁啟動ARCH歸檔進程。數(shù)據(jù)庫大量的更新操作、重做日志文件(LGWR進程)、歸檔重做日志文件(ARCH)進程之間就形成了一條無形的鏈條。
由于“蝴蝶效應”,從而降低了數(shù)據(jù)庫的性能。為此在必要的時候,需要砍斷這跟鏈條,以提高數(shù)據(jù)庫的性能。如可以在數(shù)據(jù)大量導入、更新、刪除的時候,不往日志文件中插入記錄,或者臨時增加重做日志文件的空間。如此的話,在進行這些操作時就可以避免進行重做日志切換或者延長重做日志切換的時間間隔。
從而ARCH歸檔日志進程也可以避免或者延長其時間間隔,從而提高數(shù)據(jù)庫的性能。當數(shù)據(jù)庫初始化完成之后,再將其恢復過來。這些臨時性的調整雖然比較麻煩,但是卻可以提高數(shù)據(jù)庫的性能。為此筆者認為這是值得的。
可見以上兩個進程在Oracle數(shù)據(jù)庫中其作用雖然有限,但是卻跟數(shù)據(jù)庫的性能息息相關。在日常操作中,靈活使用這個兩個進程的特性,就可以提高某些操作的速度。這比通過優(yōu)化SQL語句等方法來提高數(shù)據(jù)庫性能要簡單的多。為此筆者建議各位數(shù)據(jù)庫管理員,這兩個進程雖然小,但是其作用不可忽視。數(shù)據(jù)庫管理員要對這兩個進程引起重視。
【編輯推薦】