緩沖的大小
ARCn每次從日志文件讀取 _log_archive_buffer_size(以塊為單位),并寫入歸檔目的地。因此如果_log_archive_buffer_size設置為OS下最大的可能值,那么ARCn的性能將最大化并且其在I/O子系統上的負載將最小化。如果該參數在OS上為UNLIMITED,那么設置為最大的物理I/O大小的幾倍,效果將最好。
緩沖的數量
如果_log_archive_buffers可用并且可以從日志文件異步讀取,那么ARCn將使用aio_read()系統調用并行讀取日志到多個緩沖。如果多個日志成員可用,將使用并行異步讀每個日志文件成員以擴展磁盤I/O負載。如果使用了軟件/硬件鏡像進行日志文件傳播,類似的負載平衡將會自動由軟件/硬件使用。因此,可以考慮使用并行歸檔讀,使用與每個日志文件相同多的磁盤,鏡像或者傳播,然后配置_log_archive_buffers最多為3。
需要注意的是:不能通過設置多個_arch_io_slaves來模麓尤罩疚募稍輩⑿幸觳蕉?。ARCn通常自己執行該任何并僅使用I/O服務器來寫操作。
為了在可能時進行異步歸檔寫,至少需要設置兩個_log_archive_buffers,以并行從日志文件讀取。但是如果系統達到了cpu負載頸瓶并且歸檔期間前臺進程受到了影響,并且沒有歸檔聚集的威脅,應該考慮減少緩沖數量,分散cpu負載。
進程數量
如果產生的重做持續過高或者需要歸檔到多個位置,通常需要多個ARCn進程,從Oracle8i開始,可以通過設置log_archive_max_PRocesses參數。也可以通過定期調度ALTER SYSTEM ARCHIVE LOG ALL,如果沒有歸檔聚集,該命令的影響是很小的,但是如果有,該命令會迅速產生額外的arcn幫助趕上聚集。
為了防止LGWR趕上歸檔聚集運行多個ARCn是最大的保險,但是為了使該策略有效,恰當的配置在線日志和歸檔終點的磁盤是很重要的。
因為也可以使用手工歸檔,Oracle在歸檔期間將在任何在線日志文件上保留一個排斥的WL(等待日志)隊列鎖,而忽略log_archive_max_processes的設置。這些隊列上的操作由archive control latch保護。歸檔活動可以從STATSPACK等報告中的該LARCHE上的gets列得到。
影響歸檔進程性能的兩個威脅
在RAC環境下,在實例沒有啟動時,其線程是可用的。如果一個關閉的,啟用的線程的當前SCN落后于force scn,那么在那個線程上將發生強制的日志切換并且活動實例的ARCn為未活動的實例歸檔日志文件。這使得arcn進程轉移到那個實例中工作而不是執行其自己的工作。然而如果ARCn被其自己的lgwr喚醒歸檔其自己實例的日志,那么ARCn將會刮起這個歸檔。這應該通過保持空閑實例啟動或者禁用其重做線程完全避免。
歸檔在前項滾動期間將被完全禁用。因此應該確保干凈的關閉,保持重做產生最小化。
新聞熱點
疑難解答