Home実験室 − No.0009


        No.0009(DBA)
        Oracleの起動と停止

■環境
  □OS: Windows XP Professional SP3
  □Oracle: Oracle Database 11g R2 (Standard)
  □OSログインユーザ: ORA_DBAグループ

■経緯
  Windows環境では、Oracleの起動/停止については、ほとんど意識することはないと思う。  要件が固まり、Oracleにもかなり慣れた頃になって、夜間バッチ処理の前後で停止/起動をしなければならない などの事情が発生するまでは考えなくてもやっていけると思う。
  しかも普段、手動で起動/停止する際にはWindowsのサービスから行うのが普通であり、 コマンドを使用した起動停止などは殆ど行わないのが現実。 それでも、Oracleを使用する大前提として、 「起動している」ということがあるため、その基本になじむ意味から、起動と停止(以下の実験では 停止/起動)をやってみようと思う。

  Oracleの起動状態には3段階ある。停止状態から一脚飛びに起動できるが、ここでは丁寧に1段ずつ起動してみる。
@停止状態 → nomount状態 (startup nomount)
Anomount状態 → mount状態 (alter databse mount)
Bmount状態 → データベースオープン (alter databse open)
※@の前に、一旦Oracleを停止する。停止しないと起動の実験ができない。(shutdown immediate)
※それぞれの段階で、Select文を発行し、結果がどのようになるかを見てみる。

■実験
  1. サービスが上がっていることが前提。 そのことを[コンピュータの管理]-[サービスとアプリケーション]-[サービス]から確認する。
  

  2. コマンドプロンプトを起動する

Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. c:\>



  3. SQL*plusを起動する

c:\>sqlplus /nolog SQL*Plus: Release 11.2.0.1.0 Production on 火 5月 3 17:27:33 2011 Copyright (c) 1982, 2010, Oracle. All rights reserved. SQL>



  4. Oracle起動のテストをするため、まずOracleを停止する。停止するにはSYSDBA権限が必要なため、SYSDBA権限で接続する

SQL> conn /as sysdba 接続されました。



  5. Oracleを停止する。immediateのスペルに注意

SQL> shutdown immediate データベースがクローズされました。 データベースがディスマウントされました。 ORACLEインスタンスがシャットダウンされました。



  6. これでOracleは停止。ここでコマンドプロンプトの[×]をクリックして終了する

  7. 再度、コマンドプロンプトを起動する

Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. c:\>



  8. いきなりOracleを起動してみる。権限不足でエラーになる

SQL> startup ORA-01031: insufficient privileges



  9. まだOracleは起動してない。試しに、ここでSQLを発行するとどうなるか....当然エラーに

SQL> select * from dual; SP2-0640: 接続されていません。



  10. SYSDBA権限で接続

SQL> conn /as sysdba アイドル・インスタンスに接続しました。



  11. 先ずnomountでOracleを起動してみる。インスタンスが起動する

SQL> startup nomount ORACLEインスタンスが起動しました。 Total System Global Area 795127808 bytes Fixed Size 1374864 bytes Variable Size 260048240 bytes Database Buffers 528482304 bytes Redo Buffers 5222400 bytes



  12. ここでSQLを発行してみる。データベースがOpenしていないので当然Selectできないはずだが....dual表のSelectでは何かが表示されている。これは一体.....

SQL> select * from dual; ADDR INDX INST_ID DU -------- ---------- ---------- -- 0621C624 0 1 X SQL> select table_name from dba_tables where rownum < 3; select table_name from dba_tables where rownum < 3 * 行1でエラーが発生しました。: ORA-01219: ?????????????????: ????/????????????????



  13. 現在はまだnomount状態。ここからmount状態へ移行してみる。ここではすでにインスタンスは起動しているので、startupコマンドではなく、Alter Databaseコマンドを使用。最後にセミコロンも必要になる。

SQL> alter database mount; データベースが変更されました。



  14. これでnomount状態からmount状態へ移行した。ここで再度SQLを発行してみる。nomount状態の時と同じ結果になった

SQL> select * from dual; ADDR INDX INST_ID DU -------- ---------- ---------- -- 0621C624 0 1 X SQL> select table_name from dba_tables where rownum < 3; select table_name from dba_tables where rownum < 3 * 行1でエラーが発生しました。: ORA-01219: ?????????????????: ????/????????????????



  15. 最後にデータベースをオープンする

SQL> alter database open; データベースが変更されました。



  16. SQLを発行。正常にSelectできた

SQL> select * from dual; D - X SQL> select table_name from dba_tables where rownum < 3; TABLE_NAME ------------------------------ ICOL$ CON$





■まとめ
  □ Oracle起動/停止にはいくつかの段階がある。 現在、図表庫にてまとめの図を作成中。


    【PR】    Oracle実験室監修  『Oracleアーキテクチャ鳥瞰図』 PDF  (Oracleのアーキテクチャを一目で俯瞰できるイラスト)  
Home実験室 − No.0009

© 2011-2011   Amateur Laboratory of ORACLE
inserted by FC2 system