Linux渠道Oracle开机自启动设置
网上和官方文档已经有不少介绍怎么设置开机发动Oracle实例的文章(Linux渠道),不过以sysvinit和service这种方法居多。最近遇到了UAT环境的服务器打补丁后需求重启服务器的状况, 需求DBA去手艺发动Oracle实例的景象,和搭档评论,决定将UAT环境的Oracle实例启停设置成systemd服务,使其开机自发动,防止在服务器打补丁重启的状况下, 需求DBA去手艺发动Oracle实例。这样能够大大削减工作量。 下面是设置Linux渠道Oracle开机自发动的总结性文档,仅供参考。
试验环境:
操作系统版别: Red Hat Enterprise Linux release 8.10 (Ootpa)
数据库版别 : Oracle 19c
计划1
1. 修正oratab文件
修正/etc/oratab的装备,找到如下这样的装备(不同环境,ORACLE_SID以及Oracle装置途径或许不共同,以实际状况为准)
原始值:
gsp:/opt/oracle19c/product/19.3.0/db_1:N
修正后:
gsp:/opt/oracle19c/product/19.3.0/db_1:Y
在oratab文件中,ORACLE_SID:$ORACLE_HOME:<N|Y>,设置为Y时,表明答应Oracle实例开机自发动,当设置为N时,则不答应开机自发动。 这个文件里的装备只是起一个开关的效果, 其实它并不会详细的履行发动和封闭Oracle实例操作. 由于后边的脚本dbstart中会从oratab获取相关值,它相似一个参数装备文件。所以这一步至关重要。
[root@OraPrefTest system]# more /etc/oratab
# This file is used by ORACLE utilities. It is created by root.sh
# and updated by either Database Configuration Assistant while creating
# a database or ASM Configuration Assistant while creating ASM instance.
# A colon, ':', is used as the field terminator. A new line terminates
# the entry. Lines beginning with a pound sign, '#', are comments.
#
# Entries are of the form:
# $ORACLE_SID:$ORACLE_HOME:<N|Y>:
#
# The first and second fields are the system identifier and home
# directory of the database respectively. The third field indicates
# to the dbstart utility that the database should , "Y", or should not,
# "N", be brought up at system boot time.
#
# Multiple entries with the same $ORACLE_SID are not allowed.
#
#
gsp:/opt/oracle19c/product/19.3.0/db_1:Y
简略方法,能够运用下面指令修正
sed -i 's/:N/:Y/' /etc/oratab
2.修正dbstart
dbstart文件的详细途径为:$ORACLE_HOME/bin/dbstart
上述脚本在发动监听时,只发动了默许监听服务(LISTENER),不会发动命名的监听服务,假如你装备的是命名监听的话, 那么需求修正脚本,如下所示,假如你运用的是默许的监听服务的话,那么直接越过这一步。
--修正前
# Determine location of listener.log
mkdir -p -- $ORACLE_BASE_HOME/network/log
LOG=$ORACLE_BASE_HOME/network/log/listener.log
# Start Oracle Net Listener
if [ -x $ORACLE_HOME/bin/tnslsnr ] ; then
echo "$0: Starting Oracle Net Listener" >> $LOG 2>&1
$ORACLE_HOME/bin/lsnrctl start >> $LOG 2>&1 &
VER10LIST=`$ORACLE_HOME/bin/lsnrctl version | grep "LSNRCTL for " | cut -d' ' -f5 | cut -d'.' -f1`
export VER10LIST
else
echo "Failed to auto-start Oracle Net Listener using $ORACLE_HOME/bin/tnslsnr"
fi
--修正后
此处监听名为gsp,那么咱们调整为"$ORACLE_HOME/bin/lsnrctl start gsp"
# Determine location of listener.log
mkdir -p -- $ORACLE_BASE_HOME/network/log
LOG=$ORACLE_BASE_HOME/network/log/listener.log
# Start Oracle Net Listener
if [ -x $ORACLE_HOME/bin/tnslsnr ] ; then
echo "$0: Starting Oracle Net Listener" >> $LOG 2>&1
$ORACLE_HOME/bin/lsnrctl start gsp >> $LOG 2>&1 &
VER10LIST=`$ORACLE_HOME/bin/lsnrctl version | grep "LSNRCTL for " | cut -d' ' -f5 | cut -d'.' -f1`
export VER10LIST
else
echo "Failed to auto-start Oracle Net Listener using $ORACLE_HOME/bin/tnslsnr"
fi
别的,这儿不需求修正其它装备,网上有些文章修正"ORACLE_HOME_LISTNER=$1",其实这个看你的计划与思路,至少这儿无需修正其它任何代码。 由于调用dbstart脚本的时分,会传入参数。
3.设置dbshut
dbshut文件的详细途径为:$ORACLE_HOME/bin/dbshut
这儿跟过程2共同,假如是默许的监听服务,那么也请越过这一步。
修正前:
# Determine location of listener.log
mkdir -p -- $ORACLE_BASE_HOME/network/log
LOG=$ORACLE_BASE_HOME/network/log/listener.log
# Stop Oracle Net Listener