我们在 Windows Server 2003 虚拟机上安装了 Oracle 10g Enterprise Edition (10.2.0.1.0)。它最初是使用 Virtual Server 2005 R2 SP1 创建的,但现在已迁移到 Windows Server 2008 Hyper-V。
服务在系统启动时启动,但实例未启动。这个问题实际上是在从一台服务器迁移到另一台服务器后在虚拟服务器上发生的,但我设法用以下方法修复了它:
oradim -edit -sid ORCL -startmode auto
但现在这并没有什么效果。
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
同一文件夹中的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
注册表值ORA_ORCL_AUTOSTART
设置为TRUE
,因此它应该是自动启动的 - 您可以看到它正在尝试这样做。停止并重新启动时也会发生此问题Oracle服务ORCL服务。
我已启用 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
我猜测错误 2 是 Windows 错误 2(未找到文件),我尝试使用进程监视器监视 oradim.exe 重新启动服务,但是这似乎延迟了足够的时间以使其始终有效。
现在我遇到了一个糟糕的黑客问题,我创建了一个计划任务,oradim -startup -sid ORCL
在管理员帐户登录时运行,并将虚拟机设置为自动登录。我仍然想弄清楚为什么它不起作用。
答案1
为了进行测试,为服务添加依赖项可能是值得的。我想知道它是否试图过早启动。我以前见过类似的问题,不记得我们做了什么来修复它,但现在我们使用 Oracle 代理/网格控制来启动服务(即:代理 => 自动启动,Oracle => 手动,等等)。
答案2
运行tnsping .
转到带有参数文件的目录sqlnet.ora
编辑文件tnsnames.ora
并listener.ora
更正(HOST = your_db_host_name)
为hostname
命令运行返回的值
重新services.msc
启动 oracle 侦听器服务命名OracleOra....Listener
和实例服务命名OracleService....