在$ORACLE_HOME/bin中,有dbstart和dbshut這兩個腳本,可以使用這兩個oracle自帶的腳本實現oracle的開機自啟動。這個腳本中包含oraclelistener、instance、asm instances的啟動,同樣dbshut也是起到關閉服務的作用。
方法一:使用/etc/rc.local系統開機啟動腳本,啟動oracle
配置系統使dbstart和dbshut腳本起作用:
1)、以root編輯/etc/oratab,
orcl:/home/oracle/app/oracle/product/11.2.0/dbhome_1:N 這種格式,
orcl是你的ORACLE_SID,
/home/oracle/app/oracle/product/11.2.0/dbhome_1是ORACLE_HOME,
這里需要把N改為Y,即orcl:/home/oracle/app/oracle/product/11.2.0/dbhome_1:Y。
2)、以oracle編輯$ORACLE_HOME/bin/dbstart,找到其中第78行:ORACLE_HOME_LISTNER=改為你自己的路徑,或者可以改成ORACLE_HOME_LISTNER=$ORACLE_HOME
保存腳本,以oracle用戶運行dbshut和dbstart看是否能關閉、啟動數據庫。如果不能,一般是參數設置,根據報錯找到對應位置更改。
經過上一步的配置,可以直接用dbstart命令啟動數據listener、instance、asm instances,但是還沒有啟動oracle10g的EM,ORACLE利用web頁面管理數據庫相當方便,也是10g的一個特色,所以應該一並啟動起該服務來。
$ORACLE_HOME/bin/emctl start dbconsole
因此我們可以用rc.local或者redhat服務都可以實現要求的開機啟動。下面分別說一下:
1)、利用rc.local。直接把dbstart加到rc.local中,實現開機自動啟動。這里需要注意的是必須以oracle啟動該腳本。
用root編輯/etc/rc.local,添加下面三行:
su oracle –lc "/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/lsnrctl start"
su - oracle -c "/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/dbstart"
su - oracle -c "/u01/product/10.2.0/db_1/bin/emctl start dbconsole"
這里"/home/oracle/app/oracle/product/11.2.0/dbhome_1需要替換成實際的ORACLE_HOME
保存並退出后,reboot服務器測試一下,可以看到,當系統啟動以后oracle監聽、實例和em都已經起來了
方法二:使用/etc/rc.d/init.d/oracle 自創腳本啟動關閉數據庫
如果我們不用rc.local,也可以加到redhat服務中。在/etc/rc.d/init.d中添加如下腳本文件,命名為oracle:
#!/bin/sh
#chkconfig: 2345 99 01
#description: ORACLE 10g Server
ORACLE_HOME=/u01/product/10.2.0/db_1
if [ ! -f $ORACLE_HOME/bin/dbstart ]
then
echo "ORACLE cannot start"
exit
fi
case "$1" in
'start')
echo "Starting Oracle Database..."
su - oracle -c "$ORACLE_HOME/bin/dbstart"
su - oracle -c "$ORACLE_HOME/bin/emctl start dbconsole"
;;
'stop')
echo "Stoping Oracle Database"
su - oracle -c "$ORACLE_HOME/bin/emctl stop dbconsole"
su - oracle -c "$ORACLE_HOME/bin/dbshut"
;;
esac
注意其中兩行注釋,網上很多腳本因為少了這兩行不能使服務自啟動:
#chkconfig: 2345 99 01
#description: ORACLE 10g Server
其中chkconfig:2345 99 01 是指腳本將為運行級2、3、4、5啟動oracle 10g服務,啟動優先級為99,關閉優先級為01。
然后以root權限:
# mv oracle /etc/init.d
# chkconfig --add oracle
# chkconfig --list oracle 查看,這樣的話就把ORACLE就可以開機啟動和關機前shutdown immediate
重啟系統,就可以在啟動的過程中看到 Starting oracle ,因為我們設置的優先級為99,一般是最后啟動。[OK]以后就可以了。因為要啟動emctl,可能有點慢,等待的時間要稍微長一點。
啟動以后可以以root執行oracle start或者oracle stop來啟動或停止服務
總結:我是采用方式一進行實現的,方法二沒有經過測試
轉載請注明:http://blog.163.com/nocturnal_ken/blog/static/17802332720111945726777/