RMAN備份檔案遠大於資料庫大小的原因分析
在跟客戶進行交流的時候,客戶提出有一套資料庫只有40G的大小,但是透過RMAN備份出來的檔案有80GB,使用expdp匯出來的DUMP檔案小於40GB,感覺有些詫異,RMAN不是隻備份有資料的資料塊嗎?怎麼備份也不應該超過40GB啊,難道跟高水位線有關?帶著這些疑問透過在MOS上查閱了一些文章,發現確實有出現RMAN備份檔案遠大於資料庫所佔用空間的問題出現的可能性。
首先要明白RMAN的壓縮型別:
By default RMAN has three types of compression :
1. Null compression
2. Unused block compression
3. Binary compression <<<< 這是我們最常用到的壓縮型別,backup as compressed backupset ....
Till Oracle Version 10.1 only 'Null' compression is done by default but from Oracle Version 10.2 'Null' and 'unused block' compression is done. The types of compression are done automatically, no special command is required.
'Null' and 'unused block' compression are filtering which blocks are send to the backups. 'Binary' compression is an additional compression on the blocks send to the backup.
1. Null Compression:
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). This means RMAN will never backup the blocks that are ever used. RMAN, through Oracle version 9i and forward has performed null compression.
Example : You have a tablespace having one datafile of size 100MB and out of 100MB only 50 MB is used. Then RMAN will backup only 50MB. <<<< 在10.2之前的版本(準確的說是10.2.0.2之前的版本),Oracle預設都是這種壓縮型別,RMAN不備份從未分配的資料塊,換句話說,RMAN不備份從來沒使用過的塊。例如:如果一個表空間有一個大小為100MB的資料檔案,該檔案使用了50MB,RMAN只備份50MB(RMAN的備份和是不是高水位線下的空塊沒關係,和資料塊有沒有被分配過有關係)。
Null Compression also applies to SE and SE ONE
2. Unused Block Compression:
From Oracle version 10.2 forward, RMAN skips the blocks that do no currently contain data and this is called 'Unused Block Compression'. RMAN now creates more compact backups of datafiles, by skipping datafile blocks that are not currently used to store data. In previous releases, RMAN only supported NULL compression, which skipped space in datafiles that had never been allocated. No extra action is required on the part of the DBA to use this feature.
Example : You have a tablespace having one datafile of size 100MB and
out of 100MB, 50MB is used by the user tables. Then user dropped a
table belonging to that tablespace which was of 25MB, with the new
unused block compression on 25MB of the files is backed up. In this
example if null compression is used then it would have backed up 50MB
because null compression will consider the blocks that are
formatted/ever used. <<<< 從10.2版本開始(準確的說是10.2.0.2版本),出現了一種新的壓縮型別-Unused Block Compression,這種備份型別將跳過當前不包含資料的塊(即使曾經使用過該塊),這是新版本RMAN預設的壓縮方式。例如:如果一個表空間有一個大小為100MB的資料檔案,50MB用於使用者表,使用者drop了一個屬於該空間的25MB大小的表,新的預設的UNUSED BLOCK COMPRESSION壓縮型別將只備份25MB的資料塊。如果在NULL COMPRESSION的壓縮型別,將備份50MB的資料塊,因為NULL COMPRESSION的壓縮型別會考慮塊被格式化過,或者說曾經被使用過。
Unused Block Compression is done, if all of the following conditions apply: <<<< 雖然UNUSED BLOCK COMPRESSION是10.2的預設壓縮型別,但不是說10.2的版本透過RMAN備份就一定使用這種壓縮型別,使用它必須滿足以下5個條件。
+ The COMPATIBLE initialization parameter is set to 10.2 <<<< 即使將Oracle資料庫升級到10.2.0.2以上的版本,預設情況下COMPATIBLE初始化引數的值為空,要使用UNUSED BLOCK COMPRESSION功能必須手動設定該引數。
+ There are currently no guaranteed restore points defined for the database <<<< 沒有FLASHBACK中的強制還原點。
+ 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 <<<< 資料檔案作為全庫備份的一部分,或者是基於0級別備份的增量備份。
+ The backup set is being created on DISK <<<< 備份集建立在磁碟上。
or
backup is done to TAPE using "OSB" (Oracle Secure Backup)! <<<< 或者使用OSB將資料備份到磁帶,其他第三方的備份軟體無法使用這種壓縮型別,只能是NULL COMPRESSION。
Unused Block Compression is NOT used if backup done to tape using a THIRD PARTY BACKUP SOFTWARE !
Unused block compression IS executed in Standard Edition. <<<< 標準版也可以使用這種型別的壓縮方式。
以上內容摘取自《A Complete Understanding of RMAN Compression (文件 ID 563427.1)》
以下的內容說明在10.2.0.1版本中,UNUSED BLOCK COMPRESSION壓縮型別不可用:
Unused block compression is NOT available with the Base Release of 10gR2 (10.2.0.1).
It only became available in the first Patch Set Release (10.2.0.2) for NEW tablespaces only.
So for tablespaces created:
- before 10.2.0.2 was applied
- before compatible was set to 10.2
we cannot use Unused Block Compression.
The cause of this problem has been identified and verified in an 'unpublished' Bug 4720762 - Fixed in Product Version 11.0
以上內容摘自:《Why is RMAN not using Unused Block Compression during backup? (文件 ID 798844.1)》
總結:後經過和客戶的確認,客戶資料庫的版本為10.2.0.4,所以我們大膽的推測,雖然客戶的版本高於10.2.0.2,但是由於預設情況下資料庫初始化引數COMPITABLE為空,或不符合其他條件導致UNUSED BLOCK COMPRESSION壓縮型別無法在RMAN中使用到,所以凡是曾經使用到的資料塊RMAN都會進行備份(NULL COMPRESSION),80GB可能是客戶曾經用到過的空間大小,後來釋放了相應空間,所以當前備份才呈現出40GB的資料庫RMAN備份出來有80GB。
--end--
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23135684/viewspace-1846724/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 遠端備份資料庫和檔案的方法資料庫
- rman恢復資料庫--用備份的控制檔案資料庫
- RMAN說,我能備份(4)--RMAN備份資料檔案和控制檔案
- 非歸檔資料庫RMAN備份資料庫
- Backup And Recovery User's Guide-備份資料庫-使用RMAN備份資料庫檔案GUIIDE資料庫
- rman全庫備份備份歸檔日誌檔案
- RMAN備份資料檔案+控制檔案+歸檔日誌
- rman備份-(1) 利用備份級恢復資料檔案和控制檔案
- master資料庫備份原因AST資料庫
- Backup And Recovery User's Guide-備份資料庫-使用RMAN備份控制檔案GUIIDE資料庫
- 使用RMAN備份資料庫資料庫
- rman備份但丟失一個資料檔案,但有歸檔備份
- [20121127]rman備份資料檔案大小與truncate.txt
- Backup And Recovery User's Guide-從RMAN開始-備份資料庫-備份處於歸檔模式的資料庫GUIIDE資料庫模式
- Dedecms備份的資料檔案位置及備份資料庫的方法資料庫
- rman備份檔案的格式
- RMAN關於物理檔案copy的增量備份
- rman備份恢復-rman恢復資料檔案測試
- 驗證控制檔案、歸檔檔案、不同BLOCK大小的資料檔案對應的RMAN備份集不在同一PIECEBloC
- RMAN說,我能備份(5)--RMAN備份歸檔檔案
- [20130412]rman備份檔案大小.txt
- RMAN備份檔案格式
- 用rman建立dataguard備用資料庫繼續(無法找到備份檔案)資料庫
- 利用RMAN備份重建資料庫資料庫
- 表空間資料檔案建立大小與實際使用大小以及rman備份集的關係系列一
- Backup And Recovery User's Guide-備份資料庫-使用RMAN備份表空間和資料檔案GUIIDE資料庫
- 【RMAN】使用增量備份更新資料庫備份映象資料庫
- 還原sqlserver資料庫備份檔案.bak的檔案SQLServer資料庫
- RMAN 驗證 資料檔案 和 備份 的有效性
- RMAN資料庫恢復 之歸檔模式有(無)備份-丟失資料檔案的恢復資料庫模式
- 【原】Oracle學習系列—資料庫備份—RMAN備份Oracle資料庫
- Backup And Recovery User's Guide-備份資料庫-RMAN備份概覽-RMAN備份的目的GUIIDE資料庫
- RMAN備份 建立catalog資料庫資料庫
- oracle uncatalog資料庫備份檔案Oracle資料庫
- RMAN備份恢復——RAC環境資料庫的備份(zt)資料庫
- RMAN備份恢復--RAC環境資料庫的備份(十)資料庫
- RMAN備份恢復——RAC環境資料庫的備份(一)資料庫
- 使用logmnr,在RMAN備份檔案中恢復備份的歸檔日誌檔案進行分析