關於8i, 9i, 10g RMAN備份資料檔案哪些資料塊的疑問

tolywang發表於2009-02-12
在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支援




至於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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章