Oracle提高歸檔作業的效率

有什麼方法可以提高歸檔作業的效率呢?筆者如下一些建議可供數據庫管理員參考。


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


二是增加重做日誌文件來延長歸檔日誌進程啓動的時間間隔。通常情況下,只有當前一個重做日誌文件寫滿、需要進行日誌切換的時候,纔會觸發這個ARCH歸檔日誌進程。所以如果重做文件比較大,其日誌切換的時間間隔就會延長。則ARCH歸檔日誌進程的啓動時間間隔業會比較長。所以說,通過調整重做日誌文件的大小,可以延長歸檔進程啓動的時間間隔。從而降低因爲歸檔進程啓動而對數據庫性能造成的負面影響。


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


原文:http://bbs.landingbj.com/t-0-208691-1.html

發佈了5 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章