RMAN備份時候記憶體區域的使用及split block處理問題

tolywang發表於2009-02-12
Oracle9i , 10g  
Linux, Unix, Windows OS

          RMAN基於備份演算法規則來編譯要備份的資料檔案列表。基於通道數和同時備份的資料檔案數, RMAN在ORACLE共享記憶體段中建立一些記憶體緩衝區, 一般是在PGA中, 不過有時候記憶體緩衝區會被推入SGA。 通道服務程式隨後就開始讀取資料檔案,並在RMAN緩衝中填充這些資料塊。一個緩衝區被填滿時,輸入緩衝區的資料就會推出到輸出緩衝區。資料檔案中的資料塊都會發生這種memory-to-memory write 的過程,如果資料塊符合備份的標準,並且memory-to-memory write操作沒有檢查到資料corruption,  則該資料塊會被儲存到輸出資料緩衝區中,直到輸出緩衝區被填滿。一旦輸出緩衝區被填滿,輸出緩衝區的內容就會被推到備份位置(磁碟或者磁帶)

教材上說,只要配置了DBWR_IO_SLAVES,BACKUP_TAPE_IO_SLAVES其中一個初始化引數就可令RMAN使用large pool.


------------------------------------------


“基於通道數和同時備份的資料檔案數, RMAN在ORACLE共享記憶體段中建立一些記憶體緩衝區, 一般是在PGA中, 不過有時候記憶體緩衝區會被推入SGA”


問題 :    RMAN在Oracle共享記憶體段中建立一些記憶體存緩衝區, 輸入緩衝區和輸出緩衝區都是建立的記憶體緩衝區中的一部分, 他們如何分配 ?       建立的記憶體緩衝區一般是在PGA中,那麼可能在RMAN操作過程中甚至不會用到SGA中的large pool ?   有時候記憶體緩衝區會被推入SGA , 是PGA中記憶體不夠用的時候 ? 還是... ?  







“ 一個緩衝區被填滿時,輸入緩衝區的資料就會推出到輸出緩衝區。資料檔案中的資料塊都會發生這種memory-to-memory write 的過程,如果資料塊符合備份的標準,並且memory-to-memory write操作沒有檢查到資料corruption,  則該資料塊會被儲存到輸出資料緩衝區中,直到輸出緩衝區被填滿 ”  


也就是說RMAN檢查split block 是在輸入緩衝區寫滿需要寫入到輸出緩衝區的時候進行的 ? 如果是split block, 那麼通道程式會將這個資料塊重新寫入到輸入資料緩衝區  ?

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-548903/,如需轉載,請註明出處,否則將追究法律責任。

相關文章