本帖最后由 likeyouli 于 2025-6-19 17:27 编辑
[color=rgb(var(--ds-rgb-label-1))]在 Oracle 数据库成功启动但 systemctl status *oracle* 查询不到服务时,通常是因为 Oracle 数据库默认 不通过 systemd 管理,而是使用传统的启动脚本(如 dbstart/dbshut)。以下是详细解决方案: 1. 确认 Oracle 的启动方式Oracle 数据库通常通过以下方式启动: 手动启动:通过 SQL*Plus 执行 startup,首先切换su oracle用户,用root用户不行,然后sqlplus / as sysdba , 无需用sys用户登录,然后输入startup,或者startup force ,即可启动数据库及实例。 传统脚本:/etc/init.d/oracledb_ORCLCDB-19c 或 $ORACLE_HOME/bin/dbstart ( [root@192.168.1.131 ~]#/etc/init.d/oracledb_ORCLCDB-19cUsage: /etc/init.d/oracledb_ORCLCDB-19c {start|stop|restart|configure|delete} ) systemd 服务(需手动配置)
2. 检查现有 Oracle 服务文件运行以下命令,查看是否已有 Oracle 相关的 systemd 服务: [backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
ls /etc/systemd/system/*oracle*.service 2>/dev/nullls /usr/lib/systemd/system/*oracle*.service 2>/dev/null
如果无输出,说明未配置 systemd 服务。 3. 手动创建 systemd 服务文件(1)创建服务文件新建 /etc/systemd/system/oracle-19c.service: [backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
sudo vi /etc/systemd/system/oracle-19c.service
填入以下内容(根据实际路径修改): [backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]ini
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
[Unit]Description=Oracle Database 19cAfter=network.target[Service]Type=forkingUser=oracleGroup=oinstallEnvironment="ORACLE_HOME=/opt/oracle/product/19c/dbhome_1"Environment="ORACLE_SID=ORCLCDB"ExecStart=$ORACLE_HOME/bin/dbstart $ORACLE_HOMEExecStop=$ORACLE_HOME/bin/dbshut $ORACLE_HOMETimeoutSec=0[Install]WantedBy=multi-user.target
(2)设置权限并重载 systemd[backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
sudo chmod 644 /etc/systemd/system/oracle-19c.servicesudo systemctl daemon-reload
4. 启用并测试服务(1)启动服务[backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
sudo systemctl start oracle-19c
(2)检查状态[backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
sudo systemctl status oracle-19c
正常输出应显示 active (running)。 (3)设置开机自启[backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
sudo systemctl enable oracle-19c
5. 替代方案:使用 Oracle 官方脚本如果不想用 systemd,可以通过传统脚本管理: (1)修改 /etc/oratab确保数据库条目以 Y 结尾: [backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
ORCLCDB:/opt/oracle/product/19c/dbhome_1:Y
(2)使用 dbstart/dbshut[backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
sudo su - oracle$ORACLE_HOME/bin/dbstart $ORACLE_HOME # 启动$ORACLE_HOME/bin/dbshut $ORACLE_HOME # 关闭
6. 验证数据库状态无论通过哪种方式启动,最终验证: [backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]sql
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
sqlplus / as sysdbaSQL> SELECT status FROM v$instance;
应返回 OPEN。 常见问题解决[td]问题 | 解决方法 | | 服务启动失败 | 检查 journalctl -xe 和 $ORACLE_HOME/startup.log | | 权限不足 | 确保 oracle 用户有权限访问 $ORACLE_HOME | | ORACLE_HOME 未定义 | 在服务文件中明确定义环境变量 |
总结如果仍有问题,请提供以下信息:
[color=var(--ds-icon-button-text-color)]
[color=var(--ds-icon-button-text-color)]
[color=var(--ds-icon-button-text-color)]
[color=var(--ds-icon-button-text-color)]
使用 dbstart/dbshut 如何设置开机自启动oracle ?
[color=var(--ds-icon-button-text-color)]
[color=var(--ds-icon-button-text-color)]
[color=rgb(var(--ds-rgb-label-1))]
在 Oracle 数据库中,dbstart 和 dbshut 是官方提供的脚本,用于启动和关闭数据库实例。要让 Oracle 数据库 开机自动启动,可以通过以下步骤配置: 1. 确保 /etc/oratab 配置正确/etc/oratab 文件决定了哪些数据库实例会被 dbstart 自动启动。 (1)检查 /etc/oratab[backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
cat /etc/oratab
输出示例: [backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]text
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
ORCLCDB:/opt/oracle/product/19c/dbhome_1:Y
格式:SID:ORACLE_HOME:Y|N
Y 表示允许 dbstart 自动启动该数据库。 N 表示不自动启动。
(2)修改 /etc/oratab(如果需要)[backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
sudo vi /etc/oratab
确保你的数据库条目以 Y 结尾,例如: [backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]text
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
ORCLCDB:/opt/oracle/product/19c/dbhome_1:Y
保存并退出。 2. 创建 /etc/init.d/oracle 启动脚本为了让 dbstart 和 dbshut 在系统启动时自动运行,可以创建一个 init.d 脚本。 (1)创建 /etc/init.d/oracle[backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
sudo vi /etc/init.d/oracle
填入以下内容(根据实际情况修改 ORACLE_HOME 和 ORACLE_USER): [backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
#!/bin/bash# chkconfig: 345 99 10# description: Oracle auto start/stop scriptORACLE_HOME=/opt/oracle/product/19c/dbhome_1ORACLE_USER=oraclecase "$1" in start) echo "Starting Oracle Database..." su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME" ;; stop) echo "Stopping Oracle Database..." su - $ORACLE_USER -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME" ;; restart) echo "Restarting Oracle Database..." $0 stop $0 start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1esacexit 0
保存并退出。 (2)设置权限[backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
sudo chmod 755 /etc/init.d/oracle
3. 使用 chkconfig 或 systemctl 设置开机启动(1)chkconfig(适用于 SysVinit 系统,如 CentOS 6)[backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
sudo chkconfig --add oraclesudo chkconfig oracle on
检查是否生效: [backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
chkconfig --list oracle
预期输出: [backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]text
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
oracle 0:off 1:off 2:on 3:on 4:on 5:on 6:off
(2)systemctl(适用于 systemd 系统,如 CentOS 7/8, RHEL 7/8, Ubuntu 16.04+)[backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
sudo systemctl enable oracle
检查状态: [backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
sudo systemctl status oracle
4. 测试启动/关闭(1)手动测试启动[backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
sudo /etc/init.d/oracle start
或 [backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
sudo systemctl start oracle
(2)手动测试关闭[backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
sudo /etc/init.d/oracle stop
或 [backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
sudo systemctl stop oracle
(3)检查数据库状态[backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
sqlplus / as sysdba <<EOFSELECT status FROM v\$instance;EXIT;EOF
预期输出: [backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]text
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
STATUS--------OPEN
5. 重启服务器验证[backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
sudo reboot
重启后,检查 Oracle 是否自动启动: [backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]bash
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
ps -ef | grep pmon
预期输出: [backcolor=var(--ds-md-code-block-banner-wrap-background-color)][color=var(--dsr-text-2)]text
[color=var(--dsr-icon-fg-1)][color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
复制
[color=var(--button-text-color)][backcolor=var(--ds-button-color)][color=var(--button-icon-color)]
下载
oracle 12345 1 0 10:00 ? 00:00:00 ora_pmon_ORCLCDB
6. 常见问题排查[td]问题 | 解决方案 | | /etc/oratab 权限问题 | sudo chmod 644 /etc/oratab | | dbstart 报错 | 检查 $ORACLE_HOME/bin/dbstart 是否有执行权限 | | oracle 用户无法启动 | 确保 oracle 用户有权限访问 $ORACLE_HOME | | chkconfig 报错 | 确保脚本头部有 # chkconfig: 345 99 10 |
总结修改 /etc/oratab,确保数据库条目以 Y 结尾。 创建 /etc/init.d/oracle 启动脚本。 使用 chkconfig 或 systemctl 设置开机启动。 测试 start/stop 确保脚本正常工作。 重启服务器 验证自动启动是否生效。
这样,Oracle 数据库就会在系统启动时自动运行! 🚀
|