记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位系统了,当然如果你有需要,可以用虚拟机嘛,我的下一篇文章可能就是解决使用虚拟机碰到的问题。希望这篇文章能够帮到遇到同样问题的朋友!
记32位Oracle客户端登录报12560协议适配器错误的解决办法的更多相关文章
- 报错:尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。
问题: 在写windows服务时,发布后日志报错:尝试加载 Oracle 客户端库时引发 BadImageFormatException.如果在安装 32 位 Oracle 客户端组件的情况下以 64 ...
- 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。
从10G开始,Oracle提供了一个较为轻量级的客户包,叫做Instant Client. 将它安装好后,就不用再安装庞大的Oracle Client了. 这样一来,只要客户端下载Instant Cl ...
- 如果在安装32位oracle 客户端组件时的情况下以64位模式运行,将出现问题
今天要写个程序,环境是win7+ vs2008+ oracle.首先得保证能连接到数据库.确认代码是没有问题的,但是拿过来直接.报错: “尝试加载 Oracle 客户端库时引发 BadImageFor ...
- “尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。”
远程连接服务器的数据库调试WCF程序时,可以正常访问数据库,但将程序发布成站点部署在数据库所在的服务器之后,一直报错,通过try/catch捕获得到以下报错信息: System.Exception: ...
- Asp.net 程序连接orcle如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,
本人使用orcale11g 安装orcale 之类以及navicat配置在这里不提,之后会写一篇文章来说明. 到此已经安装和配置navicat访问数据正常,但是运行Asp.net 程序报错 问题如下 ...
- 如何在安装32位Oracle客户端组件的情况下以64位模式运行
C#使用System.Data.OracleClient连接Oracle数据库.之前在WinXP上正常运行的程序移植到Windows 2008 x64上之后就连不上数据库了,错误信息如下:启动data ...
- webservice 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下运行,将出现此问题
最近做的项目中,应用服务器迁移到另外一台服务器,操作系统升级为win10,配置好IIS里的应用程序发布网站和Webservice网站后, 客户端程序调用Webservice出错: “尝试加载 Orac ...
- IIS发布后出现“如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题”错误
VS2010运行程序没有任何问题,但是发布到IIS以后,连接数据库时报错:“尝试加载 Oracle 客户端库时引发 BadImageFormatException.如果在安装 32 位 Oracle ...
- 运行时报:尝试加载 Oracle 客户端库时引发 BadImageFormatException,如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题
运行环境为: Windows Server2012 Oracle11g 32位数据库+客户端 IIS发布后提示错误信息: “尝试加载 Oracle 客户端库时引发 BadImageFormatExc ...
随机推荐
- C++中argc和argv
C++中argc和argv C/C++中关于main()函数中argc 和argv[]的说明 main(int argc,char *argv[]); argc代表命令行输入参数的个数 argv存储了 ...
- 多线程 用户级线程和内核级线程 from C++多核高级编程
转 http://book.51cto.com/art/201006/206946.htm 6.1.1 用户级线程和内核级线程 2010-06-21 20:37 齐宁/董泽惠 译 清华大学出版社 字号 ...
- C++中的异常处理(三)
C++中的异常处理(三) 标签: c++C++异常处理 2012-11-24 23:00 1520人阅读 评论(0) 收藏 举报 分类: 编程常识(2) 版权声明:本文为博主原创文章,未经博主允许 ...
- github和bitbucket
注册一个github跟注册一个163的邮箱一样容易 页面中 div方块的 布局和 尺寸, 主要是考虑功能/ 结构/布局, 基本上与其中的内容 的多少无关: 即使内容/文字很少, 也还是要那么宽的尺寸 ...
- C#表达式树的初步了解
在很早以前就听说过表达式树了,但并没有去了解它.虽然自己用过linq to sql和linq to entity,但也就用着就用着,并没有去深究c#代码怎么会生成sql代码而不是IL.废话不多说了,开 ...
- 【整理】Angularjs 监听ng-repeat onfinishrender事件
http://stackoverflow.com/questions/15207788/calling-a-function-when-ng-repeat-has-finished http://ww ...
- 【一个iOS官方文档错误】关于keyWindow是否可以接受触摸事件?
[一个iOS文档错误]关于keyWindow是否可以接受触摸事件? 关于keyWindow,官方文档有一个解释: 同一时间只有一个window可以成为keyWindow,keyWindow可以接受 ...
- 字符串模拟赛T3
只看我的做法就够了 #include<iostream> #include<cstdio> #include<string> #include<cstring ...
- 简单聊下Unicode和UTF-8
今晚听同事分享提到这个,简单总结下. ## Unicode字符集 Unicode的出现是因为ASCII等其他编码码不够用了,比如ASCII是英语为母语的人发明的,只要一个字节8位就能够表示26个英文字 ...
- POJ 3020 Antenna Placement
Antenna Placement Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5645 Accepted: 2825 Des ...