来源: http://oracle.chinaitlab.com/induction/881334.html

ORA-12541: TNS:无监听器

 登录ORCALE时错误提示:ORA-12541: TNS:no listener不能正常连接到数据库

    错误原因是:清理注册表信息或修改配置数据库机器名称造成。

    一、连接主机字符串,报告没有监听器

    C:\Documents and Settings\Administrator> sqlplus username/password;

    ORA-12541: TNS:no listener

    二、运行监听器

    C:\Documents and Settings\Administrator>lsnrctl

    LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 07-7月 -2009 10:08

    :08

    Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.

    欢迎来到LSNRCTL,请键入"help"以获得信息。

    三、通过查看监听器状态给出解决办法

    情况一,只报告无监听器

    LSNRCTL> status

    正在连接到 (ADDRESS=(PROTOCOL=tcp)(PORT=1521))

    ORA-12541: TNS:无监听器

    TNS-12560: TNS: 协议适配器错误

    TNS-00511: 无监听器

    32-bit Windows Error: 61: Unknown error

    LSNRCTL> start

    启动tnslsnr:请稍候…

    Failed to open service <OracleOraHome92TNSListener>, error 1060.

    TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production

    写入D:\oracle\ora92\network\log\listener.log的日志信息

    监听:(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sha120594n02.clients.apac.cpwr.c

    orp)(PORT=1521)))

    正在连接到 (ADDRESS=(PROTOCOL=tcp)(PORT=1521))

    LISTENER 的 STATUS

    ------------------------

    别名                      LISTENER

    版本                      TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Produc

    tion

    启动日期                  07-7月 -2009 10:08:49

    正常运行时间              0 天 0 小时 0 分 4 秒

    跟踪级别                  off

    安全性                    OFF

    SNMP                      OFF

    监听器日志文件          D:\oracle\ora92\network\log\listener.log

    监听端点概要…

    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sha120594n02.clients.apac.cpwr.corp)

    (PORT=1521)))

    监听器不支持服务

    命令执行成功

    情况二,除了报告无监听器还报告地址的协议专用组件指定不正确

    LSNRCTL> status

    连接至(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(PORT=1521)))

    TNS-01103: 地址的协议专用组件指定不正确

    TNS-12541: TNS:无监听器

    TNS-12560: TNS:协议适配器出现错误

    TNS-00511: 无监听器

    32-bit Windows Error: 61: Unknown error

    LSNRCTL> start

    启动tnslsnr:请稍候…

    Failed to start service, error 3.

    TNS-12536: TNS:可能会阻碍*作

    TNS-12560: TNS:协议适配器出现错误

    TNS-00506: *作可能阻塞

    32-bit Windows Error: 997: Unknown error

    LSNRCTL>

    这种情况的解决方案如下:

    1、在控制面板中启动服务,出现以下错误

    服务:在本地计算机 无法启动 OracleOraHome92TNSListener服务。

    错误3:系统找不到指定的路径

    而且OracleOraHome92TNSListener服务的可执行文件的路径是空的。

    2、进入注册表中修改ImagePath

    在运行处执行REGEDIT进入注册表到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleOraHome92TNSListener

    发现ImagePath关键值没有了,增加他,选择可扩充字符串值,编辑字符串的数值数据为:D:\oracle\ora92\BIN\TNSLSNR 退出注册表。

    3、再次启动监听器

    LSNRCTL> start

    TNS-01106: 使用名称LISTENER的监听器已经启动

    四、这时查看监听器的状态,监听器已经恢复正常

    LSNRCTL> status

    正在连接到 (ADDRESS=(PROTOCOL=tcp)(PORT=1521))

    LISTENER 的 STATUS

    ------------------------

    别名                      LISTENER

    版本                      TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Produc

    tion

    启动日期                  07-7月 -2009 10:08:49

    正常运行时间              0 天 0 小时 2 分 18 秒

    跟踪级别                  off

    安全性                    OFF

    SNMP                      OFF

    监听器日志文件          D:\oracle\ora92\network\log\listener.log

    监听端点概要…

    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sha120594n02.clients.apac.cpwr.corp)

    (PORT=1521)))

    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sha120594n02.clients.apac.cpwr.corp)

    (PORT=8080))(Presentation=HTTP)(Session=RAW))

    (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=sha120594n02.clients.apac.cpwr.corp)

    (PORT=2100))(Presentation=FTP)(Session=RAW))

    服务摘要

    服务 "Covisint" 包含 1 个例程。

    例程 "Covisint", 状态 READY, 包含此服务的 1 个处理程序…

    服务 "CovisintXDB" 包含 1 个例程。

    例程 "Covisint", 状态 READY, 包含此服务的 1 个处理程序…

    命令执行成功

    五、再去连接,成功

    C:\Documents and Settings\Administrator> sqlplus username/password;

    连接成功。

    C:\Documents and Settings\Administrator>