# 配置开机启动服务
# 切换到oracle账号
su - oracle
# 查找监听服务路径
whereis lsnrctl
# 创建oracle指令shell脚本
# 创建 启动 数据库实例脚本
vim /data/oracle/scripts/dbstart.sh
# 文件内容为:
sqlplus / as sysdba <<EOF
startup;
EOF
# 创建 重启 数据库实例脚本
vim /data/oracle/scripts/dbrestart.sh
# 文件内容为:
sqlplus / as sysdba <<EOF
shutdown immediate;
startup;
EOF
# 创建 关闭 数据库实例脚本
vim /data/oracle/scripts/dbshut.sh
# 文件内容为:
sqlplus / as sysdba <<EOF
shutdown immediate;
EOF
# 文件授权(给文件加上执行权限)
# 进入 /data/oracle/scripts/ 目录(下面图片中忘记截图了)
cd /data/oracle/scripts/
# 切换root账号
su root
# 文件授权
chmod +x ./dbstart.sh
chmod +x ./dbrestart.sh
chmod +x ./dbshut.sh
# 配置启动服务 -> oracle.service 和 -> lsnrctl.service
# 切换 oracle 账号
su oracle
# 进入 /usr/lib/systemd/system 目录
cd /usr/lib/systemd/system
# 创建当前目录下的 oracle.service 文件
vim ./oracle.service
# 内容为:
[Unit]
Description=Oracle RDBMS
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/su - oracle -c "/data/oracle/scripts/dbstart.sh >> /tmp/oracle.log"
ExecReload=/usr/bin/su - oracle -c "/data/oracle/scripts/dbrestart.sh >> /tmp/oracle.log"
ExecStop=/usr/bin/su - oracle -c "/data/oracle/scripts/dbshut.sh \>\> /tmp/oracle.log"
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
# 查询 oracle 的安装目录
echo $ORACLE_HOME
# 创建当前目录下的 lsnrctl.service 文件
vim ./lsnrctl.service
# 内容为:
[Unit]
Description=Oracle lsnrctl
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/su - oracle -c "/opt/oracle/product/19c/dbhome_1/bin/lsnrctl start >> /tmp/lsnrctl.log"
ExecReload=/usr/bin/su - oracle -c "/opt/oracle/product/19c/dbhome_1/bin/lsnrctl reload >> /tmp/lsnrctl.log"
ExecStop=/usr/bin/su - oracle -c "/opt/oracle/product/19c/dbhome_1/bin/lsnrctl stop >> /tmp/lsnrctl.log"
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
# 刷新服务配置文件
systemctl daemon-reload
# 测试
# 执行脚本检查是否有问题
/usr/bin/su - oracle -c "/opt/oracle/product/19c/dbhome_1/bin/lsnrctl status >> /tmp/lsnrctl.log"
# 下面这个命令执行后需要稍等一会!
/usr/bin/su - oracle -c "/data/oracle/scripts/dbshut.sh \>\> /tmp/oracle.log"
# 切换 root 账号
su root
# 启动oracle服务
systemctl start oracle
# 重启oracle服务
systemctl restart oracle
# 关闭oracle服务
systemctl stop oracle
# 启动lsnrctl服务
systemctl start lsnrctl
# 重启lsnrctl服务
systemctl restart lsnrctl
# 关闭lsnrctl服务
systemctl stop lsnrctl
# 将 oracle 和 lsnrctl 服务设置为开机/关机自动启动/停止
# 把oracle实例服务设置为开机自启动
systemctl enable oracle
# 把oracle监听服务设置为开机自启动
systemctl enable lsnrctl
# 执行 systemctl stop oracle ,避免 oracle 因为异常关闭,而导致开机启动异常。
systemctl stop oracle
# 关机
reboot
# 稍等一会后,使用PLSQL连接,看看能否连接成功!