zoukankan      html  css  js  c++  java
  • Oracle连接Db2

    因为有个业务场景需要访问客户DB2数据库的数据,我们使用的Oracle,百度一下是有方法的,本来以为很简单,没想到搞了一天,因为数据库版本都太老,使用的也少走了不少弯路,在此记录下来给需要的人借鉴。

    我们客户使用的是DB2 V9.7,我需要自己先本地测试再去连接客户数据库。IBM官网已经不再提供DB2 V9.7,网上找了很久找到一个这个版本IBM.DB2.Express-C.9.7数据库.db2exc_970_WIN_x86,将就用。win10系统安装不了,我是虚拟机win7安装成功。

    步骤安装好DB2。Oracle连接DB2是通过ODBC然后创建dblink连接,而且DB2 9.7 最高只支持Oracle 11C连接。

    配置ODBC

    1. 下载驱动v10.5fp1_ntx64_odbc_cli

    2. 解压并把驱动放到自己想安装到目录,进入到目录下的clidriverin路径里打开CMD

      执行命令安装驱动

      db2oreg1.exe -i
      

      如果是powellshell则是

      ./db2oreg1.exe -i
      
    3. 安装成功后通过win7的搜索打开ODBC可以看到刚才已经安装的驱动,如下图

      ODBC

      1. 添加系统DSN

        选择对应的驱动添加

        odbc配置

      添加ip、端口、数据库名称

      配置odbc

    4. 测试连接是否成功

      测试连接

      连接成功。

    5. 添加cfg配置文件,如果没有这个文件,在dblink连接时会报错:连接ORACLE到非Oracle系统时返回此信息:[IBM][CLI Driver] SQL1531N...

      error

      找到刚才安装odbc驱动的主目录下找到clidrivercfg路径下新建一个db2dsdriver.cfg配置文件,内容如下

      <!--  db2dsdriver.cfg data source -->
      <configuration>
         <dsncollection>
             <!-- alias=odbc数据源名称 其他自己依自己的情况填写  -->
            <dsn alias="testdb2" name="test" host="localhost" port="50000">
               <parameter name="UserID" value="***"/>
               <parameter name="Password" value="***"/>
            </dsn>
         </dsncollection>
      </configuration>
      

      文件创建好后重启DB2,测试文件是否无误,打开CMD进入到驱动安装目录下的clidriverin

      # 停止
      db2stop
      # 启动
      db2start
      # 检查配置 后面的testdb2自己改成自己的数据源名称
      db2cli validate -dsn testdb2
      

      出现如下提示说明无误,不然请根据提示排查问题

      [ Parameters used for the connection ]
      
      Keywords                  Valid For     Value
      ---------------------------------------------------------------------------
      DATABASE                  CLI,.NET,ESQL test
      HOSTNAME                  CLI,.NET,ESQL localhost
      PORT                      CLI,.NET,ESQL 50000
      USERID                    CLI,.NET      ********
      PASSWORD                  CLI,.NET      ********
      
      

    配置Oracle连接

    1. 配置initdg4odbc.ora

      找到Oracle安装目录下product11.2.0dbhome_1hsadmin路径的initdg4odbc.ora复制一份命名为inittestdb2.ora,名称就用init+数据源名称.ora。配置内容如下:

      # This is a sample agent init file that contains the HS parameters that are
      # needed for the Database Gateway for ODBC
      
      #
      # HS init parameters
      #
      HS_FDS_CONNECT_INFO = testdb2 # 自己配置的odbc数据源名称
      HS_FDS_TRACE_LEVEL = off # 是否开启日志记录 on off 
      
      
      #
      # Environment variables required for the non-Oracle system
      #
      #set <envvar>=<value>
      
      
    2. 配置listener.ora

      找到Oracle安装目录下product11.2.0dbhome_1NETWORKADMIN路径的listener.ora文件打开,里面原来的配置不要动在标识后面添加一条配置。配置内容如下:

      # listener.ora Network Configuration File: C:****product11.2.0dbhome_1
      etworkadminlistener.ora
      # Generated by Oracle configuration tools.
      
      SID_LIST_LISTENER =
        (SID_LIST =
          (SID_DESC =
            (SID_NAME = CLRExtProc)
            (ORACLE_HOME = C:****product11.2.0dbhome_1)
            (PROGRAM = extproc)
            (ENVS = "EXTPROC_DLLS=ONLY:C:****product11.2.0dbhome_1inoraclr11.dll")
          )
         # 在这里添加一条配置
         (SID_DESC=
            (SID_NAME=testdb2) # 这里改成自己配置的inittestdb2.ora文件里的名称
            (ORACLE_HOME=C:****product11.2.0dbhome_1) # **号自己替换成自己的路径
            (PROGRAM=dg4odbc)
         )
         # 这里结束
        )
      
      LISTENER =
        (DESCRIPTION_LIST =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
            (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
          )
        )
      
      ADR_BASE_LISTENER = C:appAdministrator
      
      
      
    3. 配置tnsnames.ora

      找到Oracle安装目录下product11.2.0dbhome_1NETWORKADMIN路径的tnsnames.ora文件打开,里面原来的配置不要动在标识后面添加一条配置。配置内容如下:

      # tnsnames.ora Network Configuration File: C:****product11.2.0dbhome_1
      etworkadmin	nsnames.ora
      # Generated by Oracle configuration tools.
      
      LISTENER_ORCL =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
      
      
      ORACLR_CONNECTION_DATA =
        (DESCRIPTION =
          (ADDRESS_LIST =
            (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
          )
          (CONNECT_DATA =
            (SID = CLRExtProc)
            (PRESENTATION = RO)
          )
        )
      
      ORCL =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
          (CONNECT_DATA =
            (SERVER = DEDICATED)
            (SERVICE_NAME = orcl)
          )
        )
      # 这里添加一条配置
      testdb2  = # 名称可以自定义
        (DESCRIPTION=
          (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521)) # 不用修改
          (CONNECT_DATA=(SID=testdb2)) # sid改成和listener.ora配置文件一样的sid名称
          (HS=OK)
        ) 
      
      
    4. 测试配置文件是否都正常

      打开CMD依次执行如下指令重启Oracle监听服务,如果没有报错就是正常的

      lsnrctl stop
      lsnrctl start
      
      服务摘要..
      服务 "CLRExtProc" 包含 1 个实例。
        实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
      服务 "testdb2" 包含 1 个实例。
        实例 "testdb2", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
      命令执行成功
      

    创建dblink并测试连接

    1. 创建dblink

      -- 参数依次为:dblink名称、用户名、密码、tnsnames.ora文件配置的服务名称
      create database link "oradb2" connect to "user" identified by "pwd" using 'testdb2';
      
      
    2. 测试连接

      select * from dual@oradb2
      

      查询到数据,大功告成。

    自己整了好久才搞定,因为找资料很多都是不太一样的,所以记录下来给需要的人参考。

    参考内容

    1. DB2安装教程
    2. Oracle通过DBlink连接DB2数据库
    3. ORACLE通过透明网关连接DB2
    4. db2 odbc配置

    发布地址

  • 相关阅读:
    three.js模型
    three.js贴图
    three.js材质
    three.js自定义形状
    border
    虚拟主机Dede程序安装
    万网虚拟主机目录
    ConcurrentHashMap
    Oracle中select使用别名
    单例模式
  • 原文地址:https://www.cnblogs.com/yehaia1/p/13143381.html
Copyright © 2011-2022 走看看