|
本帖最后由 likeyouli 于 2025-6-19 17:27 编辑 [color=rgb(var(--ds-rgb-label-1))] 在 Oracle 数据库成功启动但 systemctl status *oracle* 查询不到服务时,通常是因为 Oracle 数据库默认 不通过 systemd 管理,而是使用传统的启动脚本(如 dbstart/dbshut)。以下是详细解决方案: 1. 确认 Oracle 的启动方式 Oracle 数据库通常通过以下方式启动:
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]
总结
如果仍有问题,请提供以下信息:
[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
[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]
总结
这样,Oracle 数据库就会在系统启动时自动运行! 🚀 |
| 来学习学习 |
| 学习了 |
| 进来学习一下 |
|
本帖最后由 likeyouli 于 2025-6-19 22:04 编辑 占楼,另做他用 https://developer.aliyun.com/article/1637345开发者社区 数据库 文章 正文 Linux平台Oracle开机自启动设置2024-11-14195发布于河北 版权 简介: 【11月更文挑战第7天】本文介绍了 Linux 系统中服务管理机制,并详细说明了如何在使用 systemd 和 System V 的系统上设置 Oracle 数据库的开机自启动。包括创建服务单元文件、编辑启动脚本、设置开机自启动和启动服务的具体步骤。最后建议重启系统验证设置是否成功。 [color=rgba(0, 0, 0, 0.65)]
[Unit]Description = Oracle Database ServiceAfter = network.target[Service]User = oracleGroup = dbaType = simpleExecStart = /u01/app/oracle/product/11.2.0/dbhome_1/bin/dbstartExecStop = /u01/app/oracle/product/11.2.0/dbhome_1/bin/dbshutRestart = always[Install]WantedBy = multi - user.target
systemctl daemon - reload
systemctl enable oracle.service
systemctl start oracle.service
#! /bin/bash# chkconfig: 345 99 10# description: Oracle Database Service
chkconfig --add oradbchkconfig oradb on
service oradb start 无论是哪种方式,在设置完成后,最好重启系统来验证 Oracle 数据库是否能够自动启动。如果在启动过程中出现问题,可以查看系统日志(如/var/log/messages或/var/log/syslog)来查找故障原因。 |
Powered by Discuz! X3.3
© 2001-2017 Comsenz Inc.