読者です 読者をやめる 読者になる 読者になる

やっとできたshutdown / startup!!!

shutdownについて、大きく理解が進展。

まず、WindowsマシンにおけるOracleインスタンスについて。

こちらのサイトが非常に参考になった。
http://www.shift-the-oracle.com/config/startup-oracle.html

Windowsマシンでは、Oracle.exeはサービスのプロセスとして存在する。そのプロセスの中で、インスタンスは1つのスレッドとして存在するらしい。つまり、Oracleサービスが立ち上がっている状態で、インスタンスをスレッド起動したり停止したりする。なので、サービスが起動していなければ、インスタンスは起動できないし停止もできない。

先日、shutdownを実行したのに、なぜかサービスは起動したままだった、というのは、このことだったのだ。




そしてもうひとつ。
sqlplusからshutdownを実行した時の動作について。

コマンドプロンプトから

shutdown normal

とすると、画面が固まり、受け付けなくなってしまった。
同時に別コマンドプロンプトを開いてsqlplus接続しようとすると、リスナーが新規接続を拒否しているエラーが出て接続すらできない。

なんででしょうと職場のDBAに聞いたら、一発で解決した。

shutdown には、normal、transactional、immediate、abortの4種類のオプションがある。詳細は上記のサイトに譲るが、ようは、normalだと、生きているセッションがある限り、shutdownシーケンスが始まってくれないのだ。

夜間バッチなどで普通に使用するのは immediate だという。
ためしにやってみた。

 SQL> conn sys/password@orcl as sysdba
 接続されました。
 SQL> shutdown immediate
 データベースがクローズされました。
 データベースがディスマウントされました。
 ORACLEインスタンスがシャットダウンされました。
 SQL>

ちゃんと制御が戻ってきました!!

では、今度はstartupをやってみよう。

 SQL> startup
 ORA-12528: TNS:リスナー: 該当するインスタンスはすべて、新規接続をブロックしています
 SQL>

うーむ。また壁にぶつかった。さっきのサイトを見てみる。

startupは、OS認証でと書いてある。ああなるほど。つまりインスタンスはアイドル状態にあるから、インスタンス認証はできない、つまりOracleのsysでは接続できないってことだ。当たり前っちゃ当たり前だね。

というわけで、OS認証つまり、Win2000Serverの管理者権限でログインをしてみる。

 D:\>sqlplus /nolog
 SQL*Plus: Release 10.1.0.2.0 - Production on 日 9月 11 10:47:22 2011
 Copyright (c) 1982, 2004, Oracle. All rights reserved.
 SQL> conn Administrator/password as sysdba
 ERROR:ORA-12560: TNS: プロトコル・アダプタ・エラーが発生しました
 SQL>

ネットワーク系のエラーが出た。もしかして、別マシンからログインしようとしてるからかな。試しにサーバにログインしてやってみる。


 C:\>sqlplus /nolog
 SQL*Plus: Release 10.1.0.2.0 - Production on 土 9月 10 18:45:45 2011
 Copyright (c) 1982, 2004, Oracle. All rights reserved.
 SQL> conn Administrator/password as sysdba
 Connected.
 SQL>

やったね!うまくいきました。これでstartupしてみよう。

 SQL> startup
 ORACLE instance started.
 Total System Global Area 171966464 bytes
 Fixed Size 787988 bytes
 Variable Size 145750508 bytes
 Database Buffers 25165824 bytes
 Redo Buffers 262144 bytes
 Database mounted.
 Database opened.
 SQL>

やった〜!!!!!
やっとできました。

なるほどね。Windows環境においては、Oracleのサービスは起動したままで、OS管理者権限でsqlplus接続した状態で、shutdown または startup を実行する、ってことですね。

次は、startupの各ステージである、unmount, mount, open それぞれでなにがどう進んでなにが出来てなにが出来ないのかを試してみようと思っています。