目录


1. 确认数据库当前状态

# 切换到 oracle 用户
su - oracle
# 检查监听器
lsnrctl status

# 检查数据库实例
sqlplus / as sysdba
SQL> select instance_name, status from v$instance;

运行状态下的话,关掉
# oracle 用户下执行
lsnrctl stop
sqlplus / as sysdba
SQL> shutdown immediate
SQL> exit

2. 配置 oratab 文件

# 用 root 用户修改最后一列为 Y
sudo vi /etc/oratab

在这里插入图片描述

3. 创建 systemd 服务文件

# 用 root 用户创建
su root
sudo vi /etc/systemd/system/oracle-19c.service

oracle-19c.service 文件内容

#定义服务的基本信息和依赖关系
[Unit]
#定义服务名称
Description=Oracle Database 19c
#控制启动顺序,在网络服务启动后,再启动Oracle,因为监听器需要网络
After=network.target



#程序运行核心配置-定义服务的启动/停止/重启行为
[Service]
#dbstart脚本执行后会退出,但是Oracle进程会继续在后台运行,所以用forking
Type=forking
#以Oracle用户运行脚本
User=oracle
#以oinstall运行脚本
Group=oinstall

#给当前服务设置的环境变量,此处与Oracle环境变量需一致
Environment="ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1"
Environment="ORACLE_SID=orcl"
Environment="PATH=/u01/app/oracle/product/19c/dbhome_1/bin:/usr/local/bin:/usr/bin:/bin"

# 启动命令 
#/u01/app/oracle/product/19c/dbhome_1/bin/dbstart  Oracle自带的启动脚本
#/u01/app/oracle/product/19c/dbhome_1 传给 dbstart 的参数,告诉它 ORACLE_HOME 在哪
ExecStart=/u01/app/oracle/product/19c/dbhome_1/bin/dbstart /u01/app/oracle/product/19c/dbhome_1

# 停止命令 
ExecStop=/u01/app/oracle/product/19c/dbhome_1/bin/dbshut /u01/app/oracle/product/19c/dbhome_1

# 重启策略 
#服务退出后不自动重启,自动重启有可能导致数据损坏
Restart=no



#开机自启配置-定义systemctl enable xxx 设置开机自启时,该服务挂载到哪个系统启动目标
#WantedBy=multi-user.target   Linux多用户字符界面
#target 层级 关机-救援模式-多用户模式-图形界面模式
[Install]
WantedBy=multi-user.target

4. 启用并测试服务

#重新加载 systemd 配置
sudo systemctl daemon-reload

#启用开机自启
sudo systemctl enable oracle-19c

#启动 Oracle 服务
sudo systemctl start oracle-19c

#查看服务状态
sudo systemctl status oracle-19c

在这里插入图片描述

5. 验证 Oracle 是否启动成功

# 切换到 oracle 用户
su - oracle

# 检查监听器
lsnrctl status

# 检查数据库实例
sqlplus / as sysdba
SQL> select instance_name, status from v$instance;

在这里插入图片描述

6. 开关机测试自启动配置是否成功

关机操作

su - oracle

# 1. 停止监听器
lsnrctl stop

# 验证监听状态(确认已停止)
lsnrctl status

# 2. 进入 SQL*Plus 停止数据库
sqlplus / as sysdba
SQL> shutdown immediate

#等待显示
Database closed.
Database dismounted.
ORACLE instance shut down.

#之后退出
SQL> exit

#关闭linux系统
sudo shutdown -h now

开机操作

# 开机登录后切换到 oracle
su - oracle

# 检查监听器
lsnrctl status

# 检查数据库
sqlplus / as sysdba
SQL> select instance_name, status from v$instance;

如果显示 OPEN,说明自启动配置成功!

在这里插入图片描述

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐