Linux下建立Oracle服務及其開機自啓動

說明:以下操作環境在CentOS 6.4 + Oracle 11gR2(Oracle安裝在ORACLE_BASE=/opt/oracle中,其ORACLE_HOME=/opt/oracle/11g)

用OUI安裝並配置Oracle數據庫後,Oracle就開啓了(包括:數據庫實例、監聽器、EM)。在重啓操作系統之後,Oracle默認是沒有啓動的。使用如下命令查看Oracle相關服務是否已啓動:

ps aux | grep ora_ #若無ora_**_**相關的進程,則oracle數據庫實例未啓動

netstat -tlnup | grep 1521 #若無任何顯示,則監聽器未啓動

lsnrctl status #查看監聽器狀態

netstat -tlnup | grep 1158 #若無任何顯示,則EM未啓動

emctl status dbconsole #查看EM狀態

手工啓動Oracle實例,可用sqlplus建立一個idle instance,然後再用startup啓動,如下:


數據庫實例啓動之後,需啓動監聽器,才能讓遠程用戶建立連接。可使用如下命令啓動監聽器:

lsnrctl start

 

Oracle還提供網頁版的管理器,要使用該管理器需啓動相關服務,使用如下命令啓動:

emctl start dbconsole

 

至此,可在web瀏覽器中輸入:https://{主機IP 或 主機名 或 本地localhost}:1158/em,打開管理器,使用相關帳號登錄進行數據庫查看和管理。

如果每次重啓操作系統都要進行以上操作好麻煩,那麼如何讓Oracle作爲系統服務在開機的時候自動啓動呢?

Oracle在$ORACLE_HOME/bin下提供許多對數據庫進行操作的腳本,其中dbstart和dbshut可分別用來啓動和關閉數據庫。注意,這兩個腳本已包含監聽器的啓動或關閉,但並未對EM進行相關的操作。使用如下命令:

/opt/oracle/11g/bin/dbstart /opt/oracle/11g #啓動數據庫實例(包含監聽器)

/opt/oracle/11g/bin/dbshut /opt/oracle/11g #關閉數據庫實例(包括監聽器)

 

以上命令要成功啓動數據庫實例還得打開Oracle設置的一個關卡:vi /etc/oratab,修改行:

orcl:/opt/oracle/11g:Y #默認爲orcl:/opt/oracle/11g:N

 

以root身份建立開機啓動oracle服務的腳本:vi /etc/init.d/oracle,添加如下腳本:

#!/bin/sh

#chkconfig: 2345 20 80

#description: Oracle dbstart / dbshut

#以上兩行爲chkconfig所需

ORA_HOME=/opt/oracle/11g

ORA_OWNER=oracle

LOGFILE=/var/log/oracle.log

echo "#################################">> ${LOGFILE}

date +"### %T %a %D: Run Oracle" >> ${LOGFILE}

if [ ! -f${ORA_HOME}/bin/dbstart ] || [ ! -f ${ORA_HOME}/bin/dbshut ]; then

    echo "Error: Missingthe script file ${ORA_HOME}/bin/dbstart or ${ORA_HOME}/bin/dbshut!">> ${LOGFILE}

    echo "#################################">> ${LOGFILE}

   exit

fi

start(){

    echo "###Startup Database..."

    su - ${ORA_OWNER} -c "${ORA_HOME}/bin/dbstart${ORA_HOME}"

    echo "###Done."

    echo "###Run databasecontrol..."

    su - ${ORA_OWNER} -c "${ORA_HOME}/bin/emctlstart dbconsole"

    echo "###Done."

}

stop(){

    echo "###Stop database control..."

    su - ${ORA_OWNER} -c "${ORA_HOME}/bin/emctlstop dbconsole"

    echo "###Done."

    echo "###Shutdown Database..."

    su - ${ORA_OWNER} -c "${ORA_HOME}/bin/dbshut${ORA_HOME}"

    echo "###Done."

}

case "$1" in

    'start')

       start >>${LOGFILE}

    ;;

    'stop')

       stop >>${LOGFILE}

    ;;

    'restart')

       stop >>${LOGFILE}

       start >>${LOGFILE}

    ;;

esac

date +"### %T %a %D: Finished." >> ${LOGFILE}

echo "#################################">> ${LOGFILE}

echo ""

 

使用如下命令將 /etc/init.d/oracle 置爲可執行文件:

chmod a+x/etc/init.d/oracle

 

至此,可使用如下命令對oracle進行啓動和關閉

/etc/init.d/oracle start #啓動oracle(包括數據庫實例、監聽器、EM)

/etc/init.d/oracle stop #關閉oracle

/etc/init.d/oracle restart #重啓oracle

 

將oracle 添加到 chkconfig中:

chkconfig --add oracle

 

可使用如下命令查看和設置oracle服務的開機啓動級別:

chkconfig | grep oracle #查看oracle服務的開機啓動級別

chkconfig --level 24 oracle off #修改oracle服務的開機啓動級別
chkconfig --level 35 oracle on

 

至此可使用如下命令對oracle的啓動或關閉進行管理

service oracle start #啓動

service oracle stop #關閉

service oracle restart #重啓

 建立連接:

ln -s/etc/init.d/oracle /etc/rc0.d/K01oracle   #關機執行

ln -s/etc/init.d/oracle /etc/rc6.d/K01oracle  #重啓執行


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章