Windows环境下Oracle10g使用DBCA创建数据库时遇到ORA-12560协议适配器错误

Windows环境下Oracle10g使用DBCA创建数据库时遇到ORA-12560协议适配器错误
看到这个错误,首先想Windows环境下,都有哪些情况会出现ORA-12560?
1.注册表ORACLE_SID与实例名不一致
2.关于Oracle的服务没有启动
可是,现在是DBCA建库的过程,上述两项还没有就绪.
所以,一筹莫展.
按照界面上的关于日志保存路径的提示,查看日志
D:\oracle\product\10.2.0\db_1\cfgtoollogs\dbca\orcl\下无日志
D:\oracle\product\10.2.0\db_1\cfgtoollogs\dbca\trace.log
里面,也是充斥着ORA-12560协议适配器错误
不过,大致看到了一些有用的线索,出现错误之前,是调用的如下批处理
D:\oracle\product\10.2.0\admin\scripts\orcl.bat
打开此批处理,看到其中先创建了若干文件夹,然后
D:\oracle\product\10.2.0\db_1\BIN\oradim.exe -new -SID ORCL -startmode manual -spfile
所以,就手工尝试执行,看看结果
于是手工执行上述oradim命令行命令,提示:创建服务失败,服务已经存在.(由于当时抢时间,没有留下准确的提示)
于是,先使用操作系统命令sc delete OracleServiceORCL来删除服务
然后,再执行oradim测试,结果会提示:服务已标记为删除
重启计算机,反复删与建,均提示失败,要么是服务已经存在,要么是服务已标记为删除.
甚至,从\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services这个注册表分支下找到相应服务,通过删注册表分支的方法也尝试了.
还是不行.
做到这儿,其实也不难理解为什么提示ORA-12560了.因为DBCA创建过程中,此时此刻,应该是先创建服务成功,然后启动成功,接着继续.既然创建不成功,当然启动不成功,所以就跟数据库创建之后,没有启动Oracle服务一样的现象了.
总之,产生ORA-12560错误的原因是Oracle服务创建不成功.
最终,仔细检查下面几个注册表分支,让其下都没有OracleServiceORCL服务,
\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services
\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\services
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services
控制面板\管理工具\服务中,也没有相关服务
然后,DBCA建库成功!

后记:据查阅资料,对于CurrentControlSet与ControlSet001等的说明,众说纷纭,个人倾向于这样的观点:Current是保存的是当前的,而带数值001或002(或者其他)的,分别是保存最后一次正确的配置,或者是本次新增待下次启动生效的服务,或者是本次删除待下次启动真正删除的服务.不知道是否正确.

请使用浏览器的分享功能分享到微信等