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

[root@xxx ~]# 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环境变量

[root@xxx ~]# su - oracle                                                                                                                                                                              

[oracle@xxx ~]$ 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是否启动的小脚本:

[root@xxx ~]# 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

[root@yueworldoracle_crm ~]#

[root@yueworldoracle_crm ~]# sh t.sh

40

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

[root@xxx ~]#

 

 

Oracle随机启动的脚本:

[root@xxx ~]# more /etc/init.d/oracled

#!/bin/bash

 

# 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"

   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

[root@xxx ~]#

 

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;

 

你可能感兴趣的:(azure 云端centos6.5下oracle11g服务开机自启动)