天天看點

azure 雲端centos6.5下oracle11g服務開機自啟動

1,雲端rc.local設定失效

伺服器資訊是centos6.5,oracle資料庫版本是orcle11g,小版本号是11.2.0.1.0,以前在idc環境設定的oracle伺服器開機啟動oracle服務,在/etc/rc.local中設定,增加如下的内容 :

su - oracle < lsnrctl start                                                                                                                                                                                                                  

sqlplus / as sysdba 

startup 

quit 

EOF 

但是遷移到雲環境後,這個設定啟動失效了,伺服器啟動後,oracle沒有随機開啟,是以準備換一種新的思路來實作。

Linux啟動時,會運作一個init程式,然後由init來啟動後面的任務,包括多使用者環境(inittab中設定)和網絡等。運作級就是目前程式運作的功能級别,這個級别從1到6,具有不同的功能。這些級别在/etc/inittab中指定,該檔案就是init程式尋找的主要檔案。最先運作的服務放在/etc/rc.d目錄下。

檔案以S開頭,代表start(啟動),後面的數字是啟動順序;檔案以K開頭,代表kill(結束),同樣,後面的數字代表結束順序。

例如/etc/rc2.d/S10network代表它與運作級别2有關,10就是他的啟動順序。

目錄介紹:

init.d

    這個目錄中存放了一些服務啟動腳本,系統安裝時的多個rpm包,這些腳本在執行時可以用來啟動,停止和重新開機這些服務。

rcx.d(x為0~6)

這個目錄是啟動級别的執行程式連結目錄,裡面的檔案都是指向init.d目錄中檔案的一些軟連接配接。

是以可以在init.d裡面添加一個啟動oracle的腳本,然後通過chkconfig來實作開機自啟動。

2,修改/etc/oratab

[[email protected] ~]# vim /etc/oratab                                                                                                                                                                      

powerdes:/oracle/app/oracle/product/11.2.0/dbhome_1:Y

blog源位址:http://blog.csdn.net/mchdba/article/details/51176911 ,部落客mchdba,謝絕轉載

3,在oracle使用者的profile檔案中增加SID環境變量

[[email protected] ~]# su - oracle                                                                                                                                                                              

[[email protected] ~]$ vim .bash_profile

# .bash_profile

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

        . ~/.bashrc

fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

export ORACLE_BASE=/oracle/app/oracle

export ORACLE_HOME=/oracle/app/oracle/product/11.2.0/dbhome_1

export PATH=$ORACLE_HOME/bin:$PATH

export ORACLE_TERM=xterm

export TNS_ADMIN=$ORACLE_HOME/network/admin

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/oracm/lib:$ORACLE_HOME/lib

export CLASSPATH=$CLASSPATH:$ORACLE_HOME/rdbms/jlib:$ORACLE_HOME/jlib:$ORACLE_HOME/network/lib

export LANG=en_US.gbk

export NLS_LANG=american_america.ZHS16GBK

export EDITOR=vim

# add in the end

export ORACLE_SID=powerdes

4,編寫oracle自啟動腳本oracled

判斷oracle是否啟動的小腳本:

[[email protected] ~]# more t.sh

pidnum=`ps -eaf|grep oracle |grep powerdes |grep -v grep  |wc |awk '{ print $1 }' `                                                                                                        

echo $pidnum

if [ $pidnum -gt 0 ]; then

         echo "oracle is running,there are $pidnum oracle proccesses exists .."

fi

[[email protected]_crm ~]#

[[email protected]_crm ~]# sh t.sh

40

oracle is running,there are 40 oracle proccesses exists ..

[[email protected] ~]#

Oracle随機啟動的腳本:

[[email protected] ~]# more /etc/init.d/oracled

#!/bin/bash

# chkconfig: 2345 10 90 

# description: myservice ....

# description: The Oracle Database is an Object-Relational Database Management System.                                                                                   

# check the oracle server by "  ps -eaf|grep oracle |grep powerdes |grep -v grep  |wc "

. /etc/rc.d/init.d/functions

LOCKFILE=/var/lock/subsys/oracle

ORACLE_HOME=/oracle/app/oracle/product/11.2.0/dbhome_1

ORACLE_USER=oracle

# check the oracle processe, if >0 means oracle is running.

pidnum=`ps -eaf|grep oracle |grep powerdes |grep -v grep  |wc |awk '{ print $1 }' `

case "$1" in

'start')

   if [ $pidnum -gt 0 ]; then

      echo $0 already running.

      exit 1

   fi

   echo -n $"Starting Oracle Database:"

   su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl start"

   su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME"

   #su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl start dbconsole"

   touch $LOCKFILE

   ;;

'stop')

   #if [ ! -f $LOCKFILE ]; then

   if [ $pidnum -lt 1 ]; then

      echo $0 already stopping.

      exit 1

   fi

   echo -n $"Stopping Oracle Database:"

   su - $ORACLE_USER -c "$ORACLE_HOME/bin/lsnrctl stop"

   su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME"

   #su - $ORACLE_USER -c "$ORACLE_HOME/bin/emctl stop dbconsole"

   rm -f $LOCKFILE

   ;;

'restart')

   $0 stop

   $0 start

   ;;

'status')

   if [ $pidnum -gt 0 ]; then

      echo $0 started.

      else

      echo $0 stopped.

   fi

   ;;

*)

   echo "Usage: $0 [start|stop|status]"

   exit 1

esac

exit 0

[[email protected] ~]#

5,驗證oracled

賦予執行權限:

chmod a+x /etc/rc.d/init.d/oracled

ln –s /etc/rc.d/init.d/oracle  /etc/rc2.d/S61oracled                                                                                                                                                                  

ln –s /etc/rc.d/init.d/oracled  /etc/rc3.d/S61oracled

ln –s /etc/rc.d/init.d/oracled  /etc/rc4.d/S61oracled

ln –s /etc/rc.d/init.d/oracle  /etc/rc0.d/K61oracled

ln –s /etc/rc.d/init.d/oracle  /etc/rc6.d/K61oracled

驗證:

service oracled status;

service oracled start;

service oracled stop;

service oracled restart;

6,添加開機自啟動

将oracled添加進chkconfig:

chkconfig --level 2345 oracled on;                                                                                                                                                                                         

chkconfig --add oracled;