1.設置允許ORACLE系統自動啓動
root用戶下修改/etc/oratab文件
vim /etc/oratab
原數據
修改後的數據,保存退出即可
2.切換oracle用戶設置兩個文件
su - oracle
修改$ORACLE_HOME/bin/dbstart文件
vim $ORACLE_HOME/bin/dbstart
打開文件後找到箭頭所指的那行,將ORACLE_HOME_LISTNER=ORACLE_HOME. 保存退出即可
ORACLE_HOME_LISTNER=$ORACLE_HOME
修改$ORACLE_HOME/bin/dbshut文件
vim $ORACLE_HOME/bin/dbshut
打開文件後找到箭頭所指的那行,將ORACLE_HOME_LISTNER=ORACLE_HOME. 保存退出即可
ORACLE_HOME_LISTNER=$ORACLE_HOME
3.寫一個腳本,註冊成一個系統服務,讓它在開機與關機的時候運行,作用就是調用並執行dbstart和dbshu
root用戶在/etc/init.d目錄下創建一個腳本. 我創建的名稱是oracle_auto
vi /etc/init.d/oracle_auto
執行這個命令時裏面什麼都沒有,把下面的這些命令寫進去.保存退出即可
#!/bin/bash
# chkconfig: 2345 99 01
# description:Startup Script for oracle Databases
#/etc/rc.d/init.d/oracle_auto
ORACLE_HOME=/u01/app/oracle/product/12.2.0/dbhome_1
###顯示打印日誌的時間
DATE=`date "+%Y-%m-%d %H:%M:%S"`
if [ ! -f $ORACLE_HOME/bin/dbstart ]
then
echo "-----oracle cannot start-----"
exit
fi
if [ ! -f $ORACLE_HOME/bin/lsnrctl]
then
echo "-----lsnrctl cannot start-----"
exit
fi
case "$1" in
'start')
echo "-----startup oracle-----">> /var/log/oraclelog.log
su - oracle -c "$ORACLE_HOME/bin/dbstart"
touch /var/lock/subsys/oracle_auto
echo "-----startup oracle successful-----">> /var/log/oraclelog.log
echo "${DATE}">> /var/log/oraclelog.log
echo "OK"
;;
'stop')
echo "-----shutdown oracle-----">> /var/log/oraclelog.log
su - oracle -c "$ORACLE_HOME/bin/dbshut"
rm -f /var/lock/subsys/oracle_auto
echo "-----shutdown oracle successful-----">> /var/log/oraclelog.log
echo "${DATE}">> /var/log/oraclelog.log
echo "OK"
;;
reload|restart)
$0 stop
$1 start
;;
*)
echo "usage:'basename $0' start|stop|reload|restart"
exit 1
esac
exit 0
給腳本分配可以被執行的權限
chown oracle /etc/init.d/oracle_auto
chmod 775 /etc/init.d/oracle_auto
驗證腳本是否設置成功
service oracle_auto start
查看log,有信心代表設置成功
cat /var/log/oraclelog.log
讓腳本隨系統自動啓動
chkconfig oracle_auto on
查看設置結果
chkconfig oracle_auto --list
到此設置完成,重啓測試一下吧