【问题标题】:Connection to an Oracle Database连接到 Oracle 数据库
【发布时间】:2013-06-25 16:54:12
【问题描述】:

我最近选择了一个项目,我需要构建一些 SSIS 包,这些包从远程 Oracle 数据库中提取数据并将数据加载到 Sql Server 数据库中。 Oracle 数据库是旧的 32 位 Oracle 8i 数据库。 Sql Server 是 64 位 Sql Server 2008R2。

我可以从旧的 Win XP 工作站连接到 Oracle 数据库没有问题。当我尝试从 Sql Server 连接时,我无法设置握手。

我在 Sql Server 机器上安装了 Oracle Client 11g,将 tnsnames 文件从 Install\Network\Admin\Sample 复制到 Install\Network\Admin 并添加了适用于 XP 工作站的条目。当我尝试使用 Oracle ODBC Driver 创建 ODBC 连接时,我得到:

*无法连接 Sql State=08004 ORA-12154: TNS: 无法解析指定的连接标识符。*1

我的猜测是驱动程序找不到 TNS 文件。我还有什么需要配置的吗?我通过duckduckgo查看了异常代码,没有找到任何东西。

提前致谢。

【问题讨论】:

    标签: oracle odbc


    【解决方案1】:

    好的,我找到了 我必须进入环境变量并定义 ORACLE_HOME 路径。一旦我这样做了,它就连接了。

    This 的帖子让我走上了正轨。

    谢谢

    【讨论】:

      【解决方案2】:

      您必须同时使用 64 位或 32 位作为您的机器配置。确保您的服务器配置正确。

      【讨论】:

        【解决方案3】:

        这可能会帮助陷入“标识符未解决问题”的人: 如果您已经检查了环境变量:PATH、ORACLE_HOME、TNS_ADMIN,请仔细查看给定 dsn 的 tnsnames.ora 条目。我没有给出适当的缩进,因此失败了!

        这是带有准确缩进的条目:

        <dsn> =
           (DESCRIPTION =
            (ADDRESS = (PROTOCOL = TCP)(HOST = <server>)(PORT = <port>))
            (CONNECT_DATA =
              (SERVER = DEDICATED)
              (SERVICE_NAME = <servicename>) 
            )
          )
        

        【讨论】:

          【解决方案4】:

          我遇到了类似的问题,我在 TNS 服务名称列表中出现垃圾,并且测试连接需要很长时间。我发现这是由于 TNS_ADMIN 变量的系统环境变量设置中的拼写错误,我在目录之后有一个空格,例如 c:\oracle\instantclient_ (其中 _ 是一个空格) 删除并更正了列表垃圾并立即连接。

          希望这会有所帮助。

          【讨论】:

            【解决方案5】:

            当然你必须检查你的 TNSNAMES.ora 在

            C:\your_oracle_folder\app\oracle\product\11.2.0\server\network\ADMIN\TNSNAMES.ora

            您应该在顶部看到您的系统名称。就我而言,Oracle 11g Express 是“XE”。然后根据您的平台配置您的 ODBC 32 位或 64 位:

            【讨论】: