【Oracle】RMANで自動バックアップをスケジューリングする方法|cronとの連携

【Oracle】RMANで自動バックアップをスケジューリングする方法|cronとの連携 Oracle

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 alldelete 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との連携によって、深夜や週末の無人実行も容易になります。

手順としては、

  1. バックアップスクリプト(.rcv)を用意
  2. 実行用のシェルスクリプト(.sh)を作成
  3. cronで定期スケジューリング

を行うだけです。バックアップ運用を自動化して、障害時にも迅速に復旧できる体制を整えておきましょう。