ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 关于8i, 9i, 10g RMAN备份数据文件哪些数据块的疑问

关于8i, 9i, 10g RMAN备份数据文件哪些数据块的疑问

原创 Linux操作系统 作者:tolywang 时间:2009-02-12 16:56:35 0 删除 编辑
在10gR2中,rman最显著的一个特征就是对未分配的块进行压缩 (见下面资料) ,这里的未分配的块是否应该指数据文件已经占用,但是还没有extents扩展的部分  ?  还包括已经扩展的extents中没有被使用的块 ? 


根据上面的这句话,好像8i, 9i RMAN备份对未分配的数据块也会进行备份 ?   但是在这里 http://www.itpub.net/640419,2.html  查询到biti 当初讨论的一句话   “  rman 只是不备份重来没有被格式化过的block ”  , 那么9i rman备份未分配的数据块就不对了  ?  



在Oracle8i, 9i 中,RMAN备份 (这里假设为0级备份) 备份的DB文件数据块包含以下:
1.  目前有数据在其中的oracle block .
2.  原来有数据在其中,通过delete, move 或truncate 等操作数据已经不在其中的Oracle block (可能在hwm以上或以下) .
3.  数据文件中还没有分配Extents 的部分的数据块  (一直就处于hwm之上的)   

上面第3部分数据应该没有被rman备份,不然rman备份集不可能小于备份的数据文件总和的大小,也就是备份集和目标数据库物理文件大小一样 。






资料:
------------------------------------

          在10gR2中,rman最显著的一个特征就是对未分配的块进行压缩,但它必须满足一些必要的条件,在满足该条件下做了测试,效果非常理想,创建一个2g的数据文件,备份集只增加了8m,而且数据文件总的容量在2g,备份集才588m.
备份的脚本:
rman>backup full database format = 'd:test.bak';
必须满足的条件如下:

Unused Block Compression Of Datafile Backups to Backup Sets
When backing up datafiles into backup sets, RMAN does not back up the contents of data blocks that have never been allocated. (In previous releases, this behavior. was referred to as NULL compression.)
RMAN also skips other datafile blocks that do not currently contain data, if all of the following conditions apply:
■ The COMPATIBLE initialization parameter is set to 10.2
■ There are currently no guaranteed restore points defined for the database
■ The datafile is locally managed
■ The datafile is being backed up to a backup set as part of a full backup or a level 0 incremental backup
■ The backup set is being created on disk.
Skipping unused data blocks where possible enables RMAN to back up datafiles using less space, and can make I/O more efficient.
出处: http://xzh2000.itpub.net/post/96/64549   







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




biti 的讨论 http://www.itpub.net/640419,2.html  



10g 的问题,需要 block change tracking支持

http://www.linuxmine.com/49382.html


至于9i 的你说的hwm 的问题,因为在一个文件中可能有很多 segment ,这些 segment 的 hwm 分散在文件中,这个 hwm 不是针对 segment 来说的, 只要一个 block 曾经被分配给某个对象,则就需要备份。因为即使表truncate ,block中的数据并没有被抹去,只是  hwm 被移动到靠近 segment header ,oracle  根本难以去识别 这些对象的 extent 到底是否数据已经失效。  rman 只是不备份重来没有被格式化过的block ,也就是数据文件中从来没有被使用过的高 block 号部分。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-548891/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle , MySQL, SAP IQ, SAP HANA, PostgreSQL, Tableau 技术讨论,希望在这里一起分享知识,讨论技术,畅谈人生 。

注册时间:2007-12-10

  • 博文量
    5595
  • 访问量
    13363538