oracle 断电 监听问题,Oracle监听出现的问题总结,以及解决办法

ORA-12541: TNS: 无监听程序

C:UsersAdministrator>sqlplus sys/cape@orcl as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期六 2月 18 12:55:46 2017

Copyright (c) 1982, 2010, Oracle. All rights reserved.

ERROR:

ORA-12541: TNS: 无监听程序

请输入用户名:

出现该问题是当前的监听服务没有启动:

C:UsersAdministrator>lsnrctl status

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 18-2月 -2017 12:59:11

Copyright (c) 1991, 2010, Oracle. All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

TNS-12541: TNS: 无监听程序

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

TNS-00511: 无监听程序

64-bit Windows Error: 2: No such file or directory

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))

TNS-12541: TNS: 无监听程序

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

TNS-00511: 无监听程序

64-bit Windows Error: 61: Unknown error

启动监听后:

C:UsersAdministrator>lsnrctl start

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 18-2月 -2017 13:00:45

Copyright (c) 1991, 2010, Oracle. All rights reserved.

启动tnslsnr: 请稍候...

TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production

系统参数文件为C:appDyjproduct11.2.0dbhome_1networkadminlistener.ora

写入c:appdyjdiagtnslsnrdongyjlisteneralertlog.xml的日志信息

监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.pipeEXTPROC1521ipc)))

监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

LISTENER 的 STATUS

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

别名 LISTENER

版本 TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production

启动日期 18-2月 -2017 13:00:50

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

跟踪级别 off

安全性 ON: Local OS Authentication

SNMP OFF

监听程序参数文件 C:appDyjproduct11.2.0dbhome_1networkadminlistener.ora

监听程序日志文件 c:appdyjdiagtnslsnrdongyjlisteneralertlog.xml

监听端点概要...

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.pipeEXTPROC1521ipc)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))

服务摘要..

服务 "CLRExtProc" 包含 1 个实例。

实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

命令执行成功

这里需要注意,此处的监听没有监听实例ORCL是因为监听晚于实例启动,没有把实例注册到监听中,Oracle的PMON进程每隔1分钟(60S)就会重新扫描实例,将实例注册到监听中,参考如下【Database SQL Language Reference】,

如果需要马上将实例注册到监听中,需要使用语句:

alter system register

Specify REGISTER to instruct the PMON background process to register the instance with the listeners immediately. If you do not specify this clause, then registration of the instance does not occur until the next time PMON executes the discovery routine. As a result, clients may not be able to access the services for as long as 60 seconds after the listener is started.

使用alter system register或者一分钟过后

C:UsersAdministrator>lsnrctl status

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 18-2月 -2017 13:08:39

Copyright (c) 1991, 2010, Oracle. All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

LISTENER 的 STATUS

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

别名 LISTENER

版本 TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production

启动日期 18-2月 -2017 13:00:50

正常运行时间 0 天 0 小时 7 分 52 秒

跟踪级别 off

安全性 ON: Local OS Authentication

SNMP OFF

监听程序参数文件 C:appDyjproduct11.2.0dbhome_1networkadminlistener.ora

监听程序日志文件 c:appdyjdiagtnslsnrdongyjlisteneralertlog.xml

监听端点概要...

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.pipeEXTPROC1521ipc)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))

服务摘要..

服务 "CLRExtProc" 包含 1 个实例。

实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

服务 "orcl" 包含 1 个实例。

实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...

服务 "orclXDB" 包含 1 个实例。

实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...

命令执行成功

此时,重新连接数据库,数据库连接成功:

C:UsersAdministrator>sqlplus sys/cape@orcl as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期六 2月 18 13:10:16 2017

Copyright (c) 1982, 2010, Oracle. All rights reserved.

连接到:

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL>

在windows,也可以通过在服务中,启动监听,而不需要通过命令重新启动;

203618_0.png

2. ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

先检查监听的监控状况:

C:UsersAdministrator>lsnrctl status

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 18-2月 -2017 13:21:36

Copyright (c) 1991, 2010, Oracle. All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

LISTENER 的 STATUS

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

别名 LISTENER

版本 TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production

启动日期 18-2月 -2017 13:14:41

正常运行时间 0 天 0 小时 6 分 58 秒

跟踪级别 off

安全性 ON: Local OS Authentication

SNMP OFF

监听程序参数文件 C:appDyjproduct11.2.0dbhome_1networkadminlistener.ora

监听程序日志文件 c:appdyjdiagtnslsnrdongyjlisteneralertlog.xml

监听端点概要...

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.pipeEXTPROC1521ipc)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))

服务摘要..

服务 "CLRExtProc" 包含 1 个实例。

实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

命令执行成功

查看服务窗口下的实例服务是否启动:

203618_1.png

启动后,检查监听:

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

C:UsersAdministrator>sqlplus sys/cape as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期六 2月 18 13:27:40 2017

Copyright (c) 1982, 2010, Oracle. All rights reserved.

ERROR:

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

请输入用户名:

请注意上方的数据库连接方式:

sqlplus sys/cape as sysdba(在cape单词后面没有@orcl连接符),此时是不需要请求监听文件的,遇到该问题,则是因为数据库实例没有启动,导致无法连接数据库

下面是加了@orcl连接符的情况

C:UsersAdministrator>sqlplus sys/cape@orcl as sysdba

SQL*Plus: Release 11.2.0.1.0 Production on 星期六 2月 18 13:30:42 2017

Copyright (c) 1982, 2010, Oracle. All rights reserved.

ERROR:

ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务

请输入用户名:

查看监听,该实例也未监控;

C:UsersAdministrator>lsnrctl status

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 18-2月 -2017 13:31:25

Copyright (c) 1991, 2010, Oracle. All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

LISTENER 的 STATUS

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

别名 LISTENER

版本 TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production

启动日期 18-2月 -2017 13:14:41

正常运行时间 0 天 0 小时 16 分 47 秒

跟踪级别 off

安全性 ON: Local OS Authentication

SNMP OFF

监听程序参数文件 C:appDyjproduct11.2.0dbhome_1networkadminlistener.ora

监听程序日志文件 c:appdyjdiagtnslsnrdongyjlisteneralertlog.xml

监听端点概要...

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.pipeEXTPROC1521ipc)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))

服务摘要..

服务 "CLRExtProc" 包含 1 个实例。

实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

命令执行成功

重启启动实例后,监听监控到了实例

C:UsersAdministrator>lsnrctl status

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 18-2月 -2017 13:32:06

Copyright (c) 1991, 2010, Oracle. All rights reserved.

正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

LISTENER 的 STATUS

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

别名 LISTENER

版本 TNSLSNR for 64-bit Windows: Version 11.2.0.1.0 - Production

启动日期 18-2月 -2017 13:14:41

正常运行时间 0 天 0 小时 17 分 28 秒

跟踪级别 off

安全性 ON: Local OS Authentication

SNMP OFF

监听程序参数文件 C:appDyjproduct11.2.0dbhome_1networkadminlistener.ora

监听程序日志文件 c:appdyjdiagtnslsnrdongyjlisteneralertlog.xml

监听端点概要...

(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\.pipeEXTPROC1521ipc)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=1521)))

服务摘要..

服务 "CLRExtProc" 包含 1 个实例。

实例 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...

服务 "orcl" 包含 1 个实例。

实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...

服务 "orclXDB" 包含 1 个实例。

实例 "orcl", 状态 READY, 包含此服务的 1 个处理程序...

命令执行成功

203618_2.png

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查看状态 到此问题解决。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值