開門見山,先來看張圖(PS:這張圖是我從網上找的):
工作原理:
首先lgwr進程將redo log buffer中的重做數據寫入到redo log中,此時的redo log分組,每當一個redo log group寫滿時,或者發出switch logfile指令時都會觸發日誌組的切換,當發生日誌組切換時,arc進程會將當前的重做日誌數據寫入歸檔日誌。
要知道,lgwr進程是將內存中的數據寫入到重做日誌文件,這是內存讀磁盤寫。而arc進程是將重做日誌文件寫入到歸檔文件,是磁盤讀磁盤寫。顯然lgwr進程的讀寫效率或者讀寫速度比arc進程要快,而頻繁發生DML操作的數據庫中,可能會發生歸檔慢,而重做日誌寫入速度快的情況,這就會導致數據庫被HANG住,此時數據庫什麼也不做就是等待arc進程將當前重做日誌數據寫入到歸檔文件。
這時候就要考慮啓動更多的歸檔進程了,通過修改參數log_archive_max_processes來實現。
該參數是動態參數,直接修改即可。
① 查看當前該參數值
很明顯,當前最大歸檔進程數是4
② 修改歸檔最大進程數爲5
③ 通過命令驗證一下
你看,就是這麼簡單!