RMAN 對記憶體的使用

song999發表於2009-05-20

研讀了下RMAN對記憶體的使用,有很多精細的地方。

1.RMAN如何使用記憶體

對於每一個server process(一般就是 channel):

  • 為每個磁碟檔案分配4個input buffer
  • 為每個backup piece分配4個output buffer

所以減小同時開啟的檔案數可以減小對記憶體的使用。 設定 MAXOPENFILES =
在 對檔案的操作過程中,每個buffer會專屬於這個檔案,而且會被迴圈使用。 在input buffer中可能會包含不需要被備份的block。 然後需要備份的block會從input buffer複製到output buffer中,在這個過程裡會進行block的有效性檢查。

2. buffer大小

每個input buffer的大小為

db_block_size * db_file_direct_io_count (9i以後為隱含引數_DB_FILE_DIRECT_IO_COUNT,預設是1M,也許會根據OS的max_io_size調整)

所以完整的input buffer 大小為

buffer個數(4) * 開啟檔案數 * 單個buffer大小


關於output buffer:

磁碟:同上,只不過“開啟檔案數”變成“backup piece個數”
磁帶:9i/10G, buffer size預設256K

3. 記憶體的出處

一 般來說,Channel的server process是從PGA裡分配記憶體。但如果使用了IO Slave, 則會從SGA裡分配,也就是large pool,因為這部分記憶體需要共享。如果Slave從SGA中得不到足夠的記憶體,則會報4031,slave被停掉,但server process會繼續從PGA中申請buffer,繼續操作。

4. 關於 IO Slaves

實際就是啟動一些子程式,把 讀 和 寫 操作分開進行,提高效率。

DBWR_IO_SLAVES > 0 
每個channel都會被分配這麼多slave。
BACKUP_TAPE_IO_SLAVES = true
啟動一個tape slave
詳見 Note 73354.1 - RMAN: I/O Slaves and Memory Usage

[@more@]

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

相關文章