zoukankan      html  css  js  c++  java
  • 关于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/

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

    作者: 风云 出处: http://www.cnblogs.com/fengyunlishi/ 本文版权归风云和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    第一次作业:准备
    结对项目-四则运算 “软件”之升级版
    第三次作业:个人项目-小学四则运算 “软件”之初版
    分布式版本控制系统Git的安装与使用
    第一次作业9.6
    C语言--数据类型
    C语言--函数
    C语言--嵌套循环
    C语言--输入输出格式
    DateGrip连接Oracle,MySQL
  • 原文地址:https://www.cnblogs.com/fengyunlishi/p/2519892.html
Copyright © 2011-2022 走看看