oracle 11.2.0.3 設置啓動腳本使ORACLE自動啓動

Linux下安裝完後每次都得通過下面命令來啓動對應的服務:

啓動服務 dbstart 

啓動監視器 lsnrctl start

啓動控制檯 emctl start dbconsole

本文以Red Hat Enterprise Linux 6.4 (x86_64)+oracle11G爲例設置oracle開機自動啓動:

方法一:

使用dbstart命令用於啓動,具體方法如下

首先修改/etc/oratab文件,將orcl:/u01/app/oracle/product/11.2.0/dbhome_1:N中的N改成Y,然後在/etc/rc.local添加下面幾行

su - oracle -c '$ORACLE_HOME/bin/dbstart'
su - oracle -c '$ORACLE_HOME/bin/lsnrctl start'
su - oracle -c '$ORACLE_HOME/bin/emctl start dbconsole'


如果沒有設置ORACLE_HOMEH環境變量,用絕對路徑取代即可,如/dba/app/oracle/product/..

初次運行dbstart時,一般會有這個報錯:

su - oracle -c "dbstart"

ORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listener

這個提示說明

啓動oracle服務的同時沒有啓動oracle監聽服務,因此如果想在啓動oracle服務的同時i啓動監聽

就需要修改dbstart/dbshut,將ORACLE_HOME_LISTNER值設爲$ORACLE_HOME(原來是爲$1)

方法二:  

vi /etc/rc.local

把下面的內容加入

su - oracle -c "
export ORACLE_SID=orcl
sqlplus /nolog <<EOF
connect / as sysdba
startup;
exit;
EOF"
su - oracle -c '$ORACLE_HOME/bin/lsnrctl start'
su - oracle -c '$ORACLE_HOME/bin/emctl start dbconsole'


說明下上面腳本:

在shell腳本中,通常將EOF與 << 結合使用,表示後續的輸入作爲子命令或子Shell的輸入,直到遇到EOF爲止,再返回到主Shell。

EOF只是一個分界符,當然也可以用abcde替換。

當shell遇到<<時,它知道下一個詞是一個分界符。在該分界符以後的內容都被當作輸入,直到shell又看到該分界符(位於單獨的一行)。

此分界符可以是所定義的任何字符串,其實,不一定要用EOF,只要是“內容段”中沒有出現的字符串,都可以用來替代EOF,完全可以換成abcde之類的字符串,只是一個起始和結束的標誌罷了。

1,command<<EOF

(內容)

EOF


例如:

#!/bin/bash
#Filename:do.sh
su - oracle -c "
export ORACLE_SID=orcl
sqlplus /nolog <<EOF
connect / as sysdba
startup;
exit;
EOF"
sleep 5
su - oracle -c 
lsnrctl start

說明:

將“內容段”整個作爲命令的輸入。

用su命令讀取整段命令,並逐行執行。


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