前言:如果服务器断电重启,或在计划内重启,在服务器的操作系统启动后,需要手工启动Oracle实例与监听,如果忘记启动,将导致某些程序无法正常运行。同时,如果我们在重启操作系统之前忘记关闭Oracle,极大概率会导致数据丢失。所以接下来的文章为大家讲解Oracle如何配置开机/关机自动启动/关闭的。
本文使用的操作系统是:CentOS7
1、首先需要知道自己Oracle的安装根目录
如果不知道可以通过以下命令查看。
echo $ORACLE_HOME
结果如下:
2、启动Oracle数据库实例的shell脚本配置(一般安装Oracle自带)
启动Oracle数据库实例的脚本文件为/oracle/home/bin/dbstart,内容如下:
sqlplus / as sysdba <<EOF
startup;
EOF
使用如下修改脚本的权限为可执行(Oracle如果自带该脚本,默认可执行)。
chmod +x /oracle/home/bin/dbstart
3、重启Oracle数据库实例的shell脚本配置(如果没有此文件,请自己手动配置)
启动Oracle数据库实例的脚本文件为/oracle/home/bin/dbrestart,内容如下:
sqlplus / as sysdba <<EOF
shutdown immediate;
startup;
EOF
使用如下修改脚本的权限为可执行(Oracle如果自带该脚本,默认可执行)。
chmod +x /oracle/home/bin/dbrestart
4、关闭Oracle数据库实例的shell脚本配置(一般安装Oracle自带)
关闭Oracle数据库实例的脚本文件为/oracle/home/bin/dbshut,内容如下:
sqlplus / as sysdba <<EOF
shutdown immediate;
EOF
使用如下修改脚本的权限为可执行(Oracle如果自带该脚本,默认可执行)。
chmod +x /oracle/home/bin/dbshut
5、编写Oracle实例的系统服务配置文件
首先:我们需要切换到超级用户root,使用如下命令输入密码即可切换root用户。
su -
如果把实例服务命名为oracle,则创建服务配置文件/usr/lib/systemd/system/oracle.service,内容如下:
[Unit]
Description=Oracle RDBMS
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/su - oracle -c "/oracle/home/bin/dbstart >> /tmp/oracle.log"
ExecReload=/usr/bin/su - oracle -c "/oracle/home/bin/dbrestart >> /tmp/oracle.log"
ExecStop=/usr/bin/su - oracle -c "/oracle/home/bin/dbshut >> /tmp/oracle.log"
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
注意:
6、编写Oracle监听的系统服务配置文件
如果把监听服务命名为oracle,则创建服务配置文件/usr/lib/systemd/system/lsnrctl.service,内容如下:
[Unit]
Description=Oracle RDBMS
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/su - oracle -c "/oracle/home/bin/lsnrctl start >> /tmp/lsnrctl.log"
ExecReload=/usr/bin/su - oracle -c "/oracle/home/bin/lsnrctl reload >> /tmp/lsnrctl.log"
ExecStop=/usr/bin/su - oracle -c "/oracle/home/bin/lsnrctl stop >> /tmp/lsnrctl.log"
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
7、重新加载服务配置文件
systemctl daemon-reload
每次修改了服务配置文件后,需要重新加载它。
8、测试启动/停止/重启oracle和lsnrctl服务
启动oracle服务:
systemctl start oracle
重启oracle服务:
systemctl restart oracle
关闭oracle服务:
systemctl stop oracle
启动lsnrctl服务:
systemctl start lsnrctl
重启lsnrctl服务:
systemctl restart lsnrctl
关闭lsnrctl服务:
systemctl stop lsnrctl
9、把oracle和lsnrctl服务设置为开机/关机自动启动/关闭
把Oracle实例服务设置为开机自启:
systemctl enable oracle
把Oracle监听服务设置为开机自启:
systemctl enable lsnrctl
10、Oracle服务启动日志查看
上面在配置系统服务文件的时候指定了日志文件。
监听的启动日志在/tmp/lsnrctl.log文件中。
实例的启动日志在/tmp/oracle.log文件中。
注意:只有使用systemctl启动/关闭Oracle的实例和监听才会写入日志,包括开机自启,如果你用oracle用户使用dbstart和lsnrctl start等命令启动,是不会被写入日志的。