【问题标题】:How to configure SQL Server database into TNSNAME.ora?如何将 SQL Server 数据库配置为 TNSNAME.ora?
【发布时间】:2018-05-14 04:24:32
【问题描述】:

我创建了一个指向 Oracle 数据库的数据库链接,指向一个 SQL Server 数据库。 如果为此 SQL Server 数据库正确配置了 ODBC。 我还在 Oracle 数据库服务器上安装了适用于 SQL Server 的 Oracle 网关。

当我尝试在我的 Oracle 数据库上执行此 SQL 请求时:

SELECT * FROM obbud@qualiactst

(qualiactst is my DBLink :
-- PROMPT CREATE DATABASE LINK qualiactst
CREATE DATABASE LINK qualiactst
  CONNECT TO iac IDENTIFIED BY ***** USING 'RIATST';

)

错误信息显示如下:

ORA-12154: TNS : could not resolve the connect identifier specified

我已经用这个配置了我的 Oracle 数据库服务器的 tnsname.ora 文件:

RIATST =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = grensql2k12R2-1)(PORT = 14539))
    )
    (CONNECT_DATA = (SID = RIATST))
    (HS=OK)
  )

(但我真的不知道是否必须将非 oracle 数据库添加到 tnsname.ora 中)

我不明白我做错了什么,以及是否缺少某些东西。

你能帮帮我吗? 非常感谢

珍妮

【问题讨论】:

    标签: sql-server database oracle dblink


    【解决方案1】:

    您似乎没有在目标主机 (grensql2k12R2-1) 上设置侦听器或未配置 HS 初始化文件。

    一般情况下,请尝试关注this guide。有太多细节无法在一个答案中检查每一个。

    【讨论】:

      【解决方案2】:

      用于与异构 MSSQL 数据库进行通信。有两种选择。

      1) 为 SQL Server 使用专门的 Oracle 数据库网关。 Configuring Oracle Database Gateway for SQL Server 2) 用于 ODBC 的 Oracle 数据库网关。 Configuring Oracle Database Gateway for ODBC

      为 SQL Server 配置 Oracle 数据库网关的简单示例

      ORACLE_HOME\dg4msql\admin\initdg4msql.ora

         HS_FDS_CONNECT_INFO=host_name:port_name//database_name
      

      ORACLE_HOME\network\admin\listener.ora

      SID_LIST_LISTENER=
      
      ############# MS SQL ####################
         (SID_LIST=
            (SID_DESC= 
               (SID_NAME=dg4msql)
               (ORACLE_HOME=oracle_home_directory)
               (PROGRAM=dg4msql)
            )
         )
      ##########################################
      

      重启监听

      lsnrctl stop
      lsnrctl start
      

      ORACLE_HOME\network\admin\tnsnames.ora

      connect_descriptor_mssql=
         (DESCRIPTION=
            (ADDRESS=
               (PROTOCOL=TCP)
               (HOST=host_name_oracle_gateway_host)
               (PORT=port_number_listener_1521)
            )
            (CONNECT_DATA=
               (SID=dg4msql))
            (HS=OK))
      
      
      
      SQL> CREATE PUBLIC DATABASE LINK name_dblink CONNECT TO "user" IDENTIFIED BY "password" USING 'connect_descriptor_mssql';
       SQL> SELECT * FROM DUAL@dblink;
      

      来自生产服务器 Oracle 11.2.0.4 的示例

      /home/oracle/app/oracle/product/11.2.0/dbhome_1/dg4msql/admin/inittch7.ora

         HS_FDS_CONNECT_INFO=[10.89.250.87]:1433/
      

      /home/oracle/app/oracle/product/11.2.0/dbhome_1/dg4msql/admin/inittch7.ora

       HS_FDS_CONNECT_INFO=[10.89.250.88]:1433/
      

      /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

      LISTENER =
        (DESCRIPTION_LIST =
          (DESCRIPTION =
            (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1525))
            (ADDRESS = (PROTOCOL = TCP)(HOST = 10.89.251.242)(PORT = 1521))
          )
        )
      
      SID_LIST_LISTENER =
        (SID_LIST =
          (SID_DESC =
              (GLOBAL_DBNAME = ssps)
              (ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/dbhome_1)
              (SID_NAME = ssps)
          )
           (SID_DESC=
              (SID_NAME=tch8)
              (ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1)
              (PROGRAM=dg4msql)
                )
          (SID_DESC=
               (SID_NAME=tch7)
               (ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_1)
               (PROGRAM=dg4msql)
               )
      
        )
      ADR_BASE_LISTENER = /home/oracle/database
      

      /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora

      SSPS_1 =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.89.251.242)(PORT = 1521))
          (CONNECT_DATA =
            (SERVER = DEDICATED)
            (SERVICE_NAME = ssps)
          )
        )
      
      
      
      atch7 =
        (DESCRIPTION=
            (ADDRESS=(PROTOCOL=tcp)(HOST= 10.89.251.242)(PORT=1521))
            (CONNECT_DATA=(SID=tch7))
            (HS=OK)
          )
      
      
      atch8 =
        (DESCRIPTION=
            (ADDRESS=(PROTOCOL=tcp)(HOST=10.89.251.242)(PORT=1521))
            (CONNECT_DATA=(SID=tch8))
            (HS=OK)
          )
      
      
      
      
       CREATE DATABASE LINK ATCH7.GIFT.KRSK.MPS
            CONNECT TO "asuzm_link" IDENTIFIED BY <ENTER USER PASSWORD HERE>
            USING 'atch7'
          /
      
      CREATE DATABASE LINK ATCH8.GIFT.KRSK.MPS
        CONNECT TO "asuzm_link" IDENTIFIED BY <ENTER USER PASSWORD HERE>
        USING 'atch8'
      /
      

      【讨论】:

        猜你喜欢
        • 2021-09-15
        • 2019-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-15
        相关资源
        最近更新 更多