• window下oralce10G使用dblink连接到mysql


    首先 需要确认系统是否存在odbc for mysql的驱动

    开始-》设置-》控制面板-》数据源->系统DSN-》添加 看是否存在 MYSQL-ODBC-5.X ANSI或者UNICODE的驱动

    如果没有去 oracle注册个账号  http://dev.mysql.com/downloads/connector/odbc/ 下载

    场景是 mysql数据库 上有个数据库是testlink 数据库testlink下有个表person



    安装完成后 必须在系统DSN中添加 一个odbc连接 (开始我使用user dsn结果报了一堆错 不知为何 改成系统DSN就ok 建议用系统DSN)

    我现在建立数据源名称是myodbc5


    点击test 能够成功 ok

    找到oracle的home目录

    一般是我们需要配置 tnsnames.ora的上两级目录

    比如 我的是 D:oracleproduct10.2.0db_2  下面可以通过 network/admin找到tnsnames.ora文件

    %ORACLE_HOME%自然就是D:oracleproduct10.2.0db_2

    %ORACLE_HOME%/hs/admin/

    新建一个文件

    init(数据库名而不是数据源名称).ora

    我的名称为 inittestlink.ora

    内容为:

    #oracle监听启动的时候会通过 tnsname下的描述符里的sid去找到对应init(SID名称).ora文件 找到对应HS_FDS_CONNECT_INFO的odbc数据源

    HS_FDS_CONNECT_INFO = myodbc5   #这里就是数据源的名称
    HS_FDS_SUPPORT_STATISTICS=FALSE
    HS_FDS_TRACE_LEVEL = debug

    找到 %ORACLE_HOME%NETWORKADMIN 找到tnsnames.ora 添加如下

    切记 SID是数据库名 而非数据源名称
    testlink =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        (CONNECT_DATA =
          (SID = testlink)
        )
        (HS = OK)
      )

    找到同一目录下的listener.ora


    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = d:oracleproduct10.2.0db_2)
          (PROGRAM = extproc)
        )
      )

    修改为 切记 SID_NAME 也是数据库名 不是数据源名称 PROGRAM 使用 dg4odbc,hsodbc(我这里用hsodbc成功 用dg4odbc失败)

    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = d:oracleproduct10.2.0db_2)
          (PROGRAM = extproc)
        )
        (SID_DESC =
         (SID_NAME = testlink)
         (ORACLE_HOME =D:oracleproduct10.2.0db_2)
         (PROGRAM = hsodbc)

        )

      )

    ok配置完成后打开cmd命令 输入命令 lsnrctl reload

    输入命令 lsnrctl status

    输入命令tnsping testlink

    一切ok

    创建dblink 切记不要用 create public  database link 否则会报错

    create  database link testlink11 connect to "root" identified by "123456" using 'testlink'; 

    或者

    create  database link testlink11 connect to "root" identified by "123456" using '(DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
        (CONNECT_DATA =
          (SID = testlink)
        )
        (HS = OK)
      )';


    使用 select * from testlink.person@testlink11  查询

    或者 select * from "testlink"."person"@testlink11

    或者 select * from "testlink.person"@testlink11

  • 相关阅读:
    L2-004. 这是二叉搜索树吗?
    CF934A A Compatible Pair
    CF937B Vile Grasshoppers
    CF940B Our Tanya is Crying Out Loud
    ZOJ 3182 Nine Interlinks
    ZOJ 3175 Number of Containers
    Codeforces Round #193 (Div. 2) B
    CodeForces 149D Coloring Brackets
    POJ 2653 Pick-up sticks(计算几何)
    UVA 12506 Shortest Names
  • 原文地址:https://www.cnblogs.com/liaomin416100569/p/9331318.html
Copyright © 2020-2023  润新知