OracleのRMAN(Recovery Manager)は強力なバックアップツールですが、手動で実行していると運用が煩雑になります。そこでおすすめなのが、cronを使ってRMANバックアップを自動化する方法です。
本記事では、RMANスクリプトの作成からcronによるスケジューリング設定まで、実践的な手順を紹介します。
1. RMANバックアップスクリプトの作成
まずは、RMANに渡すスクリプトをテキストファイルとして作成します。以下は、データベース全体をバックアップする基本的なスクリプトの例です。
rman_backup.rcv(任意の名前で保存)
RUN {
ALLOCATE CHANNEL c1 DEVICE TYPE DISK;
BACKUP DATABASE FORMAT '/backup/db_%U.bkp';
BACKUP CURRENT CONTROLFILE FORMAT '/backup/ctrl_%U.bkp';
RELEASE CHANNEL c1;
}
必要に応じて、archivelog all
や delete input
などのオプションも追加できます。
2. 実行用シェルスクリプトの作成
次に、上記のRMANスクリプトを実行するためのシェルスクリプトを作成します。
rman_backup.sh
#!/bin/bash
export ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
export ORACLE_SID=ORCL
export PATH=$ORACLE_HOME/bin:$PATH
export NLS_LANG=American_America.AL32UTF8
rman target / cmdfile=/home/oracle/scripts/rman_backup.rcv log=/home/oracle/logs/rman_backup_$(date +\%Y\%m\%d).log
※環境変数(ORACLE_HOME
/ ORACLE_SID
)は自身の環境に合わせて調整してください。
3. cronで定期実行をスケジューリング
最後に、cronに登録して定期的に自動実行されるように設定します。
手順:
crontab -e
例:毎日深夜1時に実行する場合
0 1 * * * /home/oracle/scripts/rman_backup.sh > /dev/null 2>&1
この設定により、毎日午前1時にRMANバックアップが自動で開始され、ログも日付付きで出力されます。
ログ・失敗時の対策
- ログファイルを定期的に確認し、エラーが発生していないかチェック
- cronでの標準出力・標準エラーをメール通知する設定も有効
- ログの自動ローテーションや削除(logrotateやfindでの削除)も検討
まとめ
RMANのバックアップは自動化することで、ヒューマンエラーを防ぎ、確実な運用が可能になります。cronとの連携によって、深夜や週末の無人実行も容易になります。
手順としては、
- バックアップスクリプト(.rcv)を用意
- 実行用のシェルスクリプト(.sh)を作成
- cronで定期スケジューリング
を行うだけです。バックアップ運用を自動化して、障害時にも迅速に復旧できる体制を整えておきましょう。