Oracle中心にIT全般の技術情報を気が向くままに書いています。他にLinux、仮想化技術(VMWare)やトラブルに役立つ情報などがあります。

スポンサーサイトデータベースが自動的に起動・停止するように設定する(dbstart/dbshut編)


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
LinuxOSの起動・停止時に、Oracleデータベースを自動的に起動・停止するように設定してみたいと思います。
Windowsの場合は、本記載内容と方式が異なります。

11gR1以前は、dbstart/dbshutスクリプトを使用するのが一般的でしたが、11gR2以降は本方式は非推奨となり、Oracle Restart機能を使用するのが推奨されるようです。
ただし今回は11gR2で非推奨のdbstart/dbshutを使用して自動起動・停止が行えるか確認してみたいと思います。

また、LinuxではなくUNIXの場合は、本手順とはパス等が一部異なりますので詳しくはマニュアル「Oracle® Database管理者リファレンス11g リリース2(11.2)for Linux and UNIX-Based Operating Systems」を参照してください。




自動起動・停止設定の有効化
oratabファイルを修正して自動起動・停止設定の有効化を行います。
"/etc/oratab"ファイルに、ORACLE_SIDとORACLE_HOMEを指定して、パラメータ"Y"を下記のように修正します。
※ファイルが存在しない場合は作成します。

■ORACLE_SIDが"orcl"で、ORACLE_HOMEが"orcl:/u01/app/oracle/product/11.2.0/dbhome_1:Y"の場合
orcl:/u01/app/oracle/product/11.2.0/dbhome_1:Y


データベース自動起動・停止スクリプトの作成
(1)自動起動・停止用スクリプトの作成
dbshutおよびdbstartは、データベースの停止・起動とリスナーの停止・起動を行うためのスクリプトです。
linuxであれば、"/etc/init.d/dbora"ファイルを下記のように作成します。
#! /bin/sh  -x

# ORACLE_HOMEを指定
ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
export ORACLE_HOME

# ORACLE実行ユーザを指定
ORACLE_OWNER=oracle

case $1 in
'start')
        # データベースおよびリスナーの起動
        su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME" &
        ;;
'stop')
        # データベースおよびリスナーの停止
        su - $ORACLE_OWNER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME" &
        ;;
*)
        # 引数なしの場合は構文エラーメッセージを出力
        echo "usage: $0 {start|stop}"
        exit
        ;;
esac

exit


(2)ファイルパーミッションの設定
作成したファイルにパーミッションを設定します。
[root@11gR2RAC01 ~]# chgrp dba /etc/init.d/dbora
[root@11gR2RAC01 ~]# chmod 750 /etc/init.d/dbora


(3)作成スクリプトの動作確認
作成したスクリプトを実行し、動作確認を行います。

■データベースの停止
[root@11gR2RAC01 ~]# /etc/init.d/dbora stop
+ ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
+ export ORACLE_HOME
+ ORACLE_OWNER=oracle
+ case $1 in
+ exit
[root@11gR2RAC01 ~]# + su - oracle -c '/u01/app/oracle/product/11.2.0/dbhome_1/bin/dbshut /u01/app/oracle/product/11.2.0/dbhome_1'
Processing Database instance "orcl": log file /u01/app/oracle/product/11.2.0/dbhome_1/shutdown.log

データベースが下記のように停止していることを確認します。
[root@11gR2RAC01 ~]# ps -ef|grep ora_
root      8337  8572  0 13:40 pts/3    00:00:00 grep ora_

リスナーが下記のように停止していることを確認します。
[root@11gR2RAC01 ~]# ps -ef|grep tnslsnr
root      8344  8572  0 13:41 pts/3    00:00:00 grep tnslsnr


■データベースの起動
[root@11gR2RAC01 ~]# /etc/init.d/dbora start
+ ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1
+ export ORACLE_HOME
+ ORACLE_OWNER=oracle
+ case $1 in
+ exit
[root@11gR2RAC01 ~]# + su - oracle -c '/u01/app/oracle/product/11.2.0/dbhome_1/bin/dbstart /u01/app/oracle/product/11.2.0/dbhome_1'
Processing Database instance "orcl": log file /u01/app/oracle/product/11.2.0/dbhome_1/startup.log

データベースが下記のように起動していることを確認します。
[root@11gR2RAC01 ~]# ps -ef|grep ora_
oracle    8482     1  0 13:41 ?        00:00:00 ora_pmon_orcl
oracle    8486     1  0 13:41 ?        00:00:00 ora_vktm_orcl
oracle    8492     1  0 13:41 ?        00:00:00 ora_gen0_orcl
oracle    8496     1  0 13:41 ?        00:00:00 ora_diag_orcl
oracle    8500     1  0 13:41 ?        00:00:00 ora_dbrm_orcl
oracle    8504     1  0 13:41 ?        00:00:00 ora_psp0_orcl
oracle    8508     1  0 13:41 ?        00:00:00 ora_dia0_orcl
oracle    8512     1  3 13:41 ?        00:00:01 ora_mman_orcl
oracle    8516     1  0 13:41 ?        00:00:00 ora_dbw0_orcl
oracle    8520     1  0 13:41 ?        00:00:00 ora_lgwr_orcl
oracle    8524     1  0 13:41 ?        00:00:00 ora_ckpt_orcl
oracle    8528     1  0 13:41 ?        00:00:00 ora_smon_orcl
oracle    8532     1  0 13:41 ?        00:00:00 ora_reco_orcl
oracle    8537     1  1 13:41 ?        00:00:00 ora_mmon_orcl
oracle    8543     1  0 13:41 ?        00:00:00 ora_mmnl_orcl
oracle    8639     1  0 13:42 ?        00:00:00 ora_arc0_orcl
oracle    8643     1  0 13:42 ?        00:00:00 ora_arc1_orcl
oracle    8647     1  0 13:42 ?        00:00:00 ora_arc2_orcl
oracle    8651     1  0 13:42 ?        00:00:00 ora_arc3_orcl
oracle    8655     1  0 13:42 ?        00:00:00 ora_qmnc_orcl
oracle    8703     1  0 13:42 ?        00:00:00 ora_q000_orcl
oracle    8707     1  0 13:42 ?        00:00:00 ora_q001_orcl
root      8715  8572  0 13:42 pts/3    00:00:00 grep ora_

リスナーが下記のように起動していることを確認します。
[root@11gR2RAC01 ~]# ps -ef|grep tnslsnr
oracle    8391     1  0 13:41 ?        00:00:00 /u01/app/oracle/product/11.2.0/dbhome_1/bin/tnslsnr LISTENER -inherit
root      8724  8572  0 13:42 pts/3    00:00:00 grep tnslsnr


■留意点:"ORACLE_HOME_LISTNER is not SET"
 "ORACLE_HOME_LISTNER is not SET"というエラーが出た場合、データベースは停止・起動されますが、リスナーが停止・起動されていません。
 その場合の回避策としては、ORACLE_HOME_LISTNER環境変数に$ORACLE_HOMEを設定するか、dbshut/dbstartの引数に$ORACLE_HOMEを渡してあげる必要があります。
 今回はdbshut/dbstartの引数に$ORACLE_HOMEを渡す方法でdboraに記述しています。


(4)自動起動・停止スクリプトの登録
linuxOSの停止・起動時に、作成したスクリプトが実行されるように登録します。
linuxの場合は、下記のように設定します。

■自動起動登録
[root@11gR2RAC01 ~]# ln -s /etc/init.d/dbora /etc/rc.d/rc0.d/K01dbora
[root@11gR2RAC01 ~]# ln -s /etc/init.d/dbora /etc/rc.d/rc3.d/S99dbora
[root@11gR2RAC01 ~]# ln -s /etc/init.d/dbora /etc/rc.d/rc5.d/S99dbora


これで設定完了で、Oracleデータベースおよびリスナーの自動起動・停止が行われるようになります。




以上です。




トラックバックURL

この記事にトラックバックする(FC2ブログユーザー)



前ページへ:Oracle Master対策 トップ
次ページへ:Windows8.1 Hyper-V ゲストOSで音が出ない

ページのトップへ

必ずお読みください

本ブログ記事をご利用になって生じたいかなる損害についても当方は一切責任を負いません。
ご利用は自己責任でお願いします。(^―^)

広 告





ブログランキング/その他


ビジネスブログ100選

ブログランキング・にほんブログ村へ
blogramで人気ブログを分析




最新トラックバック


RSSリンクの表示

QRコード

QR

アクセスカウンター

ユニーク:
トータル:


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。