rman backup recovery備份恢復效能優化tuning方法二

wisdomone1發表於2013-03-31

/****調節rman備份與恢復效能方法***/
依次採用如下方法進行調優

1,從通道配置中移除rate引數
 
2,如果採用同步io,配置dbwr_io_slaves
 
3,如果未配置共享記憶體,配置large_pool_size
 
4,調節讀寫拷貝工作過程


1,從通道配置中移除rate引數
  這裡有個rate引數,它是什麼呢,請參見:
  /***rate引數***//
  RATE Channel Parameter
   1,用於allocate和configure channel命令之中,指定每個通道每秒讀取多少個byte資料;
   2,用此引數可以設定一個上限值,令rman不會花費或佔用過多的磁碟頻寬,而令整體庫效能降低
   3,此引數其實就是一個閥值門.
   4,打個比方,如配置此引數1500k,而每個磁碟每秒可傳遞3mb,這樣在備份時通道就會剩餘一些磁碟頻寬給線上系統
   5,就類似於dbms_resource_manager,可以合理限制資源
  
  自此引數我們可知,設定它其實就是降低了備份的效能;
  如果備份沒有采用streaming tape(即多種速度備份tape),確認或檢視rate沒有被配置
  (也就是說如果tape為固定速度,不用配置rate,rate用於多種速度的備份)
 
  那麼如何移除rate引數呢,可參考如下流程:
   1,檢視備份指令碼
   2,如備份採用run命令,移除rate引數;如在allocate命令中指定rate,略去下面的流程
     如備份未採用run命令,啟動rman,直接執行下一個流程
   3,執行show all檢視當前rman配置
   4,如配置了rate,自configure channel中移除它

 

2,如果採用同步io,配置dbwr_io_slaves
  這個是什麼意思呢?目前一些作業系統支援異常io.但如果你的磁碟不支援它,可以配置dbwr_io_slaves,
  可以模擬非同步,開啟多個固定數量的disk io slaves程式
 
  關於如何優化非同步io
  參考http://space.itpub.net/9240380/viewspace-757528
 
  這個不用說了,上述連結已言明

 

3,如果未配置共享記憶體,配置large_pool_size
   何時要配置large_pool_size?
     如果alert發現:ksfqxcre: failure to allocate shared memory means sync I/O will be used whenever
          async I/O to file not supported natively
   表明未開啟disk io slave,即未配置dbwr_io_slaves.且共享記憶體不足;可配置large_pool_size
 
   如何配置large_pool_size?
    1,可選項:檢視v$sgastat.pool確認物件駐存在記憶體哪個pool,到底是shared pool或是large pool
      (如未配置後者rman備份採用前者)
    2,alter sysetm set large_pool_size=分配的備份channels*(16mb + (4 * size_of_tape_buffer));
      (解釋下:即大池=rman備份分配的通道個數*(16mb + (4 * 備份磁帶的buffer大小))
    3,配置完後重啟rman

 


4,調節讀寫拷貝工作過程
 可參考:http://docs.oracle.com/cd/E11882_01/backup.112/e10642/rcmtunin.htm#BRADV89862
    如何確定到底是輸出裝置(即備份到的裝置在此為tape)效能不行還是輸入的disk io(儲存資料檔案的disk)不足,可採用如下方法
   
    1,採用rman之backup validate和backup;比較二者的時間;
    2,如果backup validate和backup時間差不多,從磁碟讀取就是瓶頸所在,即儲存資料檔案的disk io不足
      如果backup validate明顯少於backup的時間,寫入到輸出的備份設定就是瓶頸所在,即要備份到的tape效能不行
     
     
     下面我們一個個來講:
     1,調節讀的工作
         rman不可能馬上實時把資料變更的資料塊傳送到備份的裝置上
         比如說:在增量備份時,它僅備份上次變更的資料塊,如未開啟block change tracing
         功能;rman就要掃描整個資料檔案,以獲知哪個資料塊發生了變化;
         當rman查詢這樣的變化資料塊時就會填充輸出buffer;
         如果僅僅很小部分的資料塊變化了,採用的是sbt磁帶備份;rman不會很快填充輸出的buffer以保持
         磁帶流化功能即備份多種速度切換功能
        
         此時,為了提升備份的效能,oracle建議採用level of multiplexing
         /**何為多路級別***/
         level of multiplexing
         即同時進行多個輸入檔案的讀寫到同一個rman backup piece中
         The number of input files simultaneously read and then written into the same RMAN backup piece.
        
         /***何為rman backup piece****/
         用於儲存rman backup set的一種物理檔案格式;每個rman backup set 包括1或多個物理備份集
        
         /***何為rman backup set*****/
         1,一個或多個資料檔案,控制檔案,spfile or pfile和歸檔日誌檔案的備份
         2,每個備份集包括1或多個二進位制檔案
         3,上述的二進位制檔案即備份片(參看上述)
         4,每個備份片以rman可識別的檔案格式寫入並易於恢復
         5,它是由rman backup產生的.
         6,一般而言,backup set包括一個備份片.
           但是如果在allocate channel或configure channel中使用maxpiecesize指定備份片檔案的大小,
           則一個備份集可能會包含多個備份片檔案
          
    簡要介紹一眾術語後,繼續我們的調節工作:
     level of multiplexing,就是同時對多個輸入檔案進行讀,並把它們寫入到備份片中
         此引數從:channel的maxopenfiles配置和每個備份集的輸入檔案個數,選取其小者為其值
        
         oracle也給出一些關於如何配置level of multiplexing的表格:
        
         是否asm            是否為條帶化磁碟         oracle給出的建議方案
         -----------------------------------------------------------------------------
         no                  yes                              從上述選取小值後,再增加它的值
                                    採用這種方法,其實就是增了rman備份時填充tape buffer的速度;
                                                              這樣tape buffer就最大可能被送到tape media manger,從而實現tape streaming
 
         no                  no                               這個很簡單:增加channel上的maxopenfiles
        
         yes                 no                               配置channel上的maxopenfiles為1或者2


        
/****最後一講:如何調節寫入拷貝的過程****/        
Tuning the Copy and Write Phases                                                                                 

1,如果自輸出裝置讀效能很不錯,顯然寫和拷貝就可能出現了瓶頸問題
2,特別值得一提的是;如果rman傳送資料塊到了磁帶驅動也足以支援tape streaming;
 但tape未能streaming;此時sbt 寫過程就顯然出問題了,如何改進它的寫效能呢?
   1,如採用full backup,可採用增量backup
         
      2,如備份採用基本壓縮演算法,可採用高階壓縮功能
     
      3,如果資料庫主機有多個cpu,備份採用二進位制壓縮,可以增加channel個數
        
      4,如果備份進行了加密,可採用AES128演算法進行加密
        aes128演算法是一種消耗cpu比較少的演算法
      5,如果備份到磁帶,可嘗試作如何調整
          1,調節tape io buffer大小
              通過allocate channel或configure channel命令中的parms和blksize引數配置
              tape io buffer size和具體的os平臺有關;
              blksize配置可覆蓋預設值
          2,調節tape media software一些配置引數
             包括tape block size
                 這些對備份效能影響很大
         
      6,如果rman備份到asm,增加channel個數
        比如:備份資料庫到16物理磁碟的單一asm磁碟組,分配4個通道;最大可為16;

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

相關文章