トップ > DBA入門 > 5章
5章 DBの起動停止
本章ではデータベースインスタンスの起動停止方法について学んでいきます。

データベースの起動の流れ


データベースの作成が完了し、ようやく管理作業の内容となります。
データベースの起動は3つのステップを踏んで起動します。

DB起動の流れ データベースの起動

停止


データベースが停止している状態。管理者ユーザのみ接続が可能。

NOMOUNT


初期化パラメータファイルを読み込み
インスタンスの起動が完了した状態。

MOUNT


制御ファイルの読み込みが完了した状態。

OPEN


データファイル、REDOログファイルの読み込みが完了した状態。
OPEN状態であれば、一般ユーザが接続が可能。

データベースの起動は上記の段階を経て起動します。
この動作はデータベース障害時に重要となりますので
押さえておくとよいと思います。

初期化パラメータファイル


初期化パラメータファイルはデータベースの設定情報が記載されたファイルです。
データベースがNOUMOUNTになるときに読み込まれ、
その設定値に従って、インスタンスを起動します。

初期化パラメータファイルはバイナリファイルと、
テキストファイルの2種類があります。

SPFILE(サーバパラメータファイル)
PFILE(パラメータファイル)

SPFILE


SPFILEはバイナリ形式のパラメータファイルです。
パラメータの変更はALTER SYSTEM文で変更します。
現在のバージョンではこちらのファイル形式がデフォルトです。

SPFILE


SPFILEはバイナリ形式のパラメータファイルです。
パラメータの変更はALTER SYSTEM文で変更します。

パラメータファイルは$ORACLE_HOME/dbs配下にあります。

上記のようなパラメータがあり、デフォルト値も設定されているので、
すべてのパラメータを設定する必要はありません。
必要な時にパラメータを調べて、設定する必要があるかどうか判断してください。

データベースの起動、停止コマンド


ではデータベースを起動してみましょう。
データベースの起動はstartupコマンドです。

[構文] DBの起動
SQL> startup


  $ sqlplus / as sysdba

  SQL*Plus: Release 12.1.0.2.0 Production on XXX XX XX:XX:XX 2016

  Copyright (c) 1982, 2014, Oracle.  All rights reserved.

  Connected to an idle instance.

  SQL> startup
  ORACLE instance started.

  Total System Global Area  838860800 bytes
  Fixed Size                  2929936 bytes
  Variable Size             562039536 bytes
  Database Buffers          268435456 bytes
  Redo Buffers                5455872 bytes
  Database mounted.
  Database opened.

  SQL> select status from v$instance;

 STATUS
 ------------
 OPEN
 

最後に「v$instance」という動的パフォーマンスビューというビューを
SELECTしています。
このビューを使用して、データベースのステータスを確認できます。

次にデータベースの停止方法です。

[構文] DBの停止
SQL> shutdown [ normal | transactional | immediate | abort ]
※デフォルトはimmediate

停止時には様々なオプションがあります。
こちらはデータベース管理者として重要な箇所なので
すべてのオプションの意味は押さえておきましょう。

NORMAL 接続中のユーザのセッション終了まで待機。新規セッション不可。
TRANSACTIONAL 接続中ユーザのトランザクション終了まで待機。新規セッション不可。
IMMEDIATE 接続中のユーザのセッションをロールバックし強制終了。
新規セッション不可。
ABORT DBの強制停止。
次回インスタンスリカバリが必要。

ABORT以外のオプションは停止時にチェックポイントが発行されます。
チェックポイントが発行されるとデータファイルに今までの変更を書き込みます。
つまりすべての変更がファイルに書き込まれてからデータベースは停止します。

しかしABORTはチェックポイントを発行せずにデータベースを停止します。
その為、直前の変更情報が失われた状態からDBが起動するため、
データを復旧するためにインスタンスリカバリが行われます。
インスタンスリカバリは自動的に行われる為、手動でのリカバリは不要ですが、
リカバリに時間がかかることがあるので、極力避けたいオプションです。

  $ sqlplus / as sysdba

  SQL*Plus: Release 12.1.0.2.0 Production on XXX XX XX:XX:XX 2016

  Copyright (c) 1982, 2014, Oracle.  All rights reserved.

  Connected to an idle instance.

  SQL> shu immediate
  Database closed.
  Database dismounted.
  ORACLE instance shut down.

  SQL> select status from v$instance;
  
  select status from v$instance
  *
  ERROR at line 1:
  ORA-01034: ORACLE not available
  Process ID: 0
  Session ID: 0 Serial number: 0
  

shutdownコマンドは省略可能なので、「shu」でも実行ができます。
また停止後、「v$instance」をSELECTしましたが、エラーとなりました。
動的パフォーマンスビューはNOMOUNT以上のステータスでないと、
SELECTできません。

本章は以上となります。
データベースの起動ステップを覚えることで、データベース障害時に
どのファイルが破損しているかが特定できます。
ロジックを理解することで、早急な復旧が行える力が身に付きます。