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

來源:互聯網
上載者:User

說明:以下作業環境在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/11gORA_OWNER=oracleLOGFILE=/var/log/oracle.logecho "#################################" >> ${LOGFILE}date +"### %T %a %D: Run Oracle" >> ${LOGFILE}if [ ! -f ${ORA_HOME}/bin/dbstart ] || [ ! -f ${ORA_HOME}/bin/dbshut ]; then    echo "Error: Missing the script file ${ORA_HOME}/bin/dbstart or ${ORA_HOME}/bin/dbshut!" >> ${LOGFILE}    echo "#################################" >> ${LOGFILE}    exitfistart(){    echo "###Startup Database..."    su - ${ORA_OWNER} -c "${ORA_HOME}/bin/dbstart ${ORA_HOME}"    echo "###Done."    echo "###Run database control..."    su - ${ORA_OWNER} -c "${ORA_HOME}/bin/emctl start dbconsole"    echo "###Done."}stop(){    echo "###Stop database control..."    su - ${ORA_OWNER} -c "${ORA_HOME}/bin/emctl stop 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}    ;;esacdate +"### %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   #重啟執行

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.