检查监听器状态: C:\>lsnrctl status LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 30-6月 -2009 21:08 :04 Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved. 正在连接到 (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=www-7f628f1510d)(PORT=1521) )) TNS-12541: TNS:无监听器 TNS-12560: TNS: 协议适配器错误 TNS-00511: 无监听器 32-bit Windows Error: 61: Unknown error
尝试登陆本地数据库: C:\>sqlplus /nolog SQL*Plus: Release 9.2.0.1.0 - Production on 星期二 6月 30 21:10:24 2009 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. SQL> conn scott/tiger@oradb ERROR: ORA-12541: TNS: 没有监听器 SQL> exit; --如果没有启动ORACLE服务的话,将出现下面的错误而不是上面: ERROR: ORA-12560: TNS: 协议适配器错误 C:\>sqlplus "/as sysdba" SQL*Plus: Release 9.2.0.1.0 - Production on 星期二 6月 30 21:14:17 2009 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. ERROR: ORA-12560: TNS: 协议适配器错误
启动监听器 C:\>lsnrctl start LSNRCTL for 32-bit Windows: Version 9.2.0.1.0 - Production on 30-6月 -2009 21:17 :21 Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved. 启动tnslsnr:请稍候... TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Production 系统参数文件为F:\oracle9i\network\admin\listener.ora 写入F:\oracle9i\network\log\listener.log的日志信息 监听:(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc))) 监听:(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=www-7f628f1510d)(PORT=1521))) 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))) LISTENER 的 STATUS ------------------------ 别名 LISTENER 版本 TNSLSNR for 32-bit Windows: Version 9.2.0.1.0 - Produc tion 启动日期 30-6月 -2009 21:17:23 正常运行时间 0 天 0 小时 0 分 2 秒 跟踪级别 off 安全性 OFF SNMP OFF 监听器参数文件 F:\oracle9i\network\admin\listener.ora 监听器日志文件 F:\oracle9i\network\log\listener.log 监听端点概要... (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1ipc))) (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=www-7f628f1510d)(PORT=1521))) 服务摘要.. 服务 "PLSExtProc" 包含 1 个例程。 例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 服务 "oradb" 包含 1 个例程。 例程 "oradb", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 命令执行成功 注:如果启动监听器时报“错误3 找不到可执行文件的路径”。查看[控制面板]=[服务]=OracleOraHome92TNSListener的属性,发现“可执行文件的路径项”是空的。打开注册表编辑器,搜索监听服务对应的键值,终于在HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet(ControlSet001、 ControlSet002)/Services下找到了OracleOraHome92TNSListener服务。右击它选择“新建字符串值”,取名 ImagePath,并双击它在数值中输入监听程序的路径,此处为"F:/oracle/ora92/bin/TNSLSNR.EXE"。再执行就正常了。 原因:“超级兔子”和“windows优化大师”等系统维护软件会误删除注册表中的该项键值。
监听打开后试图连接到数据库 C:\>sqlplus /nolog SQL*Plus: Release 9.2.0.1.0 - Production on 星期二 6月 30 21:23:45 2009 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. SQL> conn system/systemshx@oradb ERROR: ORA-12500: TNS: 监听程序无法启动专用服务器进程 原因:本地数据库对应的服务没有打开 SQL> exit