关于OracleClient的链接问题

Oracle连接SDE,我相信搞GIS的,对这个话题应该不陌生了吧,不过让你们失望了,我不搞数据库,没那个能力啊,不过最近在研究一个项目的数据库连接时,发现了一个问题,供大家板砖。

先看一下Oracle的连接字符串

ConnString="Provider=MSDAORA;Persist Security Info=True;Data Source =yangzedong;Password =sde;User ID=sde"    

看完这个字符串,疑问来了:里面怎么没有主机服务器地址,那么我的连接字符串是怎么找到数据库服务器的啊,难道就是因为OracleClient?要是这样的话,用户用我们的软件岂不是还要安装OracleClient,那用户的负担也挺大的哦。

索性顺藤摸瓜:

       我把OracleClient里的IP换掉,提示:不能连接。

       我把OracleClient里的数据库网络名换掉,提示不能连接。

到这里,相信大家应该明了:

 

 

 

 

继续做实验:我把程序中的DataSource换成TNS监视程序里的连接字符串:

Provider=MSDAORA;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=XXXX)(PORT=1521)))(CONNECT_DATA=(SID=XXX)(SERVER=DEDICATED)));Persist Security Info=True;Password=sde;User ID=sde

同时把OracleClient客户端配置里的IP和网络名删除,返现仍然能够连接,这说明我第二次写的连接字符串已经绕过OracleClient了,直接和服务器连接了。但是这又产生一个问题,这个连接是绕过了客户端的配置呢,还是绕过了oracleclient的所有功能了,索性就试验到底吧。

接下来我们要先暂时屏蔽掉oracleClient(所谓屏蔽就是指,先让这个软件不能运行,但我不卸载它),怎么屏蔽呢?大家去网上查吧(给些提示:用“软件策略”在gpedit.msc面板里)。我将oracleClient屏蔽后,发现连接仍然可以用。那么可以确定了:新的连接字符串肯定是绕过了oracleClient的配置文件,至于有没有绕过oracleclientDLL就不确定了。

对于测试有没有绕过oracleclientDLL,最可怕了,只能把oracleclient卸载掉。舍不得孩子套不找狼啊,我就把oracleclient卸载掉了,再次链接,出现提示:

 

 

 

 

 

 

 

那就找到原因了:必须安装oracleclient客户端。

有人会问,非得安装吗?

       oracle要挣钱,你用了人家的服务端,就继续用客户端吧

       不用也行,把你再程序里用到的客户端类库,全部自己打包到你的程序里,但那样不太简单哦,而且还不敢保证安全性和稳定性。

我认怂了,还是安装OracleClient吧。

 

 

 

作者: 风云

出处: http://www.cnblogs.com/fengyunlishi/

本文版权归风云和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

 

posted @ 2012-05-27 10:35  风云@历史  阅读(312)  评论(0编辑  收藏  举报