ITPub博客

首页 > 数据库 > Oracle > RMAN 对内存的使用

RMAN 对内存的使用

原创 Oracle 作者:song999 时间:2009-05-20 23:02:40 0 删除 编辑

研读了下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博客 ” ,链接:https://blog.itpub.net/225056/viewspace-1022333/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    9
  • 访问量
    13670