こんにちは! 健史です。
OracleXE-21C環境で、データベースのリカバリを実施しました。
今回の記事は、データファイルを壊すことなく、バックアップしたデータにフォワードリカバリを行うものです。
本ケースでは、設定ファイルをPFILEにしています。
また、記事中に記載している起動・停止バッチ、Pfileについては以下の記事を参照願います。
手順概要
・Archive-logを採取する設定
・データのバックアップ
・データベース更新
・バックアップしたデータの戻し
・リカバリ
Archive-logを採取する設定
設定ファイルなどへの設定追加
1).Pfileへの設定追加
Archive-logファイルを採取する設定を追加します。
*.log_archive_dest_1='location=C:\oracle\oradata\XE\ARCHIVE' *.LOG_ARCHIVE_FORMAT = arch_%t_%s_%r.arc
2).Shutdownするバッチファイルから呼び出すSQLへの設定追加
Archive-logファイルを採取する設定です。
以下1行を追加します。
alter system archive log current;
Archive-log-swをオン
オラクルのサービスを手動起動
3つのサービスを以下の順番で起動します。
①.OracleOraDB21Home1TNSListener
②.OracleServiceXE
③.OracleOraDB21Home1MTSRecoveryService
OracleOraDB21Home1MTSRecoveryServiceのサービスは不要ですが、起動するバッチと同様にしています。
Archive-log-swの確認と変更
コマンドプロンプトを起動し、以下の順番に実行していきます。
最初[sqlplus /nolog]と最後[exit]はWindowsのプロンプトから、それ以外はSQLのプロンプトによる実行です。
sqlplus /nolog connect sys/oraadmin as sysdba startup mount PFILE='C:\oracle\oradata\XE\PFILE01.ora' select log_mode from v$database; alter database archivelog; select log_mode from v$database; shutdown immediate exit
Pfileへの設定追加では「Archive-logをどこにどのようなファイル名で採取する」であり、採取する指示はコマンドで行います。
確認コマンド[select log_mode from v$database;]で「ARCHIVELOG」になっている場合には、[alter database archivelog;]を実行する必要はありません。
データファイルのバックアップ
この記事では念のため2つのフォルダに同じものをバックアップします。
<バックアップ元>
中身です。
<バックアップ先>
データベース更新
1).バッチファイルで起動
既にサービスは起動しているのでエラーがでます。
2).SqlDeveloperでデータベース更新
すでに作成しているテーブル[TEST1]の時刻を更新します。
更新後に[Ctrl]+[R]でリフレッシュし、更新後のデータを確認します。
バックアップしたデータの戻し
1).バッチファイルで停止
2).データファイルの戻し
以下の2つの[USERS01.DBF]を戻します。
<バックアップファイル>
<データベースファイルに戻した後の状態>
リカバリ
オラクルのサービスを手動起動
上記[2.Archive-logを採取する設定]「2.Archive-log-swをオン」の「1.オラクルのサービスを手動起動」で起動します。
リカバリ実行
コマンドプロンプトを起動し、以下の順番に実行していきます。
sqlplus /nolog connect sys/oraadmin as sysdba startup mount PFILE='C:\oracle\oradata\XE\PFILE01.ora' set autorecovery on recover database; alter database open;
確認
SqlDeveloperで更新後の値になっていることを確認します。
最後に
もし、データベースがファイルの戻しの失敗により起動しなくなった場合には、データベース内のフォルダ[XE]を削除し、バックアップしたフォルダからコピーし直します。
データ損壊などを懸念する場合には、オラクルをShutdowunした状態で、このフォルダをバックアップし戻せば戻ります。
本記事による設定では、Archive-logファイルがどんどん蓄積され増えていきます。
あるべき運用は、データベースを停止している間に取り外し可能な媒体などへ、データベースフォルダ(XEフォルダ)とArchive-logファイルをバックアップし、Archive-logフォルダからは削除していきます。
コメント