オラクル・インスタンスを手動で起動、停止する

オラクルを自動で起動、自動で停止するようにする

オラクルの起動(全プラットフォーム共通)

オラクル・インスタンスの起動方法の種類

--インスタンスの起動(SQL*Plusを使用)
# sqlplus /nolog
 
SQL> CONN / AS SYSDBA  -- OS認証でアイドルインスタンスに接続
SQL> STARTUP [FORCE] [RESTRICT] [PFILE=filename] NOMOUNT
-- データベースのマウント
SQL> STARTUP MOUNT [dbname]
-- データベースのオープン
SQL> STARTUP OPEN [ READ {ONLY|WRITE [RECOVER]}|RECOVER] [dbname]
-- NOMOUNT→MOUNT→OPEN の状態遷移は可能だが、逆は不可能
 
-- 省略時
SQL> STARTUP -- OPEN処理まで行う

オラクルが起動するまでのプロセス

$ORACLE_HOME/bin/dbstart というスクリプトも用意されているが、バージョンアップ時には不具合が良く出る。
スクリプトに頼るのは控えたほうがよい。

オラクルの停止(全プラットフォーム共通)

オラクル・インスタンスの停止方法の種類

SQL> SHUTDOWN [NORMAL]
-- 省略時 (すべてのセッションが切断されるまで待機)
 
SQL> SHUTDOWN TRANSACTIONAL [LOCAL]
-- 現行トランザクションの終了後、セッション切断、停止
-- FETCH ACROSS COMMIT プログラムがある場合には注意
 
SQL> SHUTDOWN IMMEDIATE
-- 現行トランザクションのロールバック、セッション切断、停止
 
SQL> SHUTDOWN ABORT
-- 強制停止(次回起動時に クラッシュ・リカバリが必要)

$ORACLE_HOME/bin/dbstop というスクリプトも用意されているが、シャットダウン時以外は使用しない方がよい。
どのモードで停止するかを必ず選択し、スクリプト任せにしないようにする。

Windows プラットフォーム限定

サービスとインスタンスの起動

Windows 環境ではパフォーマンスとトレンドの理由からスレッドモデルで実装されていると書かれている。
サービスという環境下(プロセス空間?)でスレッドモデルのインスタンス*1が 実行されるということらしい。 そのため、サービスが起動していなければアイドルインスタンスの接続環境が存在せず、 SQLPlus 経由での接続およびインスタンスの起動もできない。
サービスが停止状態の場合には、以下の Windows 専用コマンドでサービスとインスタンスの同時に起動することが可能(起動時の詳細メッセージは表示されない、詳細はアラートログを見る必要がある。)

NET START servicename
または、 ORADIM -STARTUP -SID oracle_sid -STARTTYPE SRVC,INST

デフォルト・インストールでは、サービス起動時にインスタンス起動も同時に行われる設定になっている。 このためサービス=インスタンスと認識されている事が多い。サービス⊇インスタンス、サーバープロセス(Windows だとスレッド:MTS は含まれるかどうか未確認)、ワークエリア(スレッド間の共有メモリ+etc)
依存関係は、インスタンスの起動にはサービスの起動が不可欠、インスタンスの停止はサービスの停止を伴わない、ということになる。
この設定は、Administration Assistant for Windows ツール、データベースツリー(起動オプション)にて行うことが可能。 (oradim コマンドでも可能)

サービスとインスタンスの停止

シャットダウン例(詳細はプラットフォーム・ガイド for Windows を参照)

NET STOP servicename または
ORADIM -SHUTDOWN -SID oracle_sid -SHUTTYPE INST,SRVC -SHUTMODE NORMAL ...


関連事項

日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ オラクルサポートセンター

*1 UNIX 系はプロセスモデルのインスタンス