「ORA-00257:アーカイブ・エラーです。解除されるまで内部接続のみにしてください。」によるデータベース障害対応方法
「ORA-00257:アーカイブ・エラーです。解除されるまで内部接続のみにしてください。」というエラーが発生した場合にリカバリ領域のサイズを拡大し復旧するまでの手順をまとめます。
確認環境:Oracle11g
※ 2019/09/06 rman コマンドの引数修正
状況
アプリケーションの実行時に「ORA-00257」というエラーメッセージが出力され異常終了となる。 リカバリー領域は90%近くまで使用されておりEnterprise Managerに警告が表示されていた。 通常は、夜間バッチ処理でアーカイブログ領域の削除(バックアップ)は毎日夜間に実施していたが、バックアップに必要な容量が確保できなかったためエラーとなったと考えられる。 ※ORA-00257:アーカイブ・エラーです。解除されるまで内部接続のみにしてください。 リカバリー領域の容量は初期化パラメータで定義してあり、それを超える量を作成しようとすると「これ以上処理はできませんよ」とエラーを返してきます。
対応概要
- アーカイブログの容量を広げて、DataBaseに接続して動くようにする。
- アーカイブログの領域にある古いファイルを削除(移動)する。
詳細対応
- sqlplus にてリカバリ領域の容量を確認する。(例:25G設定であることを確認する。)
c:\> sqlplus sys/[パスワード] as sysdba
SQL> show parameters DB_RECOVERY_SIZE;
NAME TYPE VALUE
----------------------------------------------------------------------
db_recovery_file_dest_size big integer 25G
- 物理的な保存領域の空きを確認する。「E:\DATABASE\SID\fast_recovery_area」(例:25G近く消費していることを確認する。)
- クライアント稼働を優先させるため、領域サイズを拡張する。(どのくらい増やすかはバックアップセットのサイズなどを考慮する。)
SQL> alter system set DB_RECOVERY_FILE_DEST_SIZE='35G';
- 不要なアーカイブログを削除する。
c:\> rman target sys/[パスワード]
RMAN> delete archivelog until time 'sysdate-7;
- Enterprise Managerにて警告が出ていないことを確認する。