真是触霉头啊,我没搞什么啊,上网搜搜看,看看有谁跟我同病相连。
百度搜出来的大多是一个毛病,说是优化大师把Oracle在注册表里关于监听程序的一个键值误删了,导致在services里面监听程序的可执行文件路径为空,解决办法当然是手动加了:
以下虚线内为转载:
------------------------------------------------------------------------------------
在控制面板/管理工具/服务中双击打开OracleOraHome92TNSListener的服务看到其“可执行文件的路径”一栏为空时的处理方法:首先运行regedit.exe启动注册表编辑器,在HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/下的Services和CurrentControlSet/Services下找到OracleOraHome92TNSListener项,在右边窗口按右键,新建/字符串,取名ImagePath。
双击新见的建,在“数值数据”项输入D:\oracle\ora92\bin\TNSLSNR.EXE(根据你自己的实际情况进行修改),确定完成。
再次在服务中双击打开OracleOraHome92TNSListener的服务看到其“可执行文件的路径”一栏已经显示了其正确的值。这时你可以启动监听了!
TNSlistener服务不能启动的大致原因,我们首先都会去怀疑listener.ora文件是否配置正确,这是其一,我也见到过,因为listener.ora配置不当,引起端口1521冲突,从而造成无法启动的问题,错误如上。另外有的时候,我们重新配置一下监听,可能这类问题也能解决,这是其二。这里强调的是一种比较隐蔽的错误,需要我们留意!由于我们多次在同一台机器上安装Oracle,不管版本是否相同,只要Oracle没有卸载干净也有可能引发如题的错误!原因就是:多次安装,Oracle卸载不干净,注册表删除不彻底,造成listener的路径错误!
------------------------------------------------------------------------------------
但是我的问题并不是没有可执行文件路径啊~~见鬼了,我又手动启动了几次服务,跳出来这样的message,真是丈二和尚了。。。

开始怀疑Mcafee防火墙的问题,但是关了防火墙,问题依旧,没办法,只有看listener.ora了。这一看,才发觉在listener.ora中Host一句中定义计算机的完整名称不对,原来是上次我自己装IIS的时候,嫌弃原来的名字难看,随手改了,忘记在这里改啦~
于是这就好办了,手动更新一下listener.ora和tnsnames.ora中有关(Host=计算机名)的字符串。(不改tnsnames.ora连接数据库会超时)问题解决。
问题不算大,但是却很容易忽视,起码在网上没搜到,以后还是先看看这两个监听文件有没有配置对的为好。
