菜鳥經驗:oracle與weblogic自動啟動與停止
2024-08-29 13:35:24
供稿:網友
 
             
 Oracle與weblogic自動啟動與停止 
 
                                                                                            最近做開發時,發覺每次重新啟動服務器時oracle數據庫若沒有關閉,則必須先關閉后在重新啟動redhat advance server,oracle才能夠正常運行。感覺這樣麻煩,想到能否使數據庫與web服務器與操作系統一同關閉與啟動。在網上查找了一下相關資料,只找到一篇“Oracle Database HOWTO 自動啟動及停止.htm”但是沒有找到有關weblogic自動啟動與停止的文章。經過摸索,我最初的想法實現了,因此想把它寫出來,與大家交流。 
服務器環境: 
RedHat Advance Server2.1 
Oracle 9.2.2 for linux 
Weblogic7.0 for Linux 
一、 oracle自動啟動與停止 
1、 修改Oracle系統配置文件/etc/oratab 
/etc/oratab 格式為: SID:ORACLE_HOME:AUTO 
把AUTO域設置為Y(大寫),只有這樣,oracle 自帶的dbstart和dbshut才能夠發揮作用。我的為: 
ora9i:/home/oracle/ora/PRodUCts/9.2.0:Y 
2、 編寫服務腳本:如下 
#!/bin/bash 
# 
#################FUNCTION############# 
# 
# AutoStart Oracle and listener 
# AutoStop Oracle and listener 
# 
##################################### 
# 
# Created by ZhouYS 2003-11-26 
# 
case "$1" in 
start) 
echo "Starting Oracle Databases ... " 
echo "-------------------------------------------------" >> /var/log/oracle 
date +" %T %a %D : Starting Oracle Databasee as part of system up." >> /var/log/oracle 
echo "-------------------------------------------------" >> /var/log/oracle 
su - oracle -c "dbstart" >> /var/log/oracle 
echo "Done." 
echo "Starting Oracle Listeners ... " 
echo "-------------------------------------------------" >> /var/log/oracle 
date +" %T %a %D : Starting Oracle Listeners as part of system up." >> /var/log/oracle 
echo "-------------------------------------------------" >> /var/log/oracle 
su - oracle -c "lsnrctl start" >> /var/log/oracle 
echo "Done." 
echo "" 
echo "-------------------------------------------------" >> /var/log/oracle 
date +" %T %a %D : Finished." >> /var/log/oracle 
echo "-------------------------------------------------" >> /var/log/oracle 
touch /var/lock/subsys/oracle 
;; 
stop) 
echo "Stoping Oracle Listeners ... " 
echo "-------------------------------------------------" >> /var/log/oracle 
                         date +" %T %a %D : Stoping Oracle Listener as part of system down." >> /var/log/oracle 
echo "-------------------------------------------------" >> /var/log/oracle 
su - oracle -c "lsnrctl stop" >> /var/log/oracle 
echo "Done." 
rm -f /var/lock/subsys/oracle 
echo "Stoping Oracle Databases ... " 
echo "-------------------------------------------------" >> /var/log/oracle 
date +" %T %a %D : Stoping Oracle Databases as part of system down." >> /var/log/oracle 
echo "-------------------------------------------------" >> /var/log/oracle 
su - oracle -c "dbshut" >>/var/log/oracle 
echo "Done." 
echo "" 
echo "-------------------------------------------------" >> /var/log/oracle 
date +" %T %a %D : Finished." >> /var/log/oracle 
echo "-------------------------------------------------" >> /var/log/oracle 
;; 
restart) 
$0 stop 
$0 start 
;; 
*) 
echo "Usage: oracle {startstoprestart}" 
exit 1 
esac 
將腳本命名為oracle,保存在/etc/rc.d/init.d下 
改變文件屬性:chmod 755 oracle 
注重:在windows下編輯此文件時有DOS格式字符導致在linux下不能夠正常運行,建議用gedit 或用 vi編輯 
3、建立服務連接: 
系統啟動時啟動數據庫,我們需要以下連結∶ 
-------------------------------------------------------------------------------- 
$ ln -s ../init.d/oracle /etc/rc.d/rc2.d/S99oracle 
$ ln -s ../init.d/oracle /etc/rc.d/rc3.d/S99oracle 
$ ln -s ../init.d/oracle /etc/rc.d/rc5.d/S99oracle #rc4.d unused 
-------------------------------------------------------------------------------- 
要在重新啟動時停止數據庫,我們需要以下連結∶ 
-------------------------------------------------------------------------------- 
$ ln -s ../init.d/oracle /etc/rc.d/rc0.d/K01oracle # 停止 
$ ln -s ../init.d/oracle /etc/rc.d/rc6.d/K01oracle # 重新啟動 
二、weblogic自動啟動與停止 
假設weblogic安裝在/home/weblogic/bea下。 
1、 編寫服務腳本:如下 
#!/bin/bash 
# 
#################FUNCTION############# 
# 
# AutoStart Weblogic 
# AutoStop Weblogic 
# 
##################################### 
# 
# Created by ZhouYS 2003-11-26 
# Wellhope Information Technology Co.,Ltd 
# PUJIANG Science Park(浦江科學園) 
# 
shutdownweblogic() 
{ 
cd / 
# make temp work dir ,you can create it in /tmp 
mkdir -p /home/weblogic/zhouys 
# 
cd /home/weblogic/zhouys 
#find weblogic main process 
ps -aux  grep /home/weblogic >tmp01 
# 
awk '{print $2}' tmp01  sort > tmp02 
#produce kill-main-process script 
                         echo "kill -9 " `sed -n '1p' tmp02` > tmp03 
# 
chmod 755 tmp03 
# kill weblogic 
./tmp03 
cd /home/weblogic/ 
sleep 3 
rm -rfv zhouys 
} 
case "$1" in 
start) 
echo "Starting Weblogic ... " 
echo "-------------------------------------------------" >> /var/log/weblogic 
date +" %T %a %D : Starting Weblogic as part of system up." >> /var/log/weblogic 
echo "-------------------------------------------------" >> /var/log/weblogic 
cd /home/weblogic/bea/user_projects/mydomain/ >> /dev/null 
. startWebLogic.sh & >> /var/log/weblogic 
echo "Done." 
echo "" 
echo "-------------------------------------------------" >> /var/log/weblogic 
date +" %T %a %D : Finished." >> /var/log/weblogic 
echo "-------------------------------------------------" >> /var/log/weblogic 
touch /var/lock/subsys/weblogic 
;; 
stop) 
echo "Stopping Weblogic ... " 
echo "-------------------------------------------------" >> /var/log/weblogic 
date +" %T %a %D : Stopping Weblogic as part of system down." >> /var/log/weblogic 
echo "-------------------------------------------------" >> /var/log/weblogic 
shutdownweblogic 
echo "Done." 
echo "" 
echo "-------------------------------------------------" >> /var/log/weblogic 
date +" %T %a %D : Finished." >> /var/log/weblogic 
echo "-------------------------------------------------" >> /var/log/weblogic 
;; 
restart) 
$0 stop 
#sleep 2 sec to stop all weblogic-process 
sleep 2 
$0 start 
;; 
*) 
echo "Usage: $0 {startstoprestart}" 
exit 1 
esac 
將腳本命名為weblogic,保存在/etc/rc.d/init.d下 
改變文件屬性:chmod 755 weblogic 
注重:在windows下編輯此文件時有DOS格式字符導致在linux下不能夠正常運行,建議用gedit 或用 vi編輯, shutdownweblogic函數中沒有加入錯誤控制,各位可以自己完善。 
2、 建立服務連接: 
要在重新啟動時停止weblogic,我們需要以下連結∶ 
[root@js-oracle init.d]# ln -s ../init.d/weblogic /etc/rc.d/rc0.d/K01weblogic 
[root@js-oracle init.d]