はじめに
ORA-01033: Oracleの初期化またはシャットダウン中です。
先週は、問題なく使えていたローカルPC上のOracle。週が明けて再び使おうと思ったらこのメッセージ。つまり、つながらなくなったのだ。
見なかったことにして、そっと再起動してみる。Windowsならよくあることだ。きっと直ると信じて。 しかし、状況は変わらなかった。
朝から頭が真っ白になった。
Oracleは、通常は開発者個人で設定しない。そのため、こういう場合はいつもなら、インフラチームとかに連絡を入れて、復旧を待てばよい。しかし、ローカルにOracleがあると、当然直す人は自分以外にいない。
しくしく・・。
それにしても変だ。何日もマシンは再起動を繰り返しているはずなのに、今日に限ってどうしてこんな事象が発生したのだろう。壊れたのかな。
・・・ということで、ようやく現実を見て、調査開始。
試行錯誤
まず、最初の試み
定石通り、ググってみる。
すぐに多数ヒットする。見通しはいい感じだ。(きっとよくあることなのだ)
最初に見つかったのは、以下URL
やることがシンプルにまとまっています。(説明が少ないけど、なんとなくわかる)
つまり、DBが壊れたと想定して、復旧を試みる感じだろう。
指示通りやってみる。
1 2 3 |
sqlplus /nolog connect sys/manager as sysdba shutdown normal |
ここで固まること数十分。
おかしい。
仕方なく、強制的にPC再起動。(ちょっと怖かったけど)
そして、再挑戦!
ただし、ちょっとコマンドを変更
最後のところを、以下に変更してみる。
shutdown immediate;
1 2 3 4 5 6 7 8 9 10 11 |
C:\Users\xxx>sqlplus sys/manager as sysdba SQL*Plus: Release 12.1.0.2.0 Production on 月 9月 3 15:39:17 2018 Copyright (c) 1982, 2014, Oracle. All rights reserved. Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production に接続されました。 SQL> shutdown immediate; データベースがクローズされました。 データベースがディスマウントされました。 ORACLEインスタンスがシャットダウンされました。 SQL> |
進展あり。
じゃあ、次だ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
SQL> startup mount ORACLEインスタンスが起動しました。 Total System Global Area 2550136832 bytes Fixed Size 3048872 bytes Variable Size 671091288 bytes Database Buffers 1862270976 bytes Redo Buffers 13725696 bytes データベースがマウントされました。 SQL> SQL> recover database ORA-00283: recovery session canceled due to errors ORA-00264: no recovery required SQL> |
このエコーバックを読む限り・・・DBは壊れてなかったらしい。
じゃあ、動くようになったかな?ということで、
1 2 3 4 5 |
SQL> alter database open; データベースが変更されました。 SQL> |
そして、そっと接続してみる・・
しかし、だめだった。復旧していない。。。
次の試み
再び検索。他の検索結果を探してみる。
ここもほぼ同じアプローチだったが、念のため試してみることにした。
抜粋すると、こんな感じ。
ORA-01033 ORACLE initialization or shutdown in progress
が出たら
1.取りあえずinternalなどでオラクルにSQLPlusあたりでログイン
2.select status from v$instance; で状態確認
3.shutdown immediate;
4.startup mount;
5.recover database; ->AUTO
6.alter database open;などと打ち込んでやれば、データファイルがオフライン状態になって拗ねているオラクルのご機嫌を取ることが出来る。
まぁ、ディスクフルとかにならないようにすれば、拗ねないんだけどね。通常出たら、ディスク空き容量を確認して1,2を実行。
空き容量が確保できたら、3,4,6を実行してみて、まだメディアリカバリがなんたらとエラーを出していたら、5を実行して再度3,4,6(6だけでも行けるとは思う)を実行。
軽傷ならこれで機嫌が直るはず。
結果は、一言でいうと、変化なし。残念。
それは、つまり、重症ということなのか?
そして、最後にたどり着いたのがココ
ここは、PDBでデフォルトのセットアップを行った場合、PDBが自動起動になっていないことに対応するアプローチ。
検索キーワードに、PDBを入れてヒットしたなかで、これまでと違ったアプローチだったので、試してみることにした。
でも、これまで何日も自動起動してくれてたんだけどな・・と思いながらも、試しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
C:\Users\xxx>sqlplus system/Oracle@orcl SQL*Plus: Release 12.1.0.2.0 Production on 月 9月 3 16:00:05 2018 Copyright (c) 1982, 2014, Oracle. All rights reserved. 最終正常ログイン時間: 月 9月 03 2018 15:58:17 +09:00 Oracle Database 12c Standard Edition Release 12.1.0.2.0 - 64bit Production に接続されました。 SQL> connect / as sysdba; 接続されました。 SQL> alter pluggable database pdborcl open; プラガブル・データベースが変更されました。 SQL> alter session set container = pdborcl; セッションが変更されました。 SQL> show con_name; CON_NAME ------------------------------ PDBORCL SQL> alter pluggable database pdborcl save state; プラガブル・データベースが変更されました。 SQL> |
結論としては、これで復活!
よかった。重症じゃなかった!
さいごに
何回もいうけれど、何日も自動起動していたのに、どうして今日に限って自動起動しなくなったのだろう。
まあ、直ったのでよしとしよう。
しかし、PDB、恐るべし。。
それにしても、このサイト記事作成した人、どうして、「ORA-01033: Oracleの初期化またはシャットダウン中です。」のメッセージを見て、すぐに「あ、PDB自動起動しないんだ」、って気づけたのだろう。この人すごすぎ。
それとも、自分が勉強不足なだけか?