Oracle DB起動時にエラーORA-00257が出て起動しない際の対処法


昨日、弊社テスト環境で発生したOracle DBのアーカイブログ関連のエラー対処法を投稿いたしましたが、
その後、今度は別の内容のエラーが出力され停止しました。その際の対処法について書き記します。

以下の文が出力されたエラー内容です。

ORA-00257:archiver error. Connect internal only, until freed.

このエラー内容が意味するところは、アーカイブログ出力先として指定されているフラッシュリカバリ領域の容量がいっぱいになっており、新たなアーカイブログが書き込めないというものです。

対処法としては、基本的には、フラッシュリカバリ領域の容量を増やすか不要なアーカイブログファイルを削除するということになりますが、今回調べたところ、「空きを確保するためにアーカイブログをエクスプローラー上で手動ですでに削除してある」とのことでした。

そこでOracle DBの仕様を確認したところ、「アーカイブログの削除にはOracle DBのコマンドを使わなければならず、エクスプローラー上でアーカイブログを削除しても、Oracle DBはそれを認識しない(=領域を開放しない)」という仕様でした。
そのため、あいているはずのスペースが開放されず、結果としていっぱいになってしまった、ということになります。

このような場合、削除されたアーカイブREDOログファイルがすでに存在しないことをOracle DBに認識させる必要があります。
以下がそのコマンドです。
=============
ステップ1:Windowsのコマンドプロンプト(cmd.exe)を開きます。
ステップ2:「RMAN TARGET /」と入力します。
(場合によっては「RMAN TARGET system/password」と打たなければならないかもしれません)
リカバリマネージャに接続します。IDのsystemとパスワードのpasswordの部分は設定に応じて適宜変更してください。
ステップ3:「CROSSCHECK ARCHIVELOG ALL;」と入力します
Oracleがアーカイブファイルの存在を確認しにいきます。
コマンドライン上に進行状況が記録され、すでに存在しないファイルに関してはその旨が表示されます。
ステップ4:「DELETE EXPIRED ARCHIVELOG ALL;」と入力します
Oracleはすでに存在しないアーカイブファイルの情報を削除します。
ステップ5:これで領域が開放されます。これにて作業は完了です。

=============
Oracle DBから行うアーカイブログファイルの削除手順は以下のとおりです。
ステップ1:Windowsのコマンドプロンプト(cmd.exe)を開きます。
ステップ2:「RMAN TARGET /」と入力します。
ステップ3:「DELETE ARCHIVELOG ALL COMPLETED BEFORE ‘sysdate-7’;」と入力します。
BEFORE句は条件式です。上記の例は直近1週間分を残しそれ以前のアーカイブログは削除するというコマンドです。
条件に合わないアーカイブログの削除が実行されます。
ステップ4:「LIST ARCHIVELOG ALL;」と入力します。
条件に沿ったアーカイブログが残っているかを確かめます。

関連したトピックス

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください