人気ブログランキング | 話題のタグを見る
RMANでArchive Logを消す
Beehiveの検証環境をメンテしていて、手動でアーカイブログを消すのもなんだか面倒なので、RMANにやらせることにした。

RMANはバックアップを取った後、アーカイブログを消してくれる機能がある。その機能を使えば、以前紹介したようなSQLを使って「どこまで消せるか」などをいちいち調べなくてもよい。RMANが不要になったアーカイブログを検出して、消してくれる。

RMANを構成するのにやることはそんなに多くない。目的はあくまでもBeehiveの検証環境でフラッシュバック・ログ用の領域をコンパクトに保つことだから、今回はバックアップとリストアの要件をこまごまとは考えないこととする。

まずは、バックアップを実施するためのRMANのスクリプトを用意する。ファイル名は、ここではbeehive.bkpとしておこう。

configure channel device type disk
format='/home/oracle/app/oracle_backups/full_db_%U';
backup as backupset database
plus archivelog delete all input;


つぎに、上記のRMANスクリプトを実行するシェルスクリプトを用意する。ファイル名はrman_backup.shとしておこう。

. /home/oracle/env_db
rman target / @/home/oracle/script/beehive.bkp \
log=/home/oracle/beehive_bkp.log.$$ nocatalog
exit


ちなみに、/home/oracle/env_db には、ORACLE_HOMEだのPATHだのがあたりまえに設定されているが、ここでは説明を割愛する。

さらに、上記のrmah_backup.shをcronから定期的に実行するようにする。

$ crontab -l
0 2 * * * /home/oracle/script/rman_backup.sh


これで、毎日午前二時ちょうどにRMANが起動し、バックアップを取得したあとに不要なアーカイブログを消し去ってくれる。

なお、この状態では、今度はバックアップセットがディスク領域を占有していく。不要となったバックアップセットを消していかないと、いずれはディスクが満杯になってしまう。

不要なバックアップセットもまた、RMANが消してくれる。そのための設定が下記のとおりだ。

まず、不要になったバックアップセットを消すようにRMANに指示するスクリプトを用意する。ファイル名はrman_delete.bkpとしておこう。

delete obsolete;
exit


次に、上記のスクリプトをRMANに食わせるためのシェルスクリプトを作成する。

. /home/oracle/env_db
rman target / @/home/oracle/script/beehive_delete.bkp \
log=/home/oracle/beehive_bkp.log.$$ nocatalog
exit


最後に、上記のシェルスクリプトをcrontabに登録する。

$ crontab -l
0 2 * * * /home/oracle/script/rman_backup.sh
0 6 * * * /home/oracle/script/rman_delete.sh


ちなみに手元の環境だと、cronからいかなるメールも受け取りたくないので、各行の最後に"> /dev/null 2>&1"をつけてある。

なお、RMANがバックアップセットを「必要」か「不要」か判断する基準について少々補足しておく。

RMANのデフォルトの設定では、保存方針がREDUNDANCY 1になっている。これは、バックアップセットは最後の一つだけを必要とし、それ以前のバックアップはすべて不要とみなす、という設定だ。この状況でdelete obsoleteを実行すると、最後に取得したバックアップセットだけを残して、それよりも古いバックアップセットをRMANは削除する。

心配だから二つぐらいは残しておきたいという人は、保存方針を変更するとよい。下の例では、「最新から二つ以上古いバックアップセット」を不要とみなす。

$ rman target / nocatalog
RMAN>configure retention policy to redundancy 2;

new RMAN configuration parameters:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
new RMAN configuration parameters are successfully stored


バックアップセットの数ではなく、リカバリ時に遡れる日付を保障したい場合には、REDUNDANCYではなくWINDOWオプションを使う。2日前までに戻ることを保障したいのなら、

$ rman target / nocatalog
RMAN>configure retention policy to recovery window of 2 days;

old RMAN configuration parameters:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
new RMAN configuration parameters:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 2 DAYS;
new RMAN configuration parameters are successfully stored



これで、フラッシュバック・ログの領域管理に頭を悩ませることはなくなった。
by beectl | 2008-06-13 19:06 | Oracle Beehive
<< Apple Mail で文字化... 今日のB-Encoding不正 >>