#chiroito ’s blog

Java を中心とした趣味の技術について

起動時にORA-03113発生:原因はdb_recovery_file_dest_size

概要

 Oracle Databaseを起動しようとしたらORA-03113が発生しました。原因はdb_recovery_file_destのサイズがいっぱいになってしまった為です。問題発生から対応までの記録になります。(自宅検証環境のため一部慎重ではない場合があります。まともなDBAはその部分を真似をしないで下さい。)

環境

問題発生

[oracle@storage ~]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 日 4月 24 21:17:19 2011
Copyright (c) 1982, 2009, Oracle. All rights reserved.
アイドル・インスタンスに接続しました。
SQL> startup
ORACLEインスタンスが起動しました。
Total System Global Area 835104768 bytes
Fixed Size 2217952 bytes
Variable Size 687867936 bytes
Database Buffers 138412032 bytes
Redo Buffers 6606848 bytes
データベースがマウントされました。
ORA-03113: 通信チャネルでend-of-fileが検出されました プロセスID:
4421
セッションID: 10、シリアル番号: 5

解析方法

 自宅の検証環境ですのでログを取得する準備をして上記のコマンドをもう一度実行してみます。これはログを絞るのが面倒臭いから行っているだけですので皆さんはきちんとログを見ましょう。
[oracle@storage alert]$ cd /u01/app/oracle/diag/rdbms/storage/storage/alert
[oracle@storage alert]$ tail -f log.xml &
すると気になる文字列が。
ORA-16038: ログ1、順序番号247をアーカイブできません。
ORA-19809: リカバリ・ファイルの制限を超えています
ORA-00312: オンライン・ログ1 スレッド1: '+ENVDG/storage/onlinelog/group_1.341.743015057'
ORA-00312: オンライン・ログ1 スレッド1: '+ENVDG/storage/onlinelog/group_1.342.743015057'

ORA-19815: 警告: db_recovery_file_dest_size(4070572032バイト)は100.00%バイトが使用され、残り0バイトが使用可能です。
だそうです…
一人でしか使わない検証環境のため適当にしてました。

対応方法

 とりあえず領域を拡大して対応します。領域の可能が可能の場合はとりあえずの対応はこれで良いと思いますがきちんとバックアップを取ってアーカイブを減らしましょう。
[oracle@storage alert]$ sqlplus / as sysdba
SQL*Plus: Release 11.2.0.1.0 Production on 日 4月 24 22:44:22 2011
Copyright (c) 1982, 2009, Oracle. All rights reserved.
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
に接続されました。
SQL>ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=10G SCOPE=BOTH SID='storage';
システムが変更されました。
SQL> alter database mount;
データベースが変更されました。
SQL> alter database open;
データベースが変更されました。