记32位Oracle客户端登录报12560协议适配器错误的解决办法

国庆买了一台新电脑ThinkPad E431,i5双核CPU,8G内存,硬盘比较坑爹5400转的500G,重点是预装win8的64位简体中文版。大学时买了第一台电脑神舟笔记本,因为神舟电脑便宜,所以没有预装正版系统;工作了以后给老婆买了一台电脑惠普笔记本,当时一个朋友开店做惠普电脑代理,为了帮他开个张,就从他那里买的,他给装了个盗版winxp。其实心里还是很支持正版windows操作系统的,而且新公司给发的工作电脑又很破,严重影响工作心情,所以就买了联想的ThinkPad,于是乎就有了正版win8系统,而且还是64位的,我的内存8个G,怎么可能还用32位系统呢!然后就引出了今天的主题。。。

之前工作用Oracle 11g和pl/sql developer,由于用的32位win7,因此没有什么烦恼。可是现在用的64位系统(win8还是win7关系不大,本文的解决办法都适用,而且笔者在解决问题时也参考过win7 64位系统的解决方法),不能装32位Oracle服务器端数据库啊!那就从官网下了个64位的服务器端安装程序,然后度娘又说了,32位的pl/sql不能连64位Oracle数据库(这里可以看成是Oracle数据库服务器端程序直接带有客户端功能,当然Oracle还有专门的数据库客户端程序,也就是只有客户端功能,笔者感觉pl/sql是不能连64位客户端功能,即oci.dll)。看来笔者遇到的问题,前面都有无数人遇到了,感谢前人挖井!这里总结一下,64位windows操作系统,必须装64位Oracle数据库服务器端,pl/sql必须连接32位Oracle数据库客户端,那么就必须要下一个Oracle的32位客户端程序。我下了,然后安装了,这里注意一点:第二步选择管理员。然后问题出现了,先别说pl/sql能不能连上Oracle,就连sqlplus都连不上,输入用户名密码后,提示一个tns12560:协议适配器错误的报错信息。笔者也是Oracle新手啊,找问题原因期间遇到了无数次失败,又无数次地问度娘。这里说说度娘给的几点很有用的意见:1、OracleOraDb11g_home1TNSListener这个服务必须启动运行(注意11g_home1跟你安装数据库的版本以及路径有关系);2、OracleServiceORCL这个服务也必须启动运行(orcl与你Oracle数据库名称有关系);3、环境变量中最好设置变量名为oracle_sid,变量值为orcl的变量(orcl与你Oracle数据库名称有关系);4、启用和禁用用户名的命令是alter user scott account lock/unlock;(scott是一个用户名);5、用户启用后首次登录会提示更改预设密码,改为原密码也可以;6、还有人没有安装Oracle数据库32位客户端程序,而是安装了一个instant_client_basic(名字好像是这个,可能不准确)程序,然后仅将Oracle服务器端里的network/admin/文件夹下的配置文件复制到那个程序的文件夹中,且将pl/sql的OCI库设置到那个程序文件夹即可(这里表述不是很清晰,请有用这个方法的人自行百度,很多很全)。可是我的问题没解决呢!经过多番尝试,明确一点,那就是Oracle数据库服务器配置没有问题,用服务器端里的sqlplus能够正确连接并登录数据库。然后打开客户端的网络配置(NET Manager),发现里面没有服务,猜想是不是这里的问题呢?于是就将服务器端的网络配置打开,那里面已经配好了两个服务,其中一个就是我默认的orcl。然后参照里面的参数在客户端的网络配置中配置了一个一模一样的服务,这里有个小插曲,当时已经启用的scott这个用户,但是还没有登录过数据库,在配置最后一步进行测试时,默认用scott用户测试,结果报错,错误信息当时没看懂。于是用sqlplus登录scott用户(当然这是还用的服务器端的sqlplus),结果并没有立刻进去,而是提示请立即更改预设密码,这是回看刚才的报错,一样的信息嘛!更改以后,再到配置最后一步进行测试,提示连接成功。这次该到客户端的sqlplus中登录用户了,可惜还是登录不上去,到底为什么呢?这时回忆刚才度娘里那些前人给的说法,依稀记得有人用“用户名/密码@服务名”方式登录数据库,这种方式在之前导入导出数据库时也用过,于是就用这种格式尝试,sqlplus终于不提示协议适配器错误了,而是显示连接到数据库服务器中了,泪流满面啊!还差最后一步了,启动pl/sql developer程序,先不登录用户,点击取消按钮,直接进入软件,在工具-首选项-连接中(其实就是进入首选项后的第一个界面,用英文的朋友差不多能找到吧),Oracle主目录名选择下拉列表框中给出的选项即可,OCI库也是一样(这里注意一定要是客户端安装目录,比如路径中还有client_1这样的字眼,跟你安装客户端是的路径有关系,当然一般下拉列表框中给出的选项就是客户端的)。然后退出pl/sql程序,重新启动并进入,这时登录用户名为scott、密码为tiger、数据库为orcl,这几个值都跟个人的设置有关系,我这里给出的是默认值。然后pl/sql启动画面显示已连接,过几秒就进入软件主窗体界面,至此问题全都解决,可以在64位系统下使用Oracle数据库喽!

以上就是今天解决问题的全过程。真心想用64位操作系统,但是之前的内存太小,而且64位存在兼容问题,于是迟迟没有用。今天借着预装正版64位系统的东风,熟悉一下,并且解决了一个小问题。以后会坚定的走在64位平台上,服务器从win2008开始就没有32位了,而手机也快迈入64位了,我们开发人员不要固守32位系统了,当然如果你有需要,可以用虚拟机嘛,我的下一篇文章可能就是解决使用虚拟机碰到的问题。希望这篇文章能够帮到遇到同样问题的朋友!

你可能感兴趣的:(oracle)