CentOS下配置Oracle 11gR2爲系統服務自動啓動

PS:在Windows下安裝完成Oracle 11gR2後,默認就開機自啓動Oracle相關服務,但Linux下安裝完後每次都得手動啓動和關閉數據庫(dbstart | dbshut)、監聽器(lsnrctl)、控制檯(emtcl)。如何把Oracle添加到Linux系統服務裏開機自啓動呢?下面以CentOS 6.3爲例詳解,其餘發行版同樣通用! nginx

一、Redhat init簡介: shell

Linux啓動時,會運行一個init程序,而後由init來啓動後面的任務,包括多用戶環境(inittab中設定)和網絡等。運行級就是當前程 序運行的功能級別,這個級別從1到6,具備不一樣的功能。這些級別在/etc/inittab(其餘發行版這個文件位置不一樣)中指定,該文件就是init程 序尋找的主要文件。最早運行的服務放在/etc/rc.d目錄下。 數據庫

文件以S開頭,表明start(啓動),後面的數字是啓動順序;文件以K開頭,表明 kill(結束),一樣,後面的數字表明結束順序。例如:/etc/rc3.d/S55sshd表示它與運行級別3有關,55就是它的啓動順序;/etc /rc3.d/K15nginx表示它與運行級別3有關,15就是它的關閉順序。 vim

init.d
這個目錄中存放了一些服務啓動腳本,系統安裝時的多個rpm包,這些腳本在執行時能夠用來啓動,中止和重啓這些服務。
rcx.d(x爲0~6)
這個目錄是啓動級別的執行程序連接目錄,裏面的文件都是指向init.d目錄中文件的一些軟鏈接。 網絡

二、修改dbstart和dbshut啓動關閉腳本,使其啓動數據庫的同時也自動啓動監聽器(即啓動數據庫時啓動監聽器,中止數據庫時中止監聽器):
oracle

# vim /u01/app/oracle/product/11.2.0/db_1/bin/dbstart

找到下面的代碼,在實際腳本代碼的前面

# First argument is used to bring up Oracle Net Listener
ORACLE_HOME_LISTNER=$1
# 將此處的 ORACLE_HOME_LISTNER=$1 修改成 ORACLE_HOME_LISTNER=$ORACLE_HOME
if [ ! $ORACLE_HOME_LISTNER ] ; then
echo "ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener"
echo "Usage: $0 ORACLE_HOME"
else
LOG=$ORACLE_HOME_LISTNER/listener.log

如圖所示:
app

一樣也修改dbshut腳本: ssh

# vim /u01/app/oracle/product/11.2.0/db_1/bin/dbshut


# The this to bring down Oracle Net Listener
ORACLE_HOME_LISTNER=$1
# 將此處的 ORACLE_HOME_LISTNER=$1 修改成 ORACLE_HOME_LISTNER=$ORACLE_HOME
if [ ! $ORACLE_HOME_LISTNER ] ; then
echo "ORACLE_HOME_LISTNER is not SET, unable to auto-stop Oracle Net Listener"
echo "Usage: $0 ORACLE_HOME"
else
LOG=$ORACLE_HOME_LISTNER/listener.log this

三、新建Oracle服務啓動腳本: spa

# vim /etc/init.d/oracle

新建一個以oracle命名的文件(也能夠命名爲oracle11g等,本身喜歡啥名改啥名。),並將如下腳本代碼複製到文件裏(裏面的oracle目錄路徑根據本身的實際安裝路徑修改):

#!/bin/sh
# chkconfig: 345 61 61
# description: Oracle 11g R2 AutoRun Servimces
# /etc/init.d/oracle
#
# Run-level Startup script for the Oracle Instance, Listener, and
# Web Interface

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export ORACLE_SID=ORCL
export PATH=$PATH:$ORACLE_HOME/bin

ORA_OWNR="oracle"

# if the executables do not exist -- display error

if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi

# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display

case "$1" in
start)
# Oracle listener and instance startup
su $ORA_OWNR -lc $ORACLE_HOME/bin/dbstart
echo "Oracle Start Succesful!OK."
;;
stop)
# Oracle listener and instance shutdown
su $ORA_OWNR -lc $ORACLE_HOME/bin/dbshut
echo "Oracle Stop Succesful!OK."
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo $"Usage: `basename $0` {start|stop|reload|reload}"
exit 1
esac
exit 0

保存退出!如圖:

四、賦予啓動腳本執行權限並連接好:

# chmod 750 /etc/init.d/oracle
# ln -s /etc/init.d/oracle /etc/rc1.d/K61oracle
# ln -s /etc/init.d/oracle /etc/rc3.d/S61oracle

五、把oracle啓動腳本添加到系統服務裏並設置自啓動:

# chkconfig --add oracle
# chkconfig --level 345 oracle on

reboot重啓系統看看效果吧,如圖自啓動的oracle服務進程:

相關文章
相關標籤/搜索