解决ORA-12541错误:TNS无监听程序的步骤

5星 · 超过95%的资源 需积分: 50 140 下载量 169 浏览量 更新于2024-07-21 1 收藏 848KB DOCX 举报
"在安装Oracle数据库后,尝试使用PL/SQL Developer工具进行连接时遇到ORA-12541 TNS:无监听程序的错误。该问题通常表明Oracle的监听服务未启动或配置不正确。解决这个问题需要启动Oracle的监听程序,并对网络服务名进行配置。以下是详细的解决步骤: 首先,你需要打开Oracle的Net Configuration Assistant,这是一个用于配置网络服务的工具。在该工具中,选择监听程序配置,然后选择重新配置,这将引导你完成启动监听的步骤。 1. 在Net Configuration Assistant中,按照提示进行操作,选择默认的监听程序并确认。 2. 接下来,配置监听协议,通常选择TCP协议,这是Oracle数据库最常用的通信协议。 3. 设置监听端口,通常设置为1521,这是Oracle默认的数据库服务端口。 4. 如果监听程序已经启动,系统可能会提示你,选择“是”以继续配置。 5. 完成监听程序配置后,进行下一步操作。 在确保监听程序启动后,你需要配置Net服务名,以便PL/SQL Developer可以找到并连接到数据库。 1. 在Net Configuration Assistant中,选择Net服务器配置,然后选择重新配置。 2. 选择要连接的数据库,输入服务名,这个名称在创建数据库时已定义。 3. 选择TCP协议,并填写主机名,可以是IP地址或主机名,保持端口为1521。 4. 测试连接以确保配置正确,如果成功,可以进行下一步。 5. 提供数据库的用户名和口令,以验证连接。 6. 最后,确认Net服务名,并保存配置。 完成以上步骤后,重新启动PL/SQL Developer,输入用户名和口令,你应该能够成功登录到Oracle数据库。 此外,你可以通过执行SQL语句`SELECT global_name FROM global_name;`在PL/SQL Developer中获取Oracle数据库的服务名,这将显示当前数据库的全局名称,有助于确认连接信息的准确性。 总结来说,解决ORA-12541 TNS:无监听程序的问题,关键在于启动Oracle监听程序并正确配置网络服务名。通过Net Configuration Assistant进行这些操作,可以有效地解决无法连接数据库的问题。"
2018-08-13 上传
TNS-12541: TNS: 无监听程序 TNS-12560: TNS: 协议适配器错误 TNS-00511: 无监听程序 文章转自:http://www.luocs.com/archives/464.html 此文版权归作者 – yaogang所有,转载请注明yaogang©www.luocs.com。 Luocs说:这是我一个朋友的一个监听器问题解决案例,这是昨天发生的事情,我一直跟朋友一起Troubleshooting,折腾了半天最后是BUG所致。再次汗颜,Windows平台惹不起啊!好,那么下面开始分享我朋友的案例! 环境描述: OS : Windows Server 2008 64Bit (做了HA) DB : 11.1.0.7.0 排错过程: 前天应用不能访问数据库了 (后台应用能访问数据库),故障发生。 马上登录到服务器里查看监听状态,发现有TNS-12541 ,TNS-12560等错误 Luocs补充:我跟朋友要了错误代码,但他没有保存,就直接贴图。 从计算器的管理 –> 服务选项 –> 检查oracle 监听服务程序,发现该服务已经停止。 手动把监听服务启动,这时候服务状态上显示为已启动,但在CMD窗口执行lsnrctl status的时候依然返回错误信息: C:\>lsnrctl status LSNRCTL for 64-bit Windows: Version 11.1.0.7.0 - Production on 12-11月-2012 18:1 8:32 Copyright (c) 1991, 2008, Oracle. All rights reserved. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.203.218)(PORT=1521))) TNS-12541: TNS: 无监听程序 TNS-12560: TNS: 协议适配器错误 TNS-00511: 无监听程序 64-bit Windows Error: 61: Unknown error 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521))) 过段时间回显非常慢。 然后我检查了下告警日志,大量的ora错误 Fatal NI connect error 12170. VERSION INFORMATION: TNS for 64-bit Windows: Version 11.1.0.7.0 - Production Oracle Bequeath NT Protocol Adapter for 64-bit Windows: Version 11.1.0.7.0 - Production Windows NT TCP/IP NT Protocol Adapter for 64-bit Windows: Version 11.1.0.7.0 - Production Time: 12-11月-2012 15:23:33 Tracing not turned on. Tns error struct: ns main err code: 12535 TNS-12535: TNS: 操作超时 ns secondary err code: 12560 nt main err code: 0 nt secondary err code: 0 nt OS err code: 0 Client address: ORA-609 : opiodr aborting process unknown ospid (4116_6104) 这时候朋友怀疑是不是监听器配置问题,就把原先的监听器删除重建了下,问题依然。 网上有个解决TNS-12535错误的案例,平台和版本都很类似,如下: 1、在 sqlnet.ora文件中 增加如下行: DIAG_ADR_ENABLED = OFF 2、在listener.ora文件中增加如下行: DIAG_ADR_ENABLED_ = OFF 如何监听是listener时,则前面的名称为:DIAG_ADR_ENABLED_LISTENER = OFF 3、重新启动windows服务管理中的监听程序.先停止,然后再重新启动. 4、检查结果.发现可以了,返回的值在10毫秒.有时为0毫秒.成功!! 但这并不是问题发生原因,在继续排查过程中偶然发现监听日志大小居然为4G。然后把这现象告诉了Luocs。 过了一会儿,Luocs回应是Oracle一个BUG,BUG号为9879101 : THE CONNECT THROUGH LISTENER WAS SLOW WHEN LISTNER LOG GROWED 4GB。 Luocs还提供了MOS上一篇文章,ID 1319797.1 : WINDOWS: Listener Hangs & Lsnrctl Commands Are Slow or Hang,里面给出了解决方法: You can solve this problem by deleting the large listener in $ORACLE_BASE\diag\tnslsnr\\listener\trace\.log 1) Stop the listener process using the command line or Control Panel Service. 2) Delete the log file(s) that are at or approaching the 4G size limit at this location: $ORACLE_BASE\diag\tnslsnr\\listener\trace\.log 3) Issue any lsnrctl command and you will see a new listener.log in its place under: $ORACLE_BASE\diag\tnslsnr\\listener\trace\ Since ADR Diagnostics are enabled for this listener these steps cannot be done dynamically using the lsnrctl utility. e.g. LSNRCTL>set log_file mylog Will yield: TNS-01251: Cannot set trace/log directory under ADR. However, it is possible to disable the flat file listener logging using the following commands: LSNRCTL>set current_listener LSNRCTL>set log_status OFF LSNRCTL>save_config 我就按照以上说明如下进行: 1)LSNRCTL进入交互模式 2)执行set current_listener LISTENER 3)set log_status off 4)stop 停止监听器 5)手工删除ADR指定的监听日志路径下的listener.log文件 6)start重启监听器 7)status查看状态 到此问题解决。