google一下12560,可以搜到很多解决方案。这篇文章给出了出问题的三种可能原因,他讲的比较典型
解决ORA-12560: TNS: 协议适配器错误,与大家共享
http://www.itpub.net/thread-223688-1-5.html
我这里还要补充一条,因为我最近遇到了这个错误,用上面的三步没能解决。
我使用sqlplus连接数据库
在命令行中执行下面的命令:
set oracle_sid=****
sqlplus / as sysdba
之后就提示12560了
再做如下尝试:
sqlplus sys/password as sysdba
仍然提示 12560
直到尝试下面的命令才成功:
sqlplus sys/password@servicename as sysdba
我们直到使用@是走listener连接数据库的,一般是客户端采用的连接方式。
而我是在数据库本机上敲命令,不走listener应该也是可以的。特别是,当使用了shutdown命令,关闭数据库后,使用listener方式也是连不上的。
所以必须找到不用@就不能连的原因。
后来在机器上搜索一下sqlplus.exe,发现有两个,一个在db目录下,一个在client目录下。
原来服务器上既装了oracle服务器端又装了客户端。
而客户端的sqlplus是没法通过非listener方式(不加@servicename)连接的。
所以解决方案就是在sqlplus前面加路径,指明是oracle服务器端目录下的sqlplus。