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