.net程序远程连接Oracle数据库2011-08-20 博客园 eaglet.net 远程连接Oracle数据库看起来挺简单的,但实际做起来还是遇到不少问题。把我今天折腾这个 东西的经验给大家共享吧。访问 oracle 数据库的方式很多,我用的是 OleDbConnection,这个没什么好说的,代码如下:1. 连接代码_OleDbConnection = new OleDbConnection(connectionString);
_OleDbConnection.Open();
2.连接字符串远程连接的连接字符串可以这样写provider=MSDAORA;host=192.168.1.1;data source=MyTest;user id=system;password=xxxprovider = MSDAORA; 指明oledb 的提供者是oracle数据库host 是远程 oracle 数据库所在服务器的IP地址,如果端口不是默认的 1521,还要加上一个 Port=xxxx;data source 是要访问的 oracle 数据库的名字user id 和 password 就不说了。要能够成功运行上面代码,我们必须在代码运行的机器上安装 oracle 的客户端,否则会报The Oracle(tm) client and networking components were not found 这个错误。3. 主机防火墙设置我的 Oracle 安装在 windows 2003 server 上,为了安全起见,必须设置防火墙我在 windows 2003 下将 1521 端口开放,发现无法连接数据库,抓包看了一下,oracle 客户端在 连接了 1521 后又去连接了一个随机的端口 1197查了一下资料,oracle 的 network listener 只起一个中介作用,当客户连接它时,它根据配置寻 找到相应的数据库实例进程,然后分配一个新的数据库连接,这个连接端口由network listener传递给 客户机,此后客户机就不再和network listener打交道了,而是和 oracle.exe 这个进程打交道了。这 个新的连接端口是不可预知的,因而会被防火墙阻止。要解决这个问题,网上查到的办法是采用共享套接字,这个方法应该是一个比较通用的办法,如何做 详见