はじめに
Oracle 11gのstartupコマンドで「ORA-03113 通信チャネルでend-of-fileが検出されました」のエラーが発生しました。
以下のページの指示に従って解決することができました。
アラートログをみてみる
アラートログは、以下のフォルダにありました。(alert_サービス名.log)
C:\product\11.2.0\dbhome_1\database\diag\rdbms\orcl\orcl\trace
そこには、ORA-19809というメッセージが出力されていました。
ORA-19809: リカバリ・ファイルの制限を超えています
ORA-19809 はフラッシュ・リカバリ領域(11.2以降で高速リカバリ領域と名称変更)が不足した場合に発生するエラーです。
フラッシュ・リカバリ領域とは、バックアップファイル、アーカイブログファイルなどのリカバリ関連のファイルの出力先となるディスク領域です。フラッシュ・リカバリ領域に出力されたファイルはOracle Databaseによって管理され、初期化パラメータDB_RECOVERY_FILE_DEST_SIZEに設定されたサイズを超えないように制御されます。
フラッシュリカバリ領域へファイルを出力しようとして、ファイルサイズの総計がDB_RECOVERY_FILE_DEST_SIZEを超える場合、ORA-19809 エラーが発生します。
ORA-19809: リカバリ・ファイルの制限を超えています | 技術情報 | 株式会社コーソル
対処方法
1.コマンドプロンプトを起動し、sqlplus /nologでログインします。
2.以下のコマンドでアイドルインスタンスに接続します。
conn system/manager as sysdba;
3.Oracleの起動、データベースのマウントを行います。
startup mount;
4.以下のコマンドでフラッシュリカバリエリアのサイズを10GBに増やします。
SIDはサービスIDです。
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=10G SCOPE=BOTH SID='orcl';
5.データベースをオープンします。
alter database open;
ノーアーカイブモードに変更する
データベースがオープンできたら、一度ノーアカイブモードに変更します。
不要なアーカイブログを削除する
ノーアカイブモードにした後、不要なアーカイブログを以下の手順を削除してディスク容量を確保します。