品技(48):Win2000下Oracle客户端不能连接数据库

软件世界

  新栏目导言:常说软件开发需要创意、灵感,但应该是在掌握了基本的技能之后;也常说软件程序员技能枯燥单一,远不如系统分析师,但请不要过度贬低编码的力量,因为编码也有它的艺术。

  所以有了品技,一个只谈数据库前台开发技巧的栏目。你可能曾为了一个看似简单基本的问题,辗转数夜才豁然开朗;也可能为了莫名的调试错误,翻遍资料才得以解答;又或者你是一个初学者,一个最基本的问题却成了前行中不可逾越的高山。所以我们需要沟通,需要交流。阿志期待你的来信(liz@cpcw.com),将你的技能交由大家细细品味,不论技能的大小强弱,我们只希望它来自于你的工作和学习,是你最真切的体会。

  前几天单位新上了一个系统,由于业务上的需要,要为生产部门的办公微机安装一个Oracle客户端,与数据库服务器连接,通过软件做一些日常维护。我起初在WinXP上安装了Oracle8.1.7客户端,配置了Net8 Configuration Assistant,安装应用软件,一切顺利。

  完成后,我在另外一台办公PC上安装,这台PC和前面的配置一样,但使用的是Win2000的操作系统。安装Oracle8.1.7客户端,正常。配置Net8 Configuration Assistant,选择进入本地网络服务名配置,添加Oracle8i数据库或服务,服务名yz,选择数据库协议tcp,主机名:×.×.×.×,使用1521的标准端口号1521进行测试。选择网络服务名yz,系统问是否配置另一个网络服务名,回答否,再次进入本地网络服务名配置。接着准备测试,选择要测试的网络服务名yz,更改登录,以数据库提供的用户口令登录,系统提示:无监听器。

  怪事,监听器明明启动起来的,在WinXP下是正常的啊。进入开始菜单的运行,输入cmd,进入命令行方式,输入tnsping yz,系统提示:tns-12541:tns:无监听器。再进入控制面板,管理工具,服务,查看本地启动的服务,恢复默认值,将所有有关dns、tcp、snmp、route、network的服务启动起来,再重新测试,系统仍然说无监听器。看看Win2000的操作系统版本,打了SP1的补丁包,我想会不会是因为该操作系统版本太低了,立马下载Win2000 SP4补丁包。安装升级后想应该可以了吧,再进行测试,仍然报错:无监听器。

  这下我有点不知做什么好,另外找个Win2000的PC试试,同样是这个问题,换WinXP系统的PC试试,就完全正常,难道是Win2000不支持,不会吧。突然想起以前装lotus客户端的时候,在Win98的环境下,要在hosts.sam文件中手工添加服务器的IP和域名,但Win2000不存在这种状况啊。反正也是试试,打开hosts文件,手工添加IP、服务名,重启一下主机,再重新配置,测试成功。