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


先日、弊社においてDBMoto動作検証用に導入されていた、Windows上のOracle DB 11gR2に接続できなくなる事態が発生しました。
そこで、当該Orace DBにSQLPlusで接続しようとしたところ、次のようなエラーが出て接続できませんでした。

ERROR:
ORA-01034: ORACLE not available
ORA-27101: shared memory realm does not exist
Linux Error: 2: No such file or directory

より詳しい調査のため、Windows付属のイベントビューワを使います。
「Windowsログ」以下にある「アプリケーション」を開き、「現在のログをフィルター」から以下の画像のように条件を入力すると、Oracleのエラーのみが表示されるようになります。
eventviewer03

eventviewer_consolidated

絞り込んだOracleからのエラーログを調べますと、以下のようなエラーが出力されていました。

Archive process Error:ORA-16038: log 2 sequence# 149 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 2 thread 1:’C:\APP\ADMINISTRATOR\ORADATA\REDO02.LOG’

これらのエラーを調べたところ、REDOログをアーカイブする際に、何らかの原因でREDOログが
アーカイブREDOログに書き込めず、その結果発生するものでした。

この場合、以下のようにアーカイブログのモードを一旦リセットしなければなりません。

ステップ1:Windowsのコマンドプロンプト(cmd.exe)を開きます。

ステップ2:sqlplus system/password as sysdbaと入力します。SIDを指定する必要はありません。
sysdba権限で接続するコマンドです。IDのsystemとパスワードのpasswordの部分は設定に合わせて適宜変更してください。
SIDが不要な理由はその対象となるインスタンス自体が立ち上がっていない=認証できない、ためです。

ステップ3:shutdown immediateと入力します。
念のためデータベースをシャットダウンします。立ち上がっていない場合、エラーを出しますが問題ありません。
shutdown abortは最終手段用であり、データベースの整合性が失われる危険がありますので使わないでください。

ステップ4:startup mountと入力します。
今回、startup openと入力すると、異常のあるREDOログおよびアーカイブログが読み込まれ、マウントした直後に「ORA-03113:通信チャネルでend-of-fileが検出されました」という
エラーが発生し、それ以降exitするまでうまくいかなくなるため、mount状態でいったんとめます。

ステップ5:alter database noarchivelogと入力します。
アーカイブモードをノーアーカイブモードに変更します。
mount状態においてアーカイブモードに関する変更をすることができます。open状態ですと変更ができません。

ステップ6:alter database openと入力します。
データベースをオープンします。無事データベースがオープンします。

ステップ7:shutdown immediateと入力します。
データベースをシャットダウンします。
shutdown abortは最終手段用であり、データベースの整合性が失われる危険がありますので使わないでください。

ステップ8:startup mountと入力します。
再びデータベースをマウント状態におきます。

ステップ9:alter database archivelogと入力します。
設定をアーカイブモードに戻します。

ステップ10:alter database openと入力します。
データベースをオープンします。

ステップ11:exitで終了します。

ステップ12:sqlplusと入力します。通常の認証画面が出たらユーザー名とパスワードを入力してください。
接続ができるようになっているかと思います。

関連したトピックス

コメントを残す

メールアドレスが公開されることはありません。

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