コマンドを使った起動・停止操作

 Windowsではサービスを使ってOracleServerなどの起動/停止が行える。しかし、サービスによる起動/停止はいろいろトラブルが多く、はっきりいって使いにくい。しかも、Linuxなど、他のOSを使う場合には全く役に立たない知識である。
 ここでは、コマンドを使った各種サービスの起動/停止方法を紹介する。

1.前準備

 OracleServerを起動するには、OracleService<SID名>サービスを開始しなければならないが、このサービスを開始すると、オラクルデータベースが自動的に開始されてしまう。いろいろと不便なので、勝手にデータベースが開始しないよう、設定を変える。
 なお、データベースが自動で起動しても構わないのであれば、この設定は不要である。

 データベースの自動起動を設定しているのは、レジストリである。レジストリエディタ(regedit)を起動し、マイコンピュータ→HKEY_LOCAL_MACHINE→SOFTWARE→ORACLE→KEY_OraDb10g_home1と辿り、ORA_<SID名>_AUTOSTARTキーを捜す。

 このキーをダブルクリックし、値のデータをFALSEに変更して、OKボタンをクリックする。

 変更したら、レジストリエディタを閉じる。これにより、OracleService<ORCL>サービスを開始しても、オラクルデータベースは停止したままになる。

2.オラクルデータベースの起動・停止(基礎編)

 Windowsの場合、オラクルデータベースを起動するには、「OracleService<SID名>」サービスが開始していなければならない。まずはこのサービスを開始しておく。

 自動起動の設定を無効にしてあるため、直ぐにサービスが開始される。これ以降、すべての操作はコマンドで行う。

2-1 オラクルデータベースの起動

 オラクルデータベースを起動するまでの手順は次のとおりである。

  1. SQL*Plusを起動し、データベースに接続(ログイン)する
  2. データベースを起動するコマンドを実行する

 まず、コマンドプロンプトで「sqlplus /nolog」と入力する。(/nologオプションを付けるのは、ログを保存しない状態でSQL*Plusを利用したいため)
 プロンプトが「SQL>」に変化したら、SQL*Plusの起動に成功である。

 まずはデータベースに接続(ログイン)する。管理者権限でログインしなければデータベースの起動/停止操作は行えないため、「connect / as sysdba」と入力して接続する。

 アイドル・インスタンスとは、データベースが起動していない時に接続するためのサービスと考えればよい。接続時にこのメッセージが出たら、データベースが起動していない(停止している)ということになる。(これで、データベースが稼働しているか、落ちているかが分かる)
 接続できたら、データベースを開始する。「startup」と入力する。

 インスタンスが起動し、データベースのマウント、データベースのオープンと流れて、プロンプトが表示される。「データベースがオープンされました。」と表示されれば、データベースの起動は成功である。
 データベースの起動に成功したら、接続を切り離し(ログオフ)して、SQL*Plusを終了すればよい。まずはログオフするため、「disconnect」と入力する。

 「〜切断されました。」と出れば、切断(ログオフ)が成功である。SQL*Plusを終了するため、「exit」と入力する。

 プロンプトが元に戻った。これで、SQL*Plusが終了したことが分かる。

2-2 オラクルデータベースの停止

 オラクルデータベースを起動するまでの手順は次のとおりである。

  1. SQL*Plusを起動し、データベースに接続(ログイン)する
  2. データベースを停止するコマンドを実行する

 起動時と同様に、管理者権限でデータベースに接続する。既にデータベースが起動しているので、アイドルインスタンス・・・というメッセージは表示されないことが分かる。

 データベースを停止するコマンドとして、「shutdown immediate」と入力する。(immediateオプションを付けなくてもデータベースの停止はできるが、接続中のユーザがいたり、処理中のトランザクションがあったら、それが終わるまで待機してしまうので、immediateオプションを付けて、ほぼ強制的に終了させる)

 データベースのクローズ、データベースのディスマウント、インスタンスのシャットダウンと流れて、プロンプトが表示される。データベースが停止したので、接続を切断(ログオフ)し、SQL*Plusを終了する。

2-3 補足

 サービスで起動・停止ができるのに、何故わざわざコマンドで起動・停止を行うのか。それはズバリ、「メッセージを確認できる」からである。オラクルデータベースの起動は、先にも説明したとおり、以下の順番で行われるが、どこかで止まってしまうことがある。

  1. オラクルインスタンスの起動
  2. データベースのマウント
  3. データベースのオープン

 何らかの原因で起動途中に止まってしまった場合、コマンドで起動していたら、メッセージが確認できるので、何が原因で起動しなかったのかが分かる。しかし、サービスによって起動してしまうと、一切のメッセージは表示されず、タイムアウトになるだけである。これでは、ただ起動が遅いだけなのか、それとも起動に失敗しているのか分らない。

 OracleMasterを目指すなら(いや、目指さなくても)、コマンドで起動・停止くらいはできるようになっておこう。

3.iSQL*Plusの起動・停止

 iSQL*Plusは、コマンドにより起動・停止が行える。

3-1 起動

 コマンドプロンプトより、「isqlplusctl start」と入力する。

 最終行に「iSQL*Plus started.」と表示されれば、iSQL*Plusの起動に成功した。ブラウザを開き、iSQL*Plusが使えるかどうかを確認する。

http://localhost:<PORT番号>/isqlplus

 開始直後は使えないことがあるので、ログイン画面が出なければ、暫く時間をおいて、画面を更新する。

3-2 停止

 コマンドプロンプトより、「isqlplusctl stop」と入力する。

 最終行に「iSQL*Plus stopped.」と表示されれば、iSQL*Plusの停止に成功した。

3-3 補足

 OracleServerが稼働しているマシンで、iSQL*Plusを使うことはまず無いだろう。何故なら、コマンドプロンプトで動くSQL*Plusを使えば良いし、日本語入力をスムーズに行いたい場合でも、GUI版のSQL*Plusを使えば済むからだ。

 では、iSQL*Plusを起動するのはどういうときか。それは、クライアントPCからOracleServerに接続し、SQLを発行したい場合だ。それを行いたい場合のみ、iSQL*Plusを起動しよう。

3.Enterprise Manager 10gの起動・停止

 Enterprise Managerは、コマンドにより起動・停止が行える。

3-1 起動

 コマンドプロンプトより、「emctl start dbconsole」と入力する。

 しかし、それだけではこのようにエラーが表示される。これは、環境変数 ORACLE_SID が宣言されていないというメッセージである。Enterprise Managerを利用するには、管理対象となるデータベースを、ORACLE_SIDにセットしておかなければならない。
 環境変数をセットするには、「set ORACLE_SID=orcl」と入力する。

 その後、Enterprise Managerを起動すればよい。

 最終行に「OracleDBConsole<SID名> サービスは正常に開始されました。」と表示されれば、Enterprise Managerの起動に成功した。Enterprise Managerのアドレスも、ここで確認できる
 しかし、他ページでも説明したとおり、Enterprise Managerはリスナーが起動していないと利用できない。リスナーを起動するには、「lsnrctl start」と入力する。

 これにより、リスナーが開始された。リスナーとは、クライアントアプリケーションとオラクルデータベースを繋ぐサービスのようなものである。
 しかし、リスナーが開始しただけではEnterprise Managerは利用できない。Enterprise Managerが利用できるようになるには、リスナーに、現在稼働しているオラクルデータベース(ORCL)が登録されなければならない
 リスナーを起動して暫くすると、自動的に登録されるので、登録されたかどうかを「statusオプション」で確認する。

 リスナーの開始直後と違い、サービス "orcl" が登録されていることが分かる。この状態になって初めて、Enterprise Managerが利用できる。
 ブラウザを開き、Enterprise Managerが使えるかどうかを確認する。

http://localhost:<PORT番号>/em

 開始直後は使えないことがあるので、ログイン画面が出なければ、暫く時間をおいて、画面を更新する。

3-2 停止

 コマンドプロンプトより、「emctl stop dbconsole」と入力する。

 最終行に「OracleDBConsole<SID名> サービスは正常に停止されました。」と表示されれば、Enterprise Managerの停止に成功した。
 他に接続するクライアントがなければ、リスナーも停止しておこう。リスナーの停止は、「lsnrctl stop」と入力する。

3-3 補足

 通常、オラクルデータベースは他の様々なアプリケーションと接続してデータのやり取りを行っている。ということは、オラクルサーバは最低限、以下の2つが動いていればよいことになる。

  1. オラクルデータベース
  2. リスナー

 後は用途に応じて、iSQL*PlusやEnterprise Managerを起動しておけばよい。
 ただし、OracleMasterの授業では常に立ち上がっている必要はなく、かつ、アプリケーションとの連携を試すわけでもないので、通常はすべてを停止しておき、必要に応じて、必要なものだけを起動すればよい。


[ TOP ]