Loading... ## 1. 前置条件 ### 1.1 修改oratab ```powershell [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 修改启动和关闭脚本 ```powershell [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 编辑启动脚本 ```bash [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 脚本授权 ```powershell chown oracle /etc/init.d/oracle chmod 775 /etc/init.d/oracle chkconfig --add /etc/init.d/oracle ``` ### 2.3 创建服务 ```powershell 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文件 ```bash # 增加一行 [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 脚本授权 ```powershell [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. 小结 ```bash 如果多个实例,oratab的参数都是Y,那么都会开机自启 监听也会开机自启(dbstart脚本包含监听自启) 启动和关闭日志:$ORALCE_HOME下的startup.log和shutdown.log ``` 最后修改:2022 年 04 月 07 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏