今天在公司电脑安装了Oracle使用sql developer测试连接的时候,提示错误:
状态: 失败 -测试失败: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
百度了一下,说是oracle安装路径下的tnsnames.ora文件的service_name(即sid)配置有错,要改成默认的orcl。使用 everything 工具找到这个文件后打开一看,发现就是默认的orcl,显然不是配置文件的问题。此时的我犯傻了,试着将主机名改成了orcl,之前的错误倒是没有了,又出现一个新的错误:
状态: 失败 -测试失败: IO 错误: The Network Adapter could not establish the connection
百度说这个错误有三种可能的解决办法,第一种ip和第二种防火墙不符合我的情况,而第三种数据库监听未启动可以一试。
打开cmd,(windows)输入以下命令:
lsnrctl
接着输入
status
看到上面的界面说明数据库监听已经启动了,也不是第三种原因。试了试命令行启动oracle
sqlplus
输入我之前自己设置的用户名/密码
连接成功,奇了怪了,cmd可以连接而sql developer却没法连接。折腾了半天,突然注意到连接信息中不是有一项SID选项嘛
第一个错误说的是配置文件中的sid有错,而我的配置文件中没有错,那就可能是这个sql developer连接信息中SID的错了,于是将SID改为tnsnames.ora文件中的service_name值,即orcl,再测试连接,成功!
有些问题看似扑朔迷离,其实你已经无限接近于真相。