1. 前置条件
1.1 修改oratab
[oracle@orclasm ~]$ cat /etc/oratab
orcl:/u01/app/oracle/product/12.1.0/dbhome_1:Y# 将N改成Y
# oratab由root.sh脚本创建,在DBCA创建实例时也会更新这个文件
# 这里的参数(Y/N)是个开关作用,不会真正启动或关闭,具体开关由&ORACLE_HOME/bin/dbstart和dbshut实现,执行时会先检查oratab的参数,为Y时才会继续执行.
1.2 修改启动和关闭脚本
[oracle@orclasm ~]$ cat $ORACLE_HOME/bin/dbstart
ORACLE_HOME_LISTNER=$ORACLE_HOME# 将$1改成$ORACLE_HOME
[oracle@orclasm ~]$ cat $ORACLE_HOME/bin/dbshut
ORACLE_HOME_LISTNER=$ORACLE_HOME# 将$1改成$ORACLE_HOME
2. 方式一:配置Oracle服务
2.1 编辑启动脚本
[root@orclasm ~]\# cat /etc/rc.d/init.d/oracle
#!/bin/bash
# chkconfig: 345 99 10
# description: Startup Script for Oracle Databases
# /etc/rc.d/init.d/oracle
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
ORA_OWNR="oracle"
# if the executables do not exist -- display error
if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi
# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display
case "$1" in
start)
# Oracle listener and instance startup
echo -n "Starting Oracle: "
su - $ORA_OWNR -c "$ORACLE_HOME/bin/dbstart"
su - $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl start"
touch /var/lock/Oracle
su - $ORA_OWNR -c "$ORACLE_HOME/bin/emctl start dbconsole"
#su - $ORA_OWNR -c "$ORACLE_HOME/bin/isqlplusctrl start"
echo "OK"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
su - $ORA_OWNR -c "$ORACLE_HOME/bin/emctl stop dbconsole"
#su - $ORA_OWNR -c "$ORACLE_HOME/bin/isqlplusctrl stop"
su - $ORA_OWNR -c "$ORACLE_HOME/bin/dbshut"
su - $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl stop"
rm -f /var/lock/Oracle
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: `basename $0` start|stop|restart|reload"
exit 1
esac
exit 0
#
2.2 脚本授权
chown oracle /etc/init.d/oracle
chmod 775 /etc/init.d/oracle
chkconfig --add /etc/init.d/oracle
2.3 创建服务
chkconfig --add oracle
chkconfig oracle on# 或 chkconfig --level 2345 oracle on
# 检查服务状态
chkconfig --list oracle
Oracle0:off1:off2:on3:on4:on5:off6:off
# 测试正常service oracle stop/start/restart
# 重启OS查看是否正常启动
3. 方式二:配置rc.local文件(推荐)
3.1 编辑rc.local文件
# 增加一行
[root@orclasm ~]\# Vi /etc/rc.d/rc.local
su - oracle -c 'dbstart $ORACLE_HOME' # 也可以写成 su - oracle -c $ORACLE_HOME/bin/dbstart
# 或者
export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
su - oracle -c $ORACLE_HOME/bin/dbstart
export ORACLE_UNQNAME=orcl
su - oracle -c "$ORACLE_HOME/bin/emctl start dbconsole"
# 说明:
#1)、/etc/rc.local是/etc/rc.d/rc.local的软连接
#2)、由于dbstart脚本中已包含了启动listener监听服务,所以此处不需要添加lsnrctl start命令行:
#su - oracle -lc "/u01/app/oracle/product/12.1.0/dbhome_1/bin/lsnrctl start"
#3)、由于dbstart($ORACLE_HOME/bin/dbstart)脚本中将ORACLE_HOME_LISTNER=$1,所以dbstart后要增加$ORACLE_HOME,即将$ORACLE_HOME作为参数传递给$1;
#4)、如果将dbstart中的$1修改为$ORACLE_HOME,那么此行的$ORACLE_HOME就不再需要,即新增加的一行为
#su - oracle -c 'dbstart'即可
#5)、若环境中没有EM,可以不用配置UNQNAME和启动emctl这两行
3.2 脚本授权
[root@orclasm ~]\# chmod +x /etc/rc.d/rc.local
# 监测是否生效
[root@orclasm ~]\# export ORACLE_HOME=/u01/app/oracle/product/12.1.0/dbhome_1
[root@orclasm ~]\# su - oracle -c $ORACLE_HOME/bin/dbstart
# 再重启OS验证
4. 小结
如果多个实例,oratab的参数都是Y,那么都会开机自启
监听也会开机自启(dbstart脚本包含监听自启)
启动和关闭日志:$ORALCE_HOME下的startup.log和shutdown.log