Oracle10gのRecovery Manager(以下RMAN)でバックアップを取得する際、BACKUPコマンドにAS COMPRESSED BACKUPSETオプションをつけるとバックアップ・セットを圧縮することができるようになりました。
チープなOracle運用環境では、RMANを使ってOracleのバックアップを一旦ディスクに取り、バックアップソフトでOracle以外のデータと一緒にテープに吸い上げるというような運用をよくやりますが、Oracleデータベースがそれなりにでかければ、バックアップ・セットもそれに応じて大きくなるため、バックアップ用のディスク領域の確保に苦労することもあります。
しかし、このAS COMPRESSED BACKUPSETオプションを利用してバックアップ・セットをバイナリ圧縮すれば、バックアップ用のディスク領域の問題のほとんどは解消すると思われます。
バックアップ・セットのバイナリ圧縮を指定したバックアップの例を以下に示します。
BACKUP AS COMPRESSED BACKUPSET DATABASE FORMAT 'C:\Oracle\Backup\ORCL\%d_DBF_%U_%Y%M%D.BAK';
では、実際にどれくらい圧縮されるのか、また処理時間はどの程度違うのか...
マイPC上のテストデータベースで試してみたところ、以下のような結果になりました。
非圧縮 | 圧縮 | |
---|---|---|
処理時間 | 2分37秒 | 2分7秒(18.5%短縮) |
ファイルサイズ(MB) | 1,249 | 281(77.5%縮小) |
データの内容によっても圧縮率は変わってくるとは思いますが、かなりコンパクトになるようです。
また、ディスクへの書き込みが減ることによって処理時間も短縮されるようですが、圧縮処理の処理時間はCPUパワーに依存するため、より高速なCPUあるいはマルチCPUの環境ではさらにパフォーマンスが向上するものと思われます。
バックアップ・セットの圧縮を行う場合、以下のようにいくつかの注意点がありますが、これらの点で問題がないようであれば、デフォルトで圧縮をかけたいところです。
- テープに直接バックアップを取る場合にはテープ・デバイス側で圧縮をかけたほうがよい。
- 圧縮できるのはバックアップ・セットだけで、イメージ・コピーの圧縮はできない。(差分更新バックアップのレベル0の増分はイメージ・コピーでなければならないため圧縮できない)
- CPU負荷の高い時に実行するとCPUのオーバーヘッドが発生する可能性が高くなる。
なお、デバイスに対してデフォルトのバックアップタイプとしてバックアップ・セット圧縮を設定するには、RMANで以下のコマンドを実行します。
CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET;