首页 文章

TDP的ODP.NET问题,32位客户端64位数据库

提问于
浏览
0

我的问题如下:

我在32位ubuntu服务器12.04 LTS中有一个Oracle,但是我创建了另一个用于迁移到Windows 2008 R2 64位的数据库 . 我成功安装了oracle并复制了我拥有的所有数据 . 当我不得不将我的一个.NET项目的连接从第一个连接更改为第二个连接时出现问题,其中我得到了“ORA-12154:TNS:无法解析指定的连接标识符”错误 . 我使用从Oracle下载的32位ODAC dll .

TNSNAMES:

LIDA_ALC_DBLILLY =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.109.107)(PORT = 1523))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl.cartif.local)
    )
  )

LIDA_INDY_DBLILLY =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.109.107)(PORT = 1523))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl2)
    )
  )

HARVEST_DBLILLY =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.109.107)(PORT = 1523))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl2)
    )
  )

DELTA_DBLILLY =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.109.107)(PORT = 1523))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl2)
    )
  )

AUTOLAB_DBLILLY =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.109.107)(PORT = 1523))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl2)
    )
  )

  TEST =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.109.107)(PORT = 1523))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl2)
    )
  )

  LIDA_ALC_ASTREA =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.109.103)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl.cartif.local)
    )
  )

LIDA_INDY_ASTREA =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.109.103)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl.cartif.local)
    )
  )

HARVEST_ASTREA =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.109.103)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl.cartif.local)
    )
  )

DELTA_ASTREA =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.109.103)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl.cartif.local)
    )
  )

AUTOLAB_ASTREA =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.109.103)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl.cartif.local)
    )
  )

  TEST_ASTREA =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.109.103)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl.cartif.local)
    )
  )

_ASTREA是windows和_DBLILLY的linux . 有了这个tnsnames,我只能连接到dblilly . ips是正确的,端口和名称也是如此 . ODAC安装在C:\ OracleODAC \ x32中,我将目录添加到PATH中 . 我也添加了bin目录 . 此外,正确设置了ORACLE_HOME和ORACLE_SID .

有提示吗?提前致谢 .

编辑:我可以使用同一家庭与TOAD连接 . 我可以将我的项目连接到DBLILLY,但不能连接到ASTREA,使用x86 / x64编译版本 .

EDIT2: <add name="DELPRD" connectionString="Data Source=DELTA_ASTREA;User ID=****;Password=****;" providerName="Oracle.DataAccess.Client" />

3 回答

  • 0

    我先在databas-adm-program中测试oracle客户端 . 我使用Toad,我配置为使用与我的.net应用程序相同的oracle客户端 . 如果它在那里工作,你可以排除TNS是问题,只关注你的.net应用程序中的32对64位问题 . PS:我知道这适合作为评论,但我不能评论因为我在这里是一个n00b

  • 1

    看起来你对我有简单的TNS分辨率错误 . 您可能有多个oracle家庭并且没有意识到它,因此您缺少第二个tns名称文件 . IMO是强制tns名称文件的最简单方法是使用TNS_ADMIN环境变量 . 您还可以直接在连接字符串中嵌入TNS字符串代替别名 . 如果您使用的是托管客户端,则可以在配置文件本身中定义tns别名 . 所有这些都在另一个答案中得到了证明:

    https://stackoverflow.com/a/31592492/852208

  • -2

    由于数据库是64位,我认为ODAC也应该是64位 . 看看这个页面以获得好的一个:[http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html]

    然后,我想一个听众正确启动???

    在您的tnsnames中,您可能必须为连接标识符添加后缀:TEST_ASTREA.cartif.local =(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.109.103)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl.cartif.local)))

    希望有帮助......

    基督教

相关问题