您的位置:首页 > 其它

ORA-12560: TNS: 协议适配器错误的解决方法

2012-08-27 18:44 381 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: