目的:
1) 实现 一键式启停 oracle 服务 如: /etc/init.d/oracle { start | stop | restart | status }
使用说明:
Linux下建立Oracle服务一键式启停操作步骤
1. 上传oracle脚本至/etc/init.d/oracle目录下,或拷贝代码至 vi /etc/init.d/oracle 需要赋值权限 chmod 750 /etc/init.d/oracle
2. 增加配置服务 /sbin/chkconfig --add oracle
3. 修改 vi /etc/oratab 文件
$ORACLE_SID:$ORACLE_HOME:Y #--是否自启动 示例xxxdb:/oracle/oradb/home:Y
使用命令补齐上面的变量 su - oracle -c 'echo $ORACLE_SID' ;su - oracle -c 'echo $ORACLE_HOME'
4. 测试验证 /etc/init.d/oracle
返回信息参考:Usage: /etc/init.d/oracle { start | stop | restart | status }
对应oracle代码参考:
#!/bin/bash
# Destription: Oracle Database Service
# Example : /etc/init.d/oracle { start | stop | restart | status }
# Auther : xxxxxxxxxx
# Date : 2015-1-15
# Shell functions sourced from /etc/rc.status:
. /etc/rc.status
# Reset status of this service
rc_reset
ORACLE_USER=oracle
ORA_HOME=$(su - oracle -c 'echo $ORACLE_HOME')
case "$1" in
start)
su - oracle -c '$ORACLE_HOME/bin/lsnrctl status' > /dev/null 2>&1; su - oracle -c '$ORACLE_HOME/bin/lsnrctl status listener_ora' > /dev/null 2>&1
if [ $? == 0 ]; then
echo -e "\\033[1;32m Oracle service has already been start \\033[1;37m"
else
su - $ORACLE_USER -c '$ORACLE_HOME/bin/dbstart $ORACLE_HOME' > /dev/null 2>&1
su - $ORACLE_USER -c "lsnrctl start" > /dev/null 2>&1; su - $ORACLE_USER -c "lsnrctl start listener_ora" > /dev/null 2>&1
$0 status > /dev/null 2>&1
echo -e "\\033[1;32m Oracle service start successfully \\033[1;37m"
fi
# Remember status and be verbose
rc_status -v
;;
stop)
su - oracle -c '$ORACLE_HOME/bin/lsnrctl status' > /dev/null 2>&1;su - oracle -c '$ORACLE_HOME/bin/lsnrctl status listener_ora' > /dev/null 2>&1
if [ $? == 0 ]; then
su - $ORACLE_USER -c '$ORACLE_HOME/bin/dbshut $ORACLE_HOME' > /dev/null 2>&1
su - $ORACLE_USER -c "lsnrctl stop" > /dev/null 2>&1; su - $ORACLE_USER -c "lsnrctl stop listener_ora" > /dev/null 2>&1
killall -9 -u $ORACLE_USER > /dev/null 2>&1
$0 status > /dev/null 2>&1
echo -e "\\033[1;32m Oracle service stop successfully \\033[1;37m"
else
echo -e "\\033[1;32m Oracle service has already been stop \\033[1;37m"
fi
# Remember status and be verbose
rc_status -v
;;
restart)
$0 stop > /dev/null 2>&1
$0 start > /dev/null 2>&1
$0 status
# Remember status and be verbose
rc_status
;;
status)
su - oracle -c '$ORACLE_HOME/bin/lsnrctl status' > /dev/null 2>&1; su - oracle -c '$ORACLE_HOME/bin/lsnrctl status listener_ora' > /dev/null 2>&1
if [ $? == 0 ]; then
echo -e "\\033[1;32m Oracle service running \\033[1;37m"
else
echo -e "\\033[1;32m Oracle service Stop \\033[1;37m"
fi
# Rmember status and be verbose
rc_status -v
;;
*)
echo "Usage: $0 { start | stop | restart | status }"
exit 1
;;
esac
rc_exit