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_SID设置为XXXX,XXXX就是你的database SID.或者右几我的电脑,属性--高级--环境变量---系统变量--新建
,变量名=oracle_sid,变量值=XXXX,XXXX就是你的database SID.或者进入sqlplus前,在command line下输set oracle_sid=XXXX,XXXX就是你的database SID.
经过以上步骤,就可以解决问题。
------------------------------------------------------------------------------------------------------
对原因2的分析:
window平台下9i和8i 好像不一样 。
9i 必须启动服务中的OracleServiceSID,如果没有启动的话,在命令行执行conn / as sysdba,会报:ORA-12560: TNS: 协议适配器错误。
而8i 既可以在服务中启动数据库,也可以在命令行启动
------------------------------------------------------------------------------------------------------
对原因1的不同平台操作方式的横向对比:
在LINUX 下 进程就不一样了
WINDOWS 下 启动oraclehome92TNSlistener服务。
LINUX 下 启动 /opt/oracle/product/9.2.0/bin/tnslsnr &
------------------------------------------------------------------------------------------------------
其它原因:
问题出现的原因是在同一个server上安装第二个数据库,结果安装失败,应该是把第一个的SID的变量给冲了,按照上述第三个方法,解决问题。
因为装了第2个INSTANCE后,第一个INSTANCE的SID被冲掉,使用第3个办法, 问题马上解决,,我记的有个SET 命令可以把SID改回来,但想不起来了。
(PS:上面说的SET命令,是否是原因3中提到的“或者进入sqlplus前,在command line下输set oracle_sid=XXXX,XXXX就是你的database SID.”)
------------------------------------------------------------------------------------------------------
问题样例展示:
Case:
Microsoft Windows [版本 5.2.3790]
(C) 版权所有 1985-2003 Microsoft Corp.
C:Documents and Settingsuser1>lsnrctl
LSNRCTL for 32-bit Windows: Version 9.2.0.7.0 - Production on 27-8月 -2008 09:33
:43
Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.
欢迎来到LSNRCTL,请键入"help"以获得信息。
LSNRCTL> status
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
TNS-12541: TNS:无监听器
TNS-12560: TNS: 协议适配器错误
TNS-00511: 无监听器
32-bit Windows Error: 2: No such file or directory
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.55)(PORT=1521)))
TNS-12538: TNS:没有此协议适配器
TNS-12560: TNS: 协议适配器错误
TNS-00508: 无此类协议适配器
LSNRCTL> start
启动tnslsnr:请稍候...
TNSLSNR for 32-bit Windows: Version 9.2.0.7.0 - Production
系统参数文件为D:oracleora92networkadminlistener.ora
写入D:oracleora92networkloglistener.log的日志信息
监听:(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=.pipeEXTPROC1ipc)))
监听该对象时出错: (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.55)(PORT=
1521)))
TNS-12538: TNS:没有此协议适配器
TNS-12560: TNS: 协议适配器错误
TNS-00508: 无此类协议适配器
监听程序未能启动。请参阅上面的错误消息...
---------------------------
服务
---------------------------
在 本地计算机 无法启动 OracleOraHome92TNSListener 服务。
错误 1067: 进程意外终止。
---------------------------
确定
---------------------------
ORA-12560: TNS: 协议适配器错误的解决方法
造成ORA-12560: TNS: 协议适配器错误的问题的原因有三个:
1.监听服务没有起起来。windows平台个一如下操作:开始---程序---管理工具---服务,打开服务面板,启动oraclehome92TNSlistener服务。
2.database instance没有起起来。windows平台如下操作:开始---程序---管理工具---服务,打开服务面板,启动oracleserviceXXXX, XXXX就是你的database SID.
3.注册表问题。regedit,然后进入HKEY_LOCAL_MACHINESOFTWAREORACLEHOME0将该环境变量ORACLE_SID设置为XXXX, XXXX就是你的database SID.或者右几我的电脑,属性--高级--环境变量---系统变量--新建,变量名=oracle_sid,变量值=XXXX, XXXX就是你的database SID.或者进入sqlplus前,在command line下输set oracle_sid=XXXX, XXXX就是你的database SID.
经过以上步骤,就可以解决问题。
------------------------------------------------------------------------------------------------------
Author: lioncode
CMP: JTSEC-RD
Date: 2012-08-27 18:51
Project: jtsec_one-way_dbsync
Version: v1.0.0