如何通过oradim命令在Windows系统上设置Oracle 19c数据库服务为自启动?

2026-05-03 06:541阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计883个文字,预计阅读时间需要4分钟。

如何通过oradim命令在Windows系统上设置Oracle 19c数据库服务为自启动?

相关专题

windows 上 oracle 19c 默认已注册为 windows 服务,无需手动用 oradim 配置自启动 —— 但必须确认服务启动类型是否设为“自动”,否则重启后数据库不会起来。

Oracle 19c 安装后自动生成哪些关键服务

安装完成时,Oracle 安装程序会自动调用 oradim 创建以下两个核心服务(名称取决于你设置的 ORACLE_SID,默认是 ORCL):

  • OracleServiceORCL:数据库实例服务,必须存在且设为“自动”
  • OracleOraDB19Home1TNSListener:监听器服务,也需设为“自动”

其他如 OracleRemExecServiceV2OracleVssWriterORCL 等非核心服务,不影响数据库自启,可保持“手动”或“禁用”。

检查并修改服务启动类型(GUI + 命令行双方式)

直接打开 services.msc 是最直观的方式,但容易漏看服务名细节;命令行更可靠,尤其批量管理时:

  • 以管理员身份运行 cmdpowershell
  • 执行:sc qc OracleServiceORCL 查看当前配置,重点确认 START_TYPE 是否为 DEMAND_START(手动)还是 AUTO_START(自动)
  • 若不是自动,执行:sc config OracleServiceORCL start= auto(注意 start= 后有空格)
  • 同样处理监听器:sc config OracleOraDB19Home1TNSListener start= auto
  • 最后启动服务:net start OracleServiceORCLnet start OracleOraDB19Home1TNSListener

为什么不用 oradim -new 重新创建服务

安装后已有服务,再用 oradim -new -sid ORCL -startmode auto 会报错 ORA-01031: insufficient privileges 或覆盖原有服务配置,导致:

  • 数据库参数文件(spfile)路径丢失或指向错误
  • 密码文件(orapwORCL)未被识别,/ as sysdba 登录失败
  • 监听器配置(listener.ora)与新服务不匹配,远程连接中断

除非你明确删除了原服务(比如误执行 oradim -delete -sid ORCL),否则不要重建 —— 直接改启动类型更安全。

验证自启动是否生效的实操步骤

改完启动类型后,别急着重启机器,先模拟一次冷启动流程:

  • 执行:net stop OracleServiceORCL(先停库)
  • 再执行:net stop OracleOraDB19Home1TNSListener(再停监听)
  • 然后:net start OracleOraDB19Home1TNSListener(先启监听)
  • 最后:net start OracleServiceORCL(再启库)
  • 连上验证:sqlplus /nologconn / as sysdbaselect status from v$instance; 应返回 OPEN

这个顺序不能反:监听器必须先于数据库启动,否则数据库启动时会报 ORA-12547: TNS:lost contact

真正容易被忽略的是监听器和数据库服务的依赖关系 —— Windows 服务管理器里看不到它们的启动顺序依赖,全靠人工保证先后。一旦监听器没起来,数据库即使设了“自动”,也会因超时失败而停留在“启动中”状态,日志里却只写一句 TNS-12560,查起来费时间。

本文共计883个文字,预计阅读时间需要4分钟。

如何通过oradim命令在Windows系统上设置Oracle 19c数据库服务为自启动?

相关专题

windows 上 oracle 19c 默认已注册为 windows 服务,无需手动用 oradim 配置自启动 —— 但必须确认服务启动类型是否设为“自动”,否则重启后数据库不会起来。

Oracle 19c 安装后自动生成哪些关键服务

安装完成时,Oracle 安装程序会自动调用 oradim 创建以下两个核心服务(名称取决于你设置的 ORACLE_SID,默认是 ORCL):

  • OracleServiceORCL:数据库实例服务,必须存在且设为“自动”
  • OracleOraDB19Home1TNSListener:监听器服务,也需设为“自动”

其他如 OracleRemExecServiceV2OracleVssWriterORCL 等非核心服务,不影响数据库自启,可保持“手动”或“禁用”。

检查并修改服务启动类型(GUI + 命令行双方式)

直接打开 services.msc 是最直观的方式,但容易漏看服务名细节;命令行更可靠,尤其批量管理时:

  • 以管理员身份运行 cmdpowershell
  • 执行:sc qc OracleServiceORCL 查看当前配置,重点确认 START_TYPE 是否为 DEMAND_START(手动)还是 AUTO_START(自动)
  • 若不是自动,执行:sc config OracleServiceORCL start= auto(注意 start= 后有空格)
  • 同样处理监听器:sc config OracleOraDB19Home1TNSListener start= auto
  • 最后启动服务:net start OracleServiceORCLnet start OracleOraDB19Home1TNSListener

为什么不用 oradim -new 重新创建服务

安装后已有服务,再用 oradim -new -sid ORCL -startmode auto 会报错 ORA-01031: insufficient privileges 或覆盖原有服务配置,导致:

  • 数据库参数文件(spfile)路径丢失或指向错误
  • 密码文件(orapwORCL)未被识别,/ as sysdba 登录失败
  • 监听器配置(listener.ora)与新服务不匹配,远程连接中断

除非你明确删除了原服务(比如误执行 oradim -delete -sid ORCL),否则不要重建 —— 直接改启动类型更安全。

验证自启动是否生效的实操步骤

改完启动类型后,别急着重启机器,先模拟一次冷启动流程:

  • 执行:net stop OracleServiceORCL(先停库)
  • 再执行:net stop OracleOraDB19Home1TNSListener(再停监听)
  • 然后:net start OracleOraDB19Home1TNSListener(先启监听)
  • 最后:net start OracleServiceORCL(再启库)
  • 连上验证:sqlplus /nologconn / as sysdbaselect status from v$instance; 应返回 OPEN

这个顺序不能反:监听器必须先于数据库启动,否则数据库启动时会报 ORA-12547: TNS:lost contact

真正容易被忽略的是监听器和数据库服务的依赖关系 —— Windows 服务管理器里看不到它们的启动顺序依赖,全靠人工保证先后。一旦监听器没起来,数据库即使设了“自动”,也会因超时失败而停留在“启动中”状态,日志里却只写一句 TNS-12560,查起来费时间。