5.2 インスタンスの起動・停止

■インスタンスの起動

ユーザがデータベースにアクセスするためには、インスタンスが起動しており、データベースがオープンしていおく必要がある。

インスタンスは下記のいずれかの方法で起動することができます。

・SQL *PlusからSTARTUPコマンドを実行する

・Windowsサービスプログラムを使用する(OS がWindowsの場合)

SQL *Plusによるコマンドライン操作の代わりに、次のGUIツールを使用することもできる。

・SQL Developerを使用する

・Enterprise Manager Cloud Controlを使用する

■データベースがオープンするまでの流れ

インスタンスを起動してから、データベースがオープンするまでには、次の4つのステップを踏む。各ステップで読み込まれるファイルに注意すること。

○1.インスタンスの起動(NOMOUNT状態)

インスタンスが起動していない(SHUTDOWN)状態でSTARTUPコマンドを実行すると、そのインスタンス用の初期化パラメータファイルが読み込まれる。

初期化パラメータファイルには、インスタンスを構成するためのパラメータが記述されており、パラメータの設定にしたがって、SGAが割り当てられ、バックグラウンドプロセスが起動する。この状態をNOMOUNT状態という。

○2.データベースのマウント(MOUNT状態)

初期化パラメータファイルに記述してあるCONTROL_FILES初期化パラメータにしたがって制御ファイルがオープンされる。

制御ファイルがオープンされることにより、インスタンスとデータベースが関連付けられる。この状態をMOUNT状態という。制御ファイルをオープンすると、データベース内の全てのデータファイルとREDOログファイルの名前とパスがわかるが、この状態ではまだ、データファイルもREDOログファイルもオープンしてはいない。

○3.データベースのオープン(OPEN状態)

すべてのデータファイルとREDOログファイルがオープンされる。この状態をOPEN状態という。OPEN状態になると一般のユーザが接続できる。

■インスタンスの起動・停止を実行できる権限

インスタンスを起動・停止するには、次の特別な管理権限を付与されているユーザでデータベースへ接続する必要がある。

▼インスタンスの起動・停止を実行できる権限

権限名説明
SYSDBAデータベースを完全に制御できる
SYSOPERインスタンスの起動・停止は実行できるが、ユーザのオブジェクトへのアクセス権は付与されない。

SYSDBAまたは、SYSOPER権限を指定して、データベースへ接続するには、次のように指定する。

▼SYSDBAまたはSYSOPER権限を指定して、データベースへ接続する

connect ユーザ名/パスワード AS {SYSOPER | SYSDBA}

データベース作成時には、初期管理者として、SYSとSYSTEMが登録されている。

そのうち、SYSユーザにはデフォルトでSYSDBA権限が付与されている。

SYSユーザで、SYSDBA権限を指定して、接続する際のコマンドは下記の通りとなる。

▼SYSユーザでSYSDBA権限を指定して接続する

connect sys/パスワード AS SYSDBA

SYSユーザは、Oracleデータベースの管理情報であるデータディクショナリの所有者であるため、データディクショナリの表に対する権限は、無制限となるが、データディクショナリの表を手動で変更しないように注意が必要である。

日常の管理作業でこのアカウントを使用することは、セキュリティ面で好ましくない。SYSユーザを使用するのは、別の管理者ユーザを作成する場合などに限定した方が望ましい。

■SQL *Plusを使用したインスタンスの起動

SQL *Plusを使用してインスタンスを起動するには、下記手順を踏む。

[1]SQL *Plusを起動する

[2]インスタンスを起動・停止する権限を持ったユーザでインスタンスに接続する。デフォルトで使用できるユーザはSYSのみ。

[3]STARTUPコマンドを実行して、インスタンスを起動して、データベースをオープンにする。

■インスタンス停止

インスタンスを停止するには、起動時と同時に、下記の方法がある。

・SQL *PlusからSHUTDOWNコマンドを実行する

・Windowsサービスプログラムを使用する。OSがWindowsの場合

・SQL Devloperを使用する

・Enterprise Manager Cloud Controlを使用する

■インスタンスが停止するまでの流れ

オープン状態のデータベースが一貫性のある状態で停止する時(正常終了する)は、次のように処理が進む。

○1.データベースのクローズ(OPEN状態ー>CLOSED状態)

チェックポイントが発生して、SGA内のデータがデータファイルおよびオンラインREDOログファイルに書き込まれ、データファイルとオンラインREDOログファイルがクローズされる。制御ファイルは、オープンしたままである。

○2.データベースのアンマウント(CLOSED状態ー>DISMOUNT状態)

データベースの制御ファイルがクローズされ、データベースがアンマウントされてインスタンスから切り離される。インスタンスは起動したままである。

○3.インスタンスの停止(DISMOUNT状態=>SHUTDOWN状態)

バックグラウンドプロセスが終了し、SGAが使用されている共有メモリの割当が解除され、インスタンスが停止する。

インスタンスに障害が発生した場合やSHUTDOWN ABORTでインスタンスをて緊急停止した場合は、クローズとアンマウントが行われずにインスタンスが即時停止します(異常終了)

■停止モード

インスタンスを停止する際は、停止動作を決定するモードを指定できる。停止時のデフォルトモードはNORMALです。NORMAL、TRANSACTIONAL、IMMEDIATEの場合は、チェックポイントが発生し、データベースを正常にクローズする処理が行われます。

ABORTは異常終了(緊急停止)のモードです。チェックポイントが実行されないため、データファイルの整合性が保たれません。したがって、ABORTで停止した場合は、インスタンスを再起動してデータベースを再オープンする前にインスタンス・リカバリを実行する必要がある。

データベースの動作NORMALTRANSACTIONALIMMEDIATEABORT
新しい接続を許可するXXXX
現行セッションが終了するまで待機するXXX
現行トランザクションが終了するまで待機するXX
チェックポイントを実行し、オープン状態のファイルを正常にクローズするX

■SQL *Plusを使用したインスタンスの停止

SQL *Plusを使用してインスタンスを停止するには、以下の手順を実行する。

[1]SQL *Plusを起動する。

[2]インスタンスの起動・停止を実行する権限を持ったユーザで接続する。

デフォルトで使用できるユーザはSYSのみです。

[3]SHUTDOWNコマンドを実行する。ここではIMMEDIATEオプションを使用して、実行中のトランザクションを即時にロールバックし、セッションの切断も待機しない即時停止を行う。

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

インスタンスが起動する際、初期化パラメータファイルが読み込まれる。初期化パラメータファイルには、初期化パラメータと設定値が格納されている。

初期化パラメータとは、データベース・バッファ・キャッシュや共有プールなどのSGAのメモリ領域のサイズや、オプションのバックグラウンドプロセスの追加起動といったインスタンスの基本動作に影響を与えるパラメータです。

初期化パラメータには非常に沢山の種類があるが、大きくは約30種類の基本パラメータとそれ以外の拡張パラメータに分類できる。通常は基本パラメータを使用する。

パラメータには、デフォルト値があるので、全てのパラメータの値を設定する必要はありません。必要な初期化パラメータだけを設定します。

■初期化パラメータの種類

初期化パラメータには、動的パラメータ、静的パラメータの2種類がある。

▼初期化パラメータの種類

種類説明
動的パラメータインスタンスの稼働中に設定値を変更できる
静的パラメータ設定値の変更を反映するには、インスタンスの再起動が必要

■初期化パラメータファイルの種類

初期化パラメータを格納するファイルが、初期化パラメータです。初期化パラメータファイルには、サーバパラメータファイル(SPFILE)とテキスト初期化パラメータファイル(PFILE)の2種類がある。インスタンスの起動時にどちらかを使用する。デフォルトでは、サーバパラメータファイルを使用する。

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

サーバパラメータファイルは、インスタンスのみが読取り、と書き込みが可能なバイナリファイルはOracle Database 9iで導入された。

サーバパラメータファイルを使用した場合、ALTER SYSTEM文を使用して初期化パラメータを変更します。変更内容は、インスタンスの再起動後も接続します。また、Oracleデータベースによる自己チューニングの基礎にもなるため、テキスト初期化パラメータファイルよりもサーバパラメータファイルの使用が優先されます。

○テキスト初期化パラメータファイル(PFILE)

テキスト初期化パラメータファイルは、テキストファイルです。インスタンスによって、読取りは行なえますが、書込みは行なえません。

初期化パラメータを変更し、その値をインスタンスに反映する場合は、テキストエディタでこのテキストファイルを編集し、インスタンスを再起動する必要がある。

このファイルは、データベース作成時や、障害が起きたときなどの特殊な場合に使用する。

テキスト初期化パラメータファイルを使用して、インスタンスを起動するには、以下のようにPFILE句を使用して、明示的にファイルを指定します。

STARTUP PFILE = /u01/oracle/dbs/init.ora

■EM Expressによる初期化パラメータの確認

■SQL文による初期化パラメータの設定

SQL *Plusを使用して、初期化パラメータを確認したり、値を変更することができる。

[1]SQL * Plusを起動して、SUSDBA権限を持つユーザとして、データベースに接続する。

[2]SHOW PARAMETERS パラメータ名を実行すると、現行インスタンスのパラメータ値を確認できます。パラメータ名の箇所は、パラメータの一部の文字列でもかまいません。

[3]ALTER SYSTEM文でSET句を指定すると、初期化パラメータ値を設定または変更できます。

ALTER SYSTEM SET パラメータ名 = 値 [SCOPE = {MEMORY | SPFILE | BOTH}];

SCOPE句を使用すると、次のように変更の適用範囲を指定することができます。

▼SCOPE句

SCOPE句変更の適用範囲
MEMORY変更は、現行インスタンスに対してのみ行われ、インスタンスが存続している間、保持される。
SPFILE変更は、サーバパラメータファイルに対してのみ行われ、インスタンスを再起動することで変更が反映する
BOTH現行インスタンスとサーバパラメータファイルの両方が変更される。新しい設定は、すぐに有効になり、インスタンスが停止し、再起動された後も保持する。

SCOPE句を省略した場合、使用している初期化パラメータファイルの種類によって、デフォルト値が変わるのでは注意が必要です。

サーバパラメータファイルを使用して、インスタンスを起動した場合は、SCOPE = BOTHがデフォルトです。一方、テキスト初期化パラメータファイルを使用して、インスタンスを起動した場合は、SCOPE = MEMORYがデフォルトです。

▼サーバパラメータファイルの初期化パラメータの変更

静的パラメータを変更する際はSCOPE = SPFILEを明示的に指定する必要がある。

あわせて読みたい