在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错误。
见如下图:
建议检查一下web.config中的连接字符串
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: 将VS连接时所用的连接字符串复制过来试试
@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: 看一下Windows中的环境变量ORACLE_HOME指向哪里
@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: 添加一个ORACLE_HOME的环境变量,值为C:\app\CSTterry\product\11.2.0\dbhome_1,然后再试试
@dudu: 我在系统中已加了环境变量如下图,加好后保存。
不好意思,刚才看错了。
现在环境变量oracle_home对应的C:\app\CSTterry\product\11.2.0\dbhome_1这个值加好了。
我试了,好像还是不行的。
@Albert Fei: 这个是Path环境变量的值,查看ORACLE_HOME环境变量的值的命令是:
set ORACLE_HOME
@dudu: oracle_home对应的C:\app\CSTterry\product\11.2.0\dbhome_1我已经加好了,
是否还要加到Path这个环境变量的值里?
我加好后,把oracle的对应的二个服务重启了,又运行了LSNRCTL ->status报的错还是和之前一样的
@Albert Fei: 不用加了,然后看一下\product\11.2.0\dbhome_1\NETWORK\ADMIN中的配置
@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: telnet CNSHHASH12L568 1521 看能不能连上?
@dudu: 我在cmd 中不能运行
@Albert Fei: 要通过添加/删除程序安装telnet客户端
@dudu: 已装好了,刚才重启了电脑,谢谢!
运行: 正在连接CNSHHASH12L568...无法打开到主机的连接。 在端口 1521: 连接失败
@Albert Fei: ping CNSHHASH12L568 看返回的IP地址是多少?
@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: 在配置中把 HOST = CNSHHASH12L568 改为 HOST = 127.0.0.1 试试
@Albert Fei: Windows防火墙有没有允许1521端口
@dudu: 谢谢! 我先试试
@dudu: 我把1521端口在防火墙设了允许出站入站,用telnet还是不行,报无法打开到主机的连接。 在端口 1521: 连接失败
@Albert Fei: 如果防火墙设置没问题,telnet不成功,说明oracle服务没正常工作
@dudu: 非常感谢dudu, 此问题终于解决了,主要问题有三个:
1) 本地服务中的’主机名‘ 改为‘127.0.0.1’。
2) 服务名应该用全局数据库名。
3) 在公司用域用户名登录也有用户名解析失败等问题。
@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组中加入我的域用户和我本机加入的一样。
请教可能出现的问题,谢谢!
你好,OracleOraDb11g_home1TNSListener已启动。
而且我用sql/developer 能够连接到本机的oracle 服务器,就是用VS连接不上; 但在vs里面连接远程的一个oracle 数据是可以连接上的。
@Albert Fei: 那就是你的连接字符串写错了嘛。
@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文件, 是不是都要配置?
@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 里面
@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 因该只能用服务器这种方式连接
@Albert Fei: <add name="ConnectStrings" connectionString="Data Source=PROD_UAT;User
在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)) )
谢谢,我这个问题已经解决了,不仅连接字符串配置这么简单,还有其它很多问题。