OS の起動時にオラクルのインスタンスとリスナーを起動する

インストールしたままの状態では、オラクルは自動起動は行わない。⇒ Oracle インスタンスの起動と停止
Linux(UNIX系) において自動起動を行うには、適切な RUNLEVEL の位置に起動スクリプトのシンボリックリンクを張ることが必要になる。
起動していないオラクルに状態で接続しようとすると ORA-27101: shared memory realm does not exist エラーが発生する。

Linux + Oracle

RUN LEVEL

runlevel コマンドにて、1つ前と現在値が分かる
/etc/inittab にて RUNLEVEL の変更が可能
起動プロンプトに時 RUNLEVEL の変更が可能 LILO:linux 1 ← レベル1 で 起動(LILO時)

レベル動作
0シャットダウン(システムの停止)
1シングルユーザーモード
2ネットワークなしのマルチユーザーモード
3マルチユーザーモード(テキストログイン)
4未使用
5マルチユーザーモード(グラフィカルログイン)
6リブート(システムの再起動)

起動スクリプトのリンク

起動(停止)スクリプト( etc/init.d/dbora ) のリンクを 起動(Start)する場合には SXXdbora でリンクし、停止(Kill)する場合には KXXdbora でリンクする。

OS が Oracle が起動中であることを判別するためのロックファイルに関する記述がなければスクリプトに追加する。(例: /var/lock/subsys/dbora など)

RUNLEVEL 0,6 に KXXdbora を設置 / RUNLEVEL 3,5 にSXXdboraを設置
 XX は任意の実行の順番を示す数字、例えば httpd の前に起動して、httpd の終了後に起動するなど

cd /etc/rc3.d (/etc/rc[RUNLEVEL].d 、rc5.dも同様に行う)
ln -s ../init.d/SXXdbora .

cd /etc/rc0.d (rc6.dも同様に行う)
ln -s ../init.d/KXXdbora .

(注意) オラクルの起動・停止スクリプトは普通1回実行してからリリースしませんか? と思われる。あり得ないようなケアレスバグが良くあります。(マンネリ作業による品質管理の劣化?)
もし初めて導入するならば必ずスクリプト単体で実行して動作確認してください。

導入直後に遭遇するので製品本体は良い物なのにサービスの品質や製品全体としてのイメージを 相当に低下させていると思います。

oratab の編集

自動起動するインスタンスの選択
/etc/oratab を編集して、自動起動したいインスタンスの最終フィールドを Y に変更する

$ORACLE_SID:$ORACLE_HOME:[Y|N] のフォーマット形式でサーバー上のインスタンスが記述されている

vi /etc/oratab
...
ORCL:/u01/app/oracle/product/〜/db_1:Y    ← ORCLは自動起動するインスタンス
TEST:/u01/app/oracle/product/〜/db_1:N    ← 自動起動しない
...

SHUTDOWN

  • shutdown -h now ( シャットダウン )
  • shutdown -r now ( リブート )
shutdown [ -hrf ] [ now | hh:ss | +mins ] [ message ]
           -h : (halt) システムをシャットダウン
           -r : (reboot) システムを再起動
           -f : (fast-reboot) fsckをしないリブート
           -F : fsckを行うリブート
          now : すぐに処理を行う
         +mins: 指定 分 後にシャットダウン

Solaris + Oracle

RUN LEVEL

who -r コマンドにて 現在値が分かる
/etc/inittab にて変更可能
5,6 に KXXdbora / 3 に SXXdbora を設置 ( XX は任意の優先度を示す数字 )

レベル動作
0PROMモニタモードへ移行(power-offで電源OFF)
1(S)シングルユーザーモード(1の場合はrootのみ)
2ネットワークなしのマルチユーザーモード
3マルチユーザーモード(サーバーとして動作:デフォルト)
4未使用
5シャットダウン(システムの停止)
6リブート(システムの再起動)

oratab の編集

Linux と同じ手順で行なう (/var/opt/oracle/oratab)

SHUTDOWN

  • shutdown -y -g0 -i5 ( ランレベル5-シャットダウン )
  • shutdown -y -g0 -i6 ( ランレベル6-リブート )
shutdown [-y] [-gseconds] [-irun_level]
          -y : 全ての問い合わせに対して yes を自動応答
          -gseconds  : システム停止を開始するまでの秒(デフォルト60)
          -irun_level: 移行したいランレベルです。省略時 2

Windows + Oracle

リスナーはサービスで設定する。
インスタンスは、Administration Assistant for Windows で起動とシャットダウン時の設定が GUI で可能。

但し、Windows はサービス上でオラクルが稼動しており、 Windows 本体のシャットダウン中に規定秒(デフォルト 20 秒)以内で終了処理が完了しないとサービスは強制終了される。 安静時以外(大量のロールバック作業中など)の場合には、手動でオラクルをシャットダウンする。

強制終了までのタイムアウトは、以下のレジストリキーに格納されている。(編集は自己責任で)

キー名:     HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
値の名前:   WaitToKillServiceTimeout
デフォルト: 20000 (20,000 ミリ秒)

また オラクル固有のサービスの停止に関するタイムアウトに関する設定がある。

キー名:     HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\「HOME_NAME」 以下にも
値の名前:   ORA_<SID>_SHUTDOWN_TIMEOUT
デフォルト: 90 (90 秒)

「HOME_NAME」 の例 : HOME0 / KEY_OraDb10g_home1 (バージョンによって違う)



オラクルの起動に関する内容

日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ 会員制(無料)の公式技術サイト