代码改变世界

PB连接远程oracle

2012-07-05 16:09  chloe_zhou  阅读(2744)  评论(0编辑  收藏  举报

问题描述用PB做了一个局域网内C/S系统,客户端连接服务器端数据库,版本oracle 11g

解决方向

         在客户端安装oracle客户端 instantclient,当oracle客户端连接上服务器端的数据库后,客户端的pb程序可以通过instantclient自然连上服务器端数据库。

         之前一直将思路局限在PB程序本身怎么设置以定位远程数据库,纠结了较长时间,后来才发现由oracle来负责连接工作可以很简单的解决问题。设置好oracle客户端后,发布好的PB程序不用更改就可以直接上远程数据库。

具体步骤 

1. 服务器端oracle设置好监听器,监听客户端发出的连接请求。

    过程基本上都是选择默认和下一步,所以不截图了

    (1)  开始 --> 所有程序 --> Oracle-OraDb11g_home1 --> 配置和移植工具 --> Net Configuration Assistant  

    (2)  选择“监听程序配置”--> “添加” --> 监听程序名:LISTENER --> 选定协议:TCP --> 使用标准端口号 1521  --> 是否配置另一个监听程序?否

2. 配置oracle客户端

    (1) 在oracle官网上下载客户端文件,网址http://www.oracle.com/technetwork/indexes/downloads/index.html   ,选择DataBase下的Instant Client,选择要安装到的平

          台如    Instant Client for Microsoft Windows(32bit) ,下载如下三个文件:

           instantclient-basic-nt-11.2.0.3.0.zip
         instantclient-jdbc-nt-11.2.0.3.0.zip
         instantclient-sqlplus-nt-11.2.0.3.0.zip

         根据需要,可以http://www.anysql.net/software/ociuldr.zip下载coiuldr.zip,解压后将ociuldr.exe 复制到C:\instantclient_10_2,其中ociuldr.exe 是一个文本导出  工具.

   (2) 将下载的包解压,如解压到D:\instantclient_11_2下,解压后文件结构如下:

   


   (3) 从服务器上复制%ORACLE_HOME%\network\admin\tnsnames.ora也放到D:\instantclient_11_2中。其中%ORACLE_HOME%oracle的安装根目录,如

        D:\oracle11g\product\11.1.0\db_1

       tnsnames.ora中的内容是有关连接数据库的信息,服务器机器名(可以改成ip)以及oracle端口号,内容如下:

      

# tnsnames.ora Network Configuration File: E:\Program_Files\oracle11g\product\11.1.0\db_1\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.

 

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 1faac55af87947d)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

 

   (4) 客户端配置环境变量:在PATH中增加;D:\instantclient_11_2;新建SQLPATH,LOCAL,TNS_ADMIN,LD_LIBRARY_PATH四个环境变量名,变量值

       均为D:\instantclient_11_2;

   (5) 测试连接

        运行cmd

        c:>sqlplus /nolog

        conn system/oracle@//192.168.1.100:1521/orc11g  

          如果显示Connected则连接成功

3. 将发布好的PB程序放在客户端。其中pb程序中的连接信息不需要指定服务器的ip以及端口1521,因为pb客户端程序运行时会自动调用oracle客户端,从tnsnames.ora中获得服务器机器名以及oracle端口号。