由于项目需要,得使用Oracle数据库,版本为10G,平台是.NET。之前部署了一个在win2003下的虚拟机平台,能正常使用。
最近弄了个ESXI6.0的虚拟机,在上面安装了另外的一套win2003,准备把产品部署在上面。
Oralce安装好了,连接时就又来坑了。。搞了大半天。才搞好,现在记录一下。
最开始时使用netstat -an查看,1521端口没有在监听。在“服务”管理器里,看到****TNSListener服务也是没有启动,右键启动时,提示“***启动后又关闭***”。
各种百度、BING都看了,不知道什么问题。最后,查了一下环境变量:ORACLE_HOME,发现值为:c:\oralce,看了一下其他的配置,应该不对,改成了:c:\oracle\product\10.1.0\Db_1\,然后重启服务器,OK了,监听端口了,服务也提示是“已启动”状态。
但是,还是连接不上,提示:"System.Data.OracleClient 需要 Oracle 客户端软件 version 8.1.7 或更高版本"。这个问题在原来配置时也遇到,是版本不对,找了新版本后就能连接了。但是,这次使用的新版本,还是这样提示。头痛。。。。
百度查了,说是权限问题,按照上面的提示设置了权限,还是不行。。。又折腾了两小时,最后发现,我之前 设置的权限是针对Administrators和ASPNET账户的。iis6下要给BIN文件夹设置Network Service组全部权限,iisreset后就不提示了。
![](/qrcode.jpg)
好啦,不提示这个版本问题了,新问题又来了。。。
提示:"ORA-12514: TNS:listener does not currently know of service requested in connect descriptor"
字面意思是找不到指定的Service。看了一下listener.ora里,没有我指定的Service.使用lsnrctl status查看,也没看到指定Service名称的实例在运行。
好了,就是它了,打开listener.ora,添加:
(SID_DESC =
(GLOBAL_DBNAME = oracle)
(ORACLE_HOME = /opt/oracle/product/9.2.0.4)
(SID_NAME = 服务名称)
)
重启监听,重启iis,数据库正常连接上了。