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