Oracle database のRMANを使用したバックアップについて記載します。
検証した環境は以下の通り単一インスタンス環境でOSはWindows Serverです。
バックアップの種類
Oracle databaseのRMANを使用したバックアップにはイメージコピーとバックアップセットがあります。また、一貫性(オフライン)バックアップと非一貫性(オンライン)バックアップに分けられます。
最終的には、RMANのバックアップを使用したオンラインバックアップについてまとめます。
イメージコピー
OSレベルでのデータファイル、制御ファイル、アーカイブREDOログをコピーする方式です。OSのコピーでも作業は可能ですが、RMANを使用するとRMANのレポジトリに記録されるため、リストアとリカバリにRMANを使用できます。
レポジトリとはなにかが保管されている場所になります。
「RMANのレポジトリに記録」とはRMANがバックアップの場所を知っている(認知している)ことになります。色々な技術でレポジトリの記述が出てきますが、「何かが保管されている場所」で概ね間違いないと思います。
バックアップセット
RMANのRMANコマンドで作成する固有形式のバックアップです。
大体はバックアップセットを使用します。
バックアップセットはバックアップピースという物理ファイルで構成されます。データファイル、制御ファイル、アーカイブREDOログファイル、サーバパラメータファイルを含めることができます。
バックアップセットではバックアップデータの圧縮も可能です。
一貫性(オフライン)バックアップ
- データベースを停止させた状態でバックアップ
- REDOログ内のすべてのコミット済の変更がデータファイルに適用されている状態
- 取得したバックアップをリストアするだけでデータベースをオープン可能
- リストア時のデータはバックアップ時のデータに限定される
利用するケースですが定期メンテナンス等で確実な静止点(時間)が必要な場合になります。また初期構築時やログモードの変更時に取得する感じです。
非一貫性(オンライン)バックアップ
- データベースが稼働した状態でバックアップ
- REDOログ内のすべてのコミット済の変更がデータファイルに適用されているとは限らない
- 取得したバックアップをリストア後にリカバリが必要
- アーカイブログモードでのデータベースを稼働が必要
- リストア時のデータは障害発生時までの任意の時間のデータにリストア&リカバリで復元することが可能
データベースを停止しないこと、理論上データ復旧は障害発生時直前まで可能なことがメリットです。デメリットはアーカイブログモードはディスク容量がノンアーカイブモードと比べると大きくなること、最終REDOログファイルが障害に巻き込まれてしまうといオフラインバックアップと同じ復旧レベルになります。
バックアップ設定
RMAN設定の表示
RAMプロンプトでshow allコマンドを実行します。
ディスクの設定(ディスクに保存するように指定:デフォルト)CONFIGURE DEFAULT DEVICE TYPE TO DISK;
制御ファイルとパラメータファイルも同時にバックアップ(デフォルト)CONFIGURE CONTROLFILE AUTOBACKUP ON;
リテンションポリシーの設定
バックアップの保存を日数か世代数で指定できます(どちらか一方の指定になります)。
リカバリ期間での保存設定(7日間に設定)CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
冗長性での保存設定(全体バックアップ【レベル0の増分を含む】のデータファイルと制御ファイルのバックアップ数を2世代に設定)CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
全体バックアップの実行
データベース全体をRMANでバックアップします。
コマンドプロンプトから以下のコマンドでRMANに接続します。rman target "'/ as sysbackup'"
RMANプロンプトで以下のコマンドを実行するとバックアップが開始されますbackup database plus archivelog;
または下記コマンドになります。
backup as backupset database plus archivelog;
バックアップが完了しました。
リカバリ・カタログを使用した全体バックアップ
リカバリ・カタログを使用した全体バックアップについても記載しておきます。
RMANの接続先にカタログを指定するだけで、バックアップコマンドに違いはありません。リカバリ・カタログの内容と環境はここを参照下さい。rman target / CATALOG rman@orcl
RMANプロンプトで以下のコマンドを実行するとバックアップが開始されますbackup database plus archivelog;
バックアップが完了しました。
イメージコピーでのバックアップ
参考にイメージコピーのコマンドを記載します。
以下のRMANコマンドを実施することで、イメージコピーを実施します。backup as copy database;
イメージコピーが完了しました。
バックアップのバッチファイル
毎日手動でバックアップを実施することは不可能ではないですが、大変なのでバッチファイルを作成します。最もシンプルな形でサンプルを紹介します。
RMANはバッチファイルからrcvファイルを読み込ませて実行させます。
以下はWindwosの例になります。
C:\rmanbackupフォルダを作成し、バッチファイルもrcvファイル、ログファイルもC:\rmanbackupで完結させます。
バッチファイル【RMANFullBackup.bat】
内容:ルートデータベース(orcl)に接続し、@以下のファイル(RMANFullBackup.rcv)を実行、RMANFullBackup.logにログ(.logファイルでなくてはならない)を出力する。@echo on
C:\app\oracle\product\19.3.0\dbhome_1\BIN\rman target / @C:\rmanbackup\RMANFullBackup.rcv log=C:\rmanbackup\RMANFullBackup.log
rcvファイル【 RMANFullBackup.rcv 】backup as backupset database plus archivelog;
一応、上記のバッチファイルをタスクスケジューラで実行すれば定期的な完全バックアップが実行可能です。
本番ではログローテーションさせたり、バックアップ後にアーカイブREDOログファイルを削除したりすることが必要かと思いますが、取っ掛かりとしてご参考まで。