今朝スケジュール再起動したオンプレミスのOracleサービスが起動に失敗していました
対応方法についてメモ
現象
- サービスの再起動を行っても解決しない
- エラーログを確認すると以下のエラー
ORA-214 signalled during: alter database mount exclusive...
環境
- Windows Server 2008R2
- Oracle 11.2.0.1
対応
①制御ファイルの置換え
ORA-214について
- ORA-214のエラーは、複数の制御ファイル間での不整合が原因のエラーのようです。
- 制御ファイルとはoracleの物理構成を保存したファイルで、複数のドライブなどに冗長化されることが推奨されてますが、この時の複数ファイル間で不整合が発生した場合にORA-214が発生するようです
- この現象は以下のような状況で発生するようです
- ファイルのコピー操作時のミス
- バックアップから復旧した際にドライブごとのバックアップ時刻が違った
- ハードウェアの障害で制御ファイルが破損した
- DBが異常停止した
- ディスクが破損した
- ファイルのコピー操作時のミス
置換え方法
- SQLコマンドでCTLファイルのパスを確認
- 私は sqlplus で実行しました
- 下記の出力のファイルが制御ファイルになるので、
>> sqlplus / as sysdba
SQL> SELECT VALUE FROM V$PARAMETER WHERE NAME = 'control_files';
VALUE
--------------------------------------------------------------------------------
F:\ORADATA\<サービス名>\CONTROL01.CTL, C:\ORACLE\FLASH_RECOVERY_AREA\<サービス名>\CONTROL02.CTL
- ファイルを置き換える
- 前の手順で確認したCTLファイルのうち、古い時刻のものを念のためバックアップしておく
- 新しい時刻のCTLファイルを古い時刻のディレクトリにコピーし、古い時刻の元々のファイル名にリネームする
>> rename F:\ORADATA\<サービス名>\CONTROL01.CTL F:\ORADATA\<サービス名>\CONTROL01.CTL.back
>> copy C:\ORACLE\FLASH_RECOVERY_AREA\<サービス名>\CONTROL02.CTL F:\ORADATA\<サービス名>\CONTROL01.CTL
- サービスを再起動し、動作すればOK
今回の私の場合はORA-01033:Oracleの初期化またはシャットダウン中です。
のエラーが発生し、解決しませんでした.
② リセットログからの Database オープン
データベースのステータスを確認すると、マウントまではいっているようですが、オープンできていないようです
おそらく制御ファイルがまだおかしいようですので、まずはリセットログからの復帰を実施します
>> sqlplus / as sysdba
SQL>shutdown immediate
SQL>startup mount
SQL>alter database open resetlogs;
今回はORA-01033:Oracleの初期化またはシャットダウン中です。
のエラーが発生し、解決しませんでした.
③リカバリの実行
リセットログからも復帰が出来ないようです。
仕方ないので、リカバリを実施して起動するようにします。
>> sqlplus / as sysdba
SQL>shutdown immediate
SQL>startup mount
SQL>recover database using backup controlfile;
ORA-00279: 変更: 363383(08/09/02 10:46:35で生成)にはスレッド番号: 1が必要です。
ORA-00289: 検討すべきログ・ファイル: D:¥ORA817¥ORADATA¥ORA817¥archive¥arch1_335.dbf
ORA-00280: 変更: 363383(スレッド: 1)は順序番号: 335に存在します。
ログを指定してください: {<RET>=suggested | filename | AUTO | CANCEL}
##### ここでREDOログのファイルパスを指定する #####
SQL>alter database open resetlogs;
REDOログのファイルパスは次のSQLコマンドで確認します
SQL> SELECT MEMBER FROM V$LOGFILE;
MEMBER
---------------------------------------
F:\ORADATA\<サービス名>\REDO03.LOG
F:\ORADATA\<サービス名>\REDO02.LOG
F:\ORADATA\<サービス名>\REDO01.LOG
これで復帰しました。