google一下12560,可以搜到很多解决方案。这篇文章给出了出问题的三种可能原因,他讲的比较典型
解决ORA-12560: TNS: 协议适配器错误,与大家共享
造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个:
1.监听服务没有起起来。windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板,
启动oraclehome92TNSlistener服务。
2.database instance没有起起来。windows平台如下操作:开始---程序---管理工具---服务,打开服务
面板,启动oracleserviceXXXX,XXXX就是你的database SID.
3.注册表问题。regedit,然后进入HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0将该环境变量ORACLE_SI
D设置为XXXX,XXXX就是你的database SID.或者右几我的电脑,属性--高级--环境变量---系统变量--新建
,变量名=oracle_sid,变量值=XXXX,XXXX就是你的database SID.或者进入sqlplus前,在command line下
输set oracle_sid=XXXX,XXXX就是你的database SID.
经过以上步骤,就可以解决问题。
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。