聊聊 Oracle 的 Rman 壓縮類型
概述
rman的備份壓縮是我們日常工作中最常用的,下面分享一下rman的壓縮類型及算法。
- 空壓縮
- 未使用塊壓縮
- 二進制壓縮
在 Oracle 版本 10.1 之前,默認情況下只完成“空”壓縮,但從 Oracle 版本 10.2 開始,會完成“空”和“未使用塊”壓縮。這些壓縮是自動完成的,這些壓縮不需要特殊命令。“Null”和“Unused Block”壓縮過濾哪些塊被發送到備份。“二進制”壓縮是對發送到備份的塊的附加壓縮。
Rman壓縮詳情
1、Null Compression
A Complete Understanding of RMAN Compression (Doc ID 563427.1) To Bottom 將數據文件備份到備份集中時,RMAN 不會備份從未備份過的數據塊的內容 分配。(在以前的版本中,這種行為稱為 NULL 壓縮)。這意味著 RMAN 永遠不會備份曾經使用過的塊。直到 Oracle 版本 9i RMAN 執行空壓縮。
示例:
您有一個表空間,其中包含一個大小為 100MB 的數據文件,并且在 100MB 中僅使用了 50MB。然后 RMAN將只備份 50MB。
2、未使用的塊壓縮
從 Oracle 10.2 版開始,RMAN 會跳過當前不包含數據的塊,這稱為未使用的塊壓縮。RMAN 現在通過跳過當前不用于存儲數據的數據文件塊來創建更緊湊的數據文件備份。在以前的版本中,RMAN 僅支持 NULL 壓縮,這會跳過從未分配過的數據文件中的空間。DBA 無需額外操作即可使用此功能。
示例:
您有一個表空間,其中包含一個大小為 100MB 的數據文件,在 100MB 中,用戶表使用了 50MB。然后用戶使用新的未使用塊壓縮刪除了屬于該表空間的 25MB 表備份了 25MB 的文件。在此示例中,如果使用空壓縮,那么它將備份 50MB,因為空壓縮將考慮已格式化/曾經使用過的塊。
如果滿足以下所有條件,則完成未使用的塊壓縮:
- COMPATIBLE 初始化參數設置為 10.2。
- 目前沒有為數據庫定義保證還原點。
- 數據文件在本地管理。
- 數據文件正在備份到作為完整備份或 0 級增量備份的一部分的備份集 + 正在磁盤上創建備份集。盡可能跳過未使用的數據塊使 RMAN 能夠使用更少的空間備份數據文件,并且可以提高 I/O效率。
3、二進制壓縮
可以通過在備份命令中指定“AS COMPRESSED”子句來進行二進制壓縮,這種壓縮稱為二進制壓縮。RMAN 可以在將數據寫入備份集時應用二進制壓縮算法。這種壓縮類似于許多磁帶供應商在將數據備份到磁帶時提供的壓縮。但是我們不能給出確切的壓縮百分比。這種二進制壓縮算法可以大大減少磁盤備份存儲所需的空間。對于文本密集型數據庫,它通常是 2 到 4 倍,甚至更大。
進行壓縮備份的命令:
RMAN> backup as compressed backupset database
- 壓縮備份集會產生一些 CPU 開銷。如果正在備份的數據庫以或接近其最大負載運行,您可能會發現使用 AS COMPRESSED BACKUPSET 的開銷是不可接受的。在大多數其他情況下,壓縮備份集可以節省足夠的磁盤空間,值得 CPU 開銷。
- 沒有從壓縮備份集中恢復數據庫的特殊命令,恢復命令與未壓縮備份相同。
- 從壓縮的備份集恢復將比未壓縮的備份集花費更多的時間。
除了現有的 BZIP2 算法用于 oracle 10G 中備份的二進制壓縮,RMAN 11G 可執行文件還使用 Oracle Database 11g 高級壓縮選件支持 ZLIB 算法進行壓縮備份。BZIP2 是11g 和 10g 中 RMAN 的默認壓縮。BZIP2 壓縮比非常好,但速度慢且占用大量 CPU。ZLIB 壓縮速度非常快,但壓縮率不如其他算法。(僅限 11g 并帶有高級壓縮選項)支持的算法是 BZIP2(默認)和 ZLIB。BZIP2 算法針對最大壓縮進行了優化,而 ZLIB 算法針對 CPU 效率進行了優化。BZIP2 比 ZLIB 消耗更多的 CPU 資源,但通常會產生更緊湊的備份。COMPATIBLE 初始化參數必須設置為 11.0.0 或更高版本ZLIB 壓縮,需要 Oracle Advanced Compression 選項。
壓縮可用于數據文件、歸檔日志和控制文件的備份集。
RMAN> backup as compressed backupset archivelog all;
RMAN> backup as compressed backupset database;
RMAN> backup as compressed backupset current controlfile;
注意:rman壓縮備份在恢復過程中不需要額外的解壓步驟。
配置壓縮算法。
RMAN> CONFIGURE COMPRESSION ALGORITHM '<alg_name>';
各種壓縮類型: 各種壓縮類型可以參考 V$。
RMAN_COMPRESSION_ALGORITHM視圖。
SQL> select ALGORITHM_NAME, ALGORITHM_DESCRIPTION, ALGORITHM_COMPATIBILITY from
V$RMAN_COMPRESSION_ALGORITHM ;