首页 新闻 会员 周边

.Net 连接oracle数据库总是出错

0
悬赏园豆:50 [已解决问题] 解决于 2015-01-24 14:27

在VS中连接本机oracle数据库,总是连接不上。

报错如下:System.Data.OracleClient.OracleException: ORA-12541: TNS:no listener

 

请问高手如何解决?

 

说明:1)可以远程连接到其它的oracle服务器。

   2)listener.ora和tnsnames.ora也检查了,没有发现有哪里不对。

   3)服务OracleOraDb11g_home1TNSListener已启动。如下图

数据库是11g,64位的标准版

   4) 我在 LSNRCTL命令下运行 status报TNS-00530: PROTOCAL ADAPTER ERROR 和 64bit Windows error:53 Unknown error

    再运行start命令时,提示服务已运行,并报TNS-12560: TNS:Protocol adapter error 和TNS-00530: Protocol adapter error错误。

见如下图:

Albert Fei的主页 Albert Fei | 老鸟四级 | 园豆:2102
提问于:2015-01-22 14:47
< >
分享
最佳答案
0

建议检查一下web.config中的连接字符串

收获园豆:40
dudu | 高人七级 |园豆:30994 | 2015-01-22 15:14

DUDU, 你好。

在web.config中连接字符串我查了应该没有问题。

<connectionStrings>
    <add name="ConnectStrings" connectionString="Data Source=xxx_UAT;User Id=username;Password=passwordstring;" providerName="System.Data.OracleClient" />
  </connectionStrings>

 

在listener.ora中配置如下:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = ORCL2)
      (ORACLE_HOME = C:\app\CSTterry\product\11.2.0\dbhome_1)
      (SID_NAME = orcl2)
    )
  )

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST =我的主机名)(PORT = 1521))
  )

ADR_BASE_LISTENER = C:\app\TEST\product\11.2.0\dbhome_1\log

在tnsnames.ora中配置如下:

ORCL2 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 我的主机名)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = ORCL2)
    )
  )

我用sql/developer 能连接上,.net 连接不上。

Albert Fei | 园豆:2102 (老鸟四级) | 2015-01-22 15:22

@Albert Fei: 将VS连接时所用的连接字符串复制过来试试

dudu | 园豆:30994 (高人七级) | 2015-01-22 15:25

@dudu: <connectionStrings>
    <add name="ConnectStrings" connectionString="Data Source=PROD_UAT;User Id=username;Password=passwordstring;" providerName="System.Data.OracleClient" />
  </connectionStrings>

下面这段代码是在oracle 安装路径 \product\11.2.0\client_1\network\admin 下配置的。

PROD_UAT =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 我的主机名)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL2)
    )
  )

还有一个路径是\product\11.2.0\dbhome_1\NETWORK\ADMIN。

这二个路径也就是一个是client 一个是dbhome_1有什么不同,里面都有lisenter.oral和tnsnames.ora文件, 是不是都要配置?

Albert Fei | 园豆:2102 (老鸟四级) | 2015-01-22 15:36

@Albert Fei: 看一下Windows中的环境变量ORACLE_HOME指向哪里

dudu | 园豆:30994 (高人七级) | 2015-01-22 15:46

@dudu: 环境变量Path对应的字符串是C:\app\CSTterry\product\11.2.0\dbhome_1\bin;
C:\app\CSTterry\product\11.2.0\client_1\bin;
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;
C:\Program Files\Intel\WiFi\bin\;
C:\Program Files\Common Files\Intel\WirelessCommon\;
C:\Program Files\1E\NomadBranch\;  
C:\app\CSTterry\product\11.2.0\client_1\network\admin\;
C:\Program Files (x86)\GNU\GnuPG\pub

没有找到oracle_home对应的值, 是否要添加一个? 第一次搞这个,没经验。

Albert Fei | 园豆:2102 (老鸟四级) | 2015-01-22 15:55

@Albert Fei: 添加一个ORACLE_HOME的环境变量,值为C:\app\CSTterry\product\11.2.0\dbhome_1,然后再试试

dudu | 园豆:30994 (高人七级) | 2015-01-22 16:01

@dudu: 我在系统中已加了环境变量如下图,加好后保存。

不好意思,刚才看错了。

现在环境变量oracle_home对应的C:\app\CSTterry\product\11.2.0\dbhome_1这个值加好了。

我试了,好像还是不行的。

 

 

 

Albert Fei | 园豆:2102 (老鸟四级) | 2015-01-22 16:17

@Albert Fei: 这个是Path环境变量的值,查看ORACLE_HOME环境变量的值的命令是:

set ORACLE_HOME
dudu | 园豆:30994 (高人七级) | 2015-01-22 16:43

@dudu: oracle_home对应的C:\app\CSTterry\product\11.2.0\dbhome_1我已经加好了,

是否还要加到Path这个环境变量的值里?

 

我加好后,把oracle的对应的二个服务重启了,又运行了LSNRCTL ->status报的错还是和之前一样的

Albert Fei | 园豆:2102 (老鸟四级) | 2015-01-22 16:51

@Albert Fei: 不用加了,然后看一下\product\11.2.0\dbhome_1\NETWORK\ADMIN中的配置

dudu | 园豆:30994 (高人七级) | 2015-01-22 16:59

@dudu: 二个文件中的内容如下,找不到有什么问题,请帮我看下

# listener.ora Network Configuration File: C:\app\CSTterry\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = ORCL2.MERCK.COM)
      (ORACLE_HOME = C:\app\CSTterry\product\11.2.0\dbhome_1)
      (SID_NAME = orcl2)
    )
  )

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = CNSHHASH12L568)(PORT = 1521))
  )

ADR_BASE_LISTENER = C:\app\CSTterry\product\11.2.0\dbhome_1\log

# tnsnames.ora Network Configuration File: C:\app\CSTterry\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.

ORCL2 =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = CNSHHASH12L568)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SID = ORCL2)
    )
  )

Albert Fei | 园豆:2102 (老鸟四级) | 2015-01-22 17:14

@Albert Fei:  telnet CNSHHASH12L568 1521 看能不能连上?

dudu | 园豆:30994 (高人七级) | 2015-01-22 17:15

@dudu: 我在cmd 中不能运行

Albert Fei | 园豆:2102 (老鸟四级) | 2015-01-22 17:37

@Albert Fei: 要通过添加/删除程序安装telnet客户端

dudu | 园豆:30994 (高人七级) | 2015-01-22 17:39

@dudu: 已装好了,刚才重启了电脑,谢谢!

运行: 正在连接CNSHHASH12L568...无法打开到主机的连接。 在端口 1521: 连接失败

Albert Fei | 园豆:2102 (老鸟四级) | 2015-01-22 17:55

@Albert Fei:  ping CNSHHASH12L568 看返回的IP地址是多少?

dudu | 园豆:30994 (高人七级) | 2015-01-22 18:01

@dudu:

返回的地址是我的电脑全名,如下
正在 Ping CNSHHASH12L568.MERCK.com [fe80::bc47:cd87:7574:8ae6%11] 具有 32 字节的数据:

 

并且我用netstat -a -n 得到所有端口信息,不知道1521端口是否有问题

C:\Users\CSTterry>netstat -a -n

活动连接

  协议  本地地址          外部地址        状态
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:623            0.0.0.0:0              LISTENING
  TCP    0.0.0.0:1025           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:1026           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:1027           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:1029           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:1521           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:1776           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:2000           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:3389           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:8081           0.0.0.0:0              LISTENING
  TCP    0.0.0.0:16992          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:48100          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:48101          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:54779          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:54916          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:54921          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:65211          0.0.0.0:0              LISTENING
  TCP    0.0.0.0:65213          0.0.0.0:0              LISTENING
  TCP    10.225.73.92:139       0.0.0.0:0              LISTENING
  TCP    10.225.73.92:55003     54.129.228.195:8080    CLOSE_WAIT
  TCP    10.225.73.92:55009     54.129.228.195:8080    CLOSE_WAIT
  TCP    10.225.73.92:55015     54.129.228.195:8080    CLOSE_WAIT
  TCP    10.225.73.92:55124     54.56.248.202:445      ESTABLISHED
  TCP    10.225.73.92:55181     54.129.228.195:8080    CLOSE_WAIT
  TCP    10.225.73.92:55197     54.129.228.195:8080    CLOSE_WAIT
  TCP    10.225.73.92:55199     54.129.228.195:8080    CLOSE_WAIT
  TCP    10.225.73.92:55201     54.129.228.195:8080    CLOSE_WAIT
  TCP    10.225.73.92:60461     54.129.228.195:8080    ESTABLISHED
  TCP    10.225.73.92:60463     54.129.228.195:8080    ESTABLISHED
  TCP    10.225.73.92:60464     54.129.228.195:8080    ESTABLISHED
  TCP    10.225.73.92:60465     54.129.228.195:8080    ESTABLISHED
  TCP    10.225.73.92:60568     54.120.11.36:8530      ESTABLISHED
  TCP    10.225.73.92:60586     54.120.11.36:10123     ESTABLISHED
  TCP    10.225.73.92:60591     54.129.228.195:8080    TIME_WAIT
  TCP    10.225.73.92:60592     54.129.228.195:8080    TIME_WAIT
  TCP    10.225.73.92:60593     54.129.228.195:8080    TIME_WAIT
  TCP    10.225.73.92:60594     54.129.228.195:8080    TIME_WAIT
  TCP    10.225.73.92:60597     54.120.10.184:65306    TIME_WAIT
  TCP    127.0.0.1:1028         0.0.0.0:0              LISTENING
  TCP    127.0.0.1:1030         127.0.0.1:1031         ESTABLISHED
  TCP    127.0.0.1:1031         127.0.0.1:1030         ESTABLISHED
  TCP    127.0.0.1:1032         127.0.0.1:1033         ESTABLISHED
  TCP    127.0.0.1:1033         127.0.0.1:1032         ESTABLISHED
  TCP    127.0.0.1:1034         0.0.0.0:0              LISTENING
  TCP    127.0.0.1:4242         0.0.0.0:0              LISTENING
  TCP    127.0.0.1:50000        0.0.0.0:0              LISTENING
  TCP    127.0.0.1:54996        127.0.0.1:54997        ESTABLISHED
  TCP    127.0.0.1:54997        127.0.0.1:54996        ESTABLISHED
  TCP    127.0.0.1:54998        127.0.0.1:54999        ESTABLISHED
  TCP    127.0.0.1:54999        127.0.0.1:54998        ESTABLISHED
  TCP    127.0.0.1:55029        127.0.0.1:55030        ESTABLISHED
  TCP    127.0.0.1:55030        127.0.0.1:55029        ESTABLISHED
  TCP    127.0.0.1:55054        127.0.0.1:55055        ESTABLISHED
  TCP    127.0.0.1:55055        127.0.0.1:55054        ESTABLISHED
  TCP    127.0.0.1:55073        0.0.0.0:0              LISTENING
  TCP    127.0.0.1:60427        0.0.0.0:0              LISTENING
  TCP    192.168.56.1:139       0.0.0.0:0              LISTENING
  TCP    [::]:135               [::]:0                 LISTENING
  TCP    [::]:445               [::]:0                 LISTENING
  TCP    [::]:623               [::]:0                 LISTENING
  TCP    [::]:1025              [::]:0                 LISTENING
  TCP    [::]:1026              [::]:0                 LISTENING
  TCP    [::]:1027              [::]:0                 LISTENING
  TCP    [::]:1029              [::]:0                 LISTENING
  TCP    [::]:1521              [::]:0                 LISTENING
  TCP    [::]:3389              [::]:0                 LISTENING
  TCP    [::]:8081              [::]:0                 LISTENING
  TCP    [::]:16992             [::]:0                 LISTENING
  TCP    [::]:54779             [::]:0                 LISTENING
  TCP    [::]:54916             [::]:0                 LISTENING
  TCP    [::]:54921             [::]:0                 LISTENING
  TCP    [::]:65211             [::]:0                 LISTENING
  TCP    [::]:65213             [::]:0                 LISTENING
  TCP    [::1]:55045            [::1]:55047            ESTABLISHED
  TCP    [::1]:55047            [::1]:55045            ESTABLISHED
  UDP    0.0.0.0:123            *:*
  UDP    0.0.0.0:500            *:*
  UDP    0.0.0.0:1776           *:*
  UDP    0.0.0.0:1779           *:*
  UDP    0.0.0.0:4500           *:*
  UDP    0.0.0.0:5355           *:*
  UDP    0.0.0.0:48125          *:*
  UDP    0.0.0.0:50539          *:*
  UDP    0.0.0.0:56511          *:*
  UDP    0.0.0.0:61529          *:*
  UDP    0.0.0.0:61530          *:*
  UDP    0.0.0.0:62390          *:*
  UDP    10.225.73.92:137       *:*
  UDP    10.225.73.92:138       *:*
  UDP    10.225.73.92:51541     *:*
  UDP    127.0.0.1:10000        *:*
  UDP    127.0.0.1:50540        *:*
  UDP    127.0.0.1:53727        *:*
  UDP    127.0.0.1:54364        *:*
  UDP    127.0.0.1:56512        *:*
  UDP    127.0.0.1:58154        *:*
  UDP    127.0.0.1:59216        *:*
  UDP    127.0.0.1:60664        *:*
  UDP    192.168.56.1:137       *:*
  UDP    192.168.56.1:138       *:*
  UDP    192.168.56.1:51542     *:*
  UDP    [::]:123               *:*
  UDP    [::]:500               *:*
  UDP    [::]:4500              *:*
  UDP    [::]:5355              *:*

Albert Fei | 园豆:2102 (老鸟四级) | 2015-01-22 18:04

@Albert Fei: 在配置中把 HOST = CNSHHASH12L568 改为  HOST = 127.0.0.1 试试

dudu | 园豆:30994 (高人七级) | 2015-01-22 18:07

@Albert Fei: Windows防火墙有没有允许1521端口

dudu | 园豆:30994 (高人七级) | 2015-01-22 18:13

@dudu: 谢谢! 我先试试

Albert Fei | 园豆:2102 (老鸟四级) | 2015-01-22 20:43

@dudu: 我把1521端口在防火墙设了允许出站入站,用telnet还是不行,报无法打开到主机的连接。 在端口 1521: 连接失败

Albert Fei | 园豆:2102 (老鸟四级) | 2015-01-22 21:42

@Albert Fei: 如果防火墙设置没问题,telnet不成功,说明oracle服务没正常工作

dudu | 园豆:30994 (高人七级) | 2015-01-22 22:00

@dudu: 非常感谢dudu, 此问题终于解决了,主要问题有三个:

  1) 本地服务中的’主机名‘ 改为‘127.0.0.1’。

  2) 服务名应该用全局数据库名。

  3) 在公司用域用户名登录也有用户名解析失败等问题。

Albert Fei | 园豆:2102 (老鸟四级) | 2015-01-23 12:51

@dudu: 虽然已结贴,是否可以再问你个问题?我也发了个新提问,在这里追问你就是怕你看不到我新提的问题。

问题如下:

我把oracle 11g装在了自己的开发电脑上,也就是服务端和客户端在一台机子上。

当用vs.net连接时,出现ORA-12631:用户名检索失败。baidu了下,但没有查出解决方法。

 

说明:试过的解决方法如下:

1)设置sqlnet.ora SQLNET.AUTHENTICATION_SERVICES = (NTS) ,把NTS改为NONE后,可以不报这个错,但是取不到数据库里的数据。因为我机子只有域用户,没有本地用户。
2)已把os用户加到ora_dba组,也没有解决些问题。

但我连接一个远程的服务器,就不报这要的错误,用的也是一个域用户,而且我到远程服务器上看了配置,a)sqlnet.ora SQLNET.AUTHENTICATION_SERVICES = (NTS) 和我设的一样的。

  b)远程机子上用户组里的ora_dba组中加入我的域用户和我本机加入的一样。

请教可能出现的问题,谢谢!

Albert Fei | 园豆:2102 (老鸟四级) | 2015-01-23 17:12
其他回答(2)
0
收获园豆:10
Launcher | 园豆:45045 (高人七级) | 2015-01-22 14:58

你好,OracleOraDb11g_home1TNSListener已启动。

而且我用sql/developer 能够连接到本机的oracle 服务器,就是用VS连接不上; 但在vs里面连接远程的一个oracle 数据是可以连接上的。

 

支持(0) 反对(0) Albert Fei | 园豆:2102 (老鸟四级) | 2015-01-22 15:13

@Albert Fei: 那就是你的连接字符串写错了嘛。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-01-22 15:15

@Launcher: 字符串应该没有问题。换远程的数据库也能连接的。

是否是环境变量什么设置的不对,第一次搞这个,没以验。

还有个问题:

在oracle 安装路径 \product\11.2.0\client_1\network\admin 。

和\product\11.2.0\dbhome_1\NETWORK\ADMIN。

这二个路径也就是一个是client 一个是dbhome_1有什么不同,里面都有lisenter.oral和tnsnames.ora文件, 是不是都要配置?

支持(0) 反对(0) Albert Fei | 园豆:2102 (老鸟四级) | 2015-01-22 16:00

@Albert Fei: 

在tnsnames.ora中配置如下:

ORCL2 =   (DESCRIPTION =     (ADDRESS_LIST =       (ADDRESS = (PROTOCOL = TCP)(HOST = 我的主机名)(PORT = 1521))     )     (CONNECT_DATA =       (SID = ORCL2)     )   )

 

<add name="ConnectStrings" connectionString="Data Source=ORCL2;User

或者把 orcl2 那一段字符串全部年贴到 data source 里面

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-01-22 16:19

@Launcher: 我试试,谢谢!

因为在oracle 安装路径 \product\11.2.0\client_1\network\admin下面我还配置了一段如下代码

PROD_UAT =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 我的主机名)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL2)
    )
  )

而且我在product\11.2.0\dbhome_1\NETWORK\ADMIN下面的tnsnames.ora中已配置如下:

ORCL2 =   (DESCRIPTION =     (ADDRESS_LIST =       (ADDRESS = (PROTOCOL = TCP)(HOST = 我的主机名)(PORT = 1521))     )     (CONNECT_DATA =       (SID = ORCL2)     )   )

 

我测试过了,还是不对,直接用连接字符串报错:ORA-12154: TNS:could not resolve the connect identifier specified 因该只能用服务器这种方式连接

支持(0) 反对(0) Albert Fei | 园豆:2102 (老鸟四级) | 2015-01-22 16:26

@Albert Fei: <add name="ConnectStrings" connectionString="Data Source=PROD_UAT;User

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2015-01-22 17:32
0
在listener.ora中配置如下:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (GLOBAL_DBNAME = ORCL2)
      (ORACLE_HOME = C:\app\CSTterry\product\11.2.0\dbhome_1)
      (SID_NAME = orcl2)
    )
  )

LISTENER =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST =我的主机名)(PORT = 1521))
  )
贺臣 | 园豆:307 (菜鸟二级) | 2015-01-26 08:36

谢谢,我这个问题已经解决了,不仅连接字符串配置这么简单,还有其它很多问题。

支持(0) 反对(0) Albert Fei | 园豆:2102 (老鸟四级) | 2015-01-30 17:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册