在笔记本操作系统 Win2008 64 位版,安装有 oracle express 11.2.0 版本。
另外有个台式机,Winxp , 装有同样的 oracle express。
之前一直用笔记本上的 oracle 正常。 在前两天,忽然发现 台式机 上的oracle 的 监听服务 OracleXETNSListener 不能启动了,反复检查没有发现问题的原因,无奈卸载了重新安装后,使用正常。
最近这两天 笔记本 连接台式机的 oracle 也正常。
可是今天忽然发现,笔记本上面的 oracle 监听服务也无法启动了,
用 lsnrctl start 命令启动,一直报下面错误:
监听该对象时出错: (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
TNS-12557: TNS: 协议适配器不可加载
TNS-12560: TNS: 协议适配器错误
TNS-00527: 协议适配器不可加载
在网上查了很长时间,也找到很多文章,但是大多的解决方法类似,
有的说 是 listener.ora 中 HOST 的 地址设错了,有的说是要改 注册表和 环境变量(这些文章 百度一下就可搜到很多)。
可是,我这里 注册表也没有问题,HOST 设定也没有问题,反复查找也没有发现问题。
仍然是无奈,甚至想到再卸载重装。
忽然在一篇文章中看到,在 listener.ora 文件中 设定:TRACE_LEVEL_LISTENER = 16,可以输出 trace log。
抱着试试看的想法,这样设定了,执行 lsnrctl start 命令后,
显示 了 trace 的输出路径:C:\oraclexe\app\oracle\product\11.2.0\diag\tnslsnr\THINK\listener\trace\ora_7320_8164.trc
打开看看吧,发现如下 log :
sntrf:LoadLibrary on C:\oraclexe\app\oracle\product\11.2.0\server\\bin\oranipc11.dll returned error(126)
加载 dll 文件失败??? 看看吧,果然,目录中没有这个文件。 网上down 下 oranipc11.dll,放入文件夹内,重新启动 成功。
具体原因仍然没有明白,真正是由于这个文件丢失了吗? 是什么时候丢失的呢?
这次的收获是,一个好的系统log是十分重要的,它可以帮你解决很多疑难问题。