适用于 Windows 的 Oracle 10g 不会在系统启动时启动

Mik*_*ick 7 oracle oracle10g

我们在 Windows Server 2003 虚拟机上安装了 Oracle 10g 企业版 (10.2.0.1.0)。它最初是使用 Virtual Server 2005 R2 SP1 创建的,但现在已迁移到 Windows Server 2008 Hyper-V。

服务在系统启动时启动,但实例未启动。从一台服务器迁移到另一台服务器后,这个问题实际上发生在虚拟服务器上,但我设法解决了它:

oradim -edit -sid ORCL -startmode auto
Run Code Online (Sandbox Code Playgroud)

但是,这现在没有效果。

oradim.log(在 %OracleHome%\database\oradim.log 中)说:

Thu Jun 10 14:14:48 2010
C:\oracle\product\10.2.0\db_3\bin\oradim.exe -startup -sid orcl -usrpwd * -log oradim.log -nocheck 0
Thu Jun 10 14:14:48 2010
ORA-12560: TNS:protocol adapter error
Run Code Online (Sandbox Code Playgroud)

同一文件夹中的 sqlnet.log 有:

Fatal NI connect error 12560, connecting to:
 (DESCRIPTION=(ADDRESS=(PROTOCOL=BEQ)(PROGRAM=oracle)(ARGV0=oracleorcl)(ARGS='(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))'))(CONNECT_DATA=(SID=orcl)(CID=(PROGRAM=C:\oracle\product\10.2.0\db_3\bin\oradim.exe)(HOST=ORACLE-VM)(USER=SYSTEM))))

  VERSION INFORMATION:
        TNS for 32-bit Windows: Version 10.2.0.1.0 - Production
        Oracle Bequeath NT Protocol Adapter for 32-bit Windows: Version 10.2.0.1.0 - Production
  Time: 10-JUN-2010 14:14:48
  Tracing not turned on.
  Tns error struct:
    ns main err code: 12560
    TNS-12560: TNS:protocol adapter error
    ns secondary err code: 0
    nt main err code: 530
    TNS-00530: Protocol adapter error
    nt secondary err code: 2
    nt OS err code: 0
Run Code Online (Sandbox Code Playgroud)

ORA_ORCL_AUTOSTART注册表值设置为TRUE,所以它应该是自动启动-你可以看到它的努力。停止和重新启动OracleServiceORCL服务时也会出现此问题。

我启用了 SQL*Net 跟踪,它显示:

[10-JUN-2010 15:09:33.919] snlpcss: entry
[10-JUN-2010 15:09:34.419] snlpcss: Unable to spawn Oracle oracle     (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq))) orcl, error 2.
[10-JUN-2010 15:09:34.419] snlpcall: exit
Run Code Online (Sandbox Code Playgroud)

我预感错误 2 是 Windows 错误 2(未找到文件),我尝试使用 Process Monitor 监视 oradim.exe 重新启动服务,但这似乎延迟了事情,使其始终有效。

现在我有一个可怕的黑客,我创建了一个计划任务以oradim -startup -sid ORCL在管理员帐户登录时运行,并将 VM 设置为自动登录。我仍然想弄清楚为什么它不起作用。

Sim*_*lin 0

对于测试来说,添加对服务的依赖关系可能是值得的。我想知道是否开始得太早了。我过去见过类似的问题,不记得我们做了什么来修复它,但我们现在使用 Oracle 代理/网格控制来启动服务(即:代理 => 自动启动,Oracle => 手动, ETC)。