发表于: 2007.03.29 10:55
分类: ORACLE , Bug
出处: http://yangtingkun.itpub.net/post/468/275571
---------------------------------------------------------------
今天发现一个SRVCTL命令的小bug。
SRVCTL工具可以用来管理RAC环境,用来启动、关闭数据库、监听和其他服务。
今天在使用srvctl关闭监听的时候,发现一个小问题:
$ lsnrctl status
LSNRCTL for Solaris: Version 10.2.0.2.0 - Production on 29-3月 -2007 10:31:11
Copyright (c) 1991, 2005, Oracle. All rights reserved.
正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
LISTENER 的 STATUS
------------------------别名 LISTENER_RACNODE2版本 TNSLSNR for Solaris: Version 10.2.0.2.0 - Production启动日期 28-3月 -2007 10:27:02正常运行时间 1 天 0 小时 4 分 9 秒跟踪级别 off安全性 ON: Local OS Authentication
SNMP OFF监听程序参数文件 /data/oracle/product/10.2/database/network/admin/listener.ora监听程序日志文件 /data/oracle/product/10.2/database/network/log/listener_racnode2.log监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.25.198.225)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.25.198.223)(PORT=1521)))服务摘要..服务 "+ASM" 包含 1 个例程。
例程 "+ASM2", 状态 BLOCKED, 包含此服务的 1 个处理程序...服务 "+ASM_XPT" 包含 1 个例程。
例程 "+ASM2", 状态 BLOCKED, 包含此服务的 1 个处理程序...服务 "PLSExtProc" 包含 1 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...服务 "testrac" 包含 2 个例程。
例程 "testrac1", 状态 READY, 包含此服务的 1 个处理程序...
例程 "testrac2", 状态 READY, 包含此服务的 2 个处理程序...服务 "testracXDB" 包含 2 个例程。
例程 "testrac1", 状态 READY, 包含此服务的 1 个处理程序...
例程 "testrac2", 状态 READY, 包含此服务的 1 个处理程序...服务 "testrac_XPT" 包含 2 个例程。
例程 "testrac1", 状态 READY, 包含此服务的 1 个处理程序...
例程 "testrac2", 状态 READY, 包含此服务的 2 个处理程序...命令执行成功
$ srvctl stop listener -n racnode2
$ lsnrctl status
LSNRCTL for Solaris: Version 10.2.0.2.0 - Production on 29-3月 -2007 10:32:44
Copyright (c) 1991, 2005, Oracle. All rights reserved.
正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-12541: TNS: 无监听程序
TNS-12560: TNS: 协议适配器错误
TNS-00511: 无监听程序
Solaris Error: 146: Connection refused
$ lsnrctl start
LSNRCTL for Solaris: Version 10.2.0.2.0 - Production on 29-3月 -2007 10:32:47
Copyright (c) 1991, 2005, Oracle. All rights reserved.
启动/data/oracle/product/10.2/database/bin/tnslsnr: 请稍候...
TNSLSNR for Solaris: Version 10.2.0.2.0 - Production系统参数文件为/data/oracle/product/10.2/database/network/admin/listener.ora写入/data/oracle/product/10.2/database/network/log/listener.log的日志信息监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=racnode2)(PORT=1521)))
正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
LISTENER 的 STATUS
------------------------别名 LISTENER版本 TNSLSNR for Solaris: Version 10.2.0.2.0 - Production启动日期 29-3月 -2007 10:32:47正常运行时间 0 天 0 小时 0 分 0 秒跟踪级别 off安全性 ON: Local OS Authentication
SNMP OFF监听程序参数文件 /data/oracle/product/10.2/database/network/admin/listener.ora监听程序日志文件 /data/oracle/product/10.2/database/network/log/listener.log监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=racnode2)(PORT=1521)))监听程序不支持服务命令执行成功
$ srvctl stop listener -n racnode2
$ lsnrctl status
LSNRCTL for Solaris: Version 10.2.0.2.0 - Production on 29-3月 -2007 10:33:00
Copyright (c) 1991, 2005, Oracle. All rights reserved.
正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
LISTENER 的 STATUS
------------------------别名 LISTENER版本 TNSLSNR for Solaris: Version 10.2.0.2.0 - Production启动日期 29-3月 -2007 10:32:47正常运行时间 0 天 0 小时 0 分 12 秒跟踪级别 off安全性 ON: Local OS Authentication
SNMP OFF监听程序参数文件 /data/oracle/product/10.2/database/network/admin/listener.ora监听程序日志文件 /data/oracle/product/10.2/database/network/log/listener.log监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=racnode2)(PORT=1521)))监听程序不支持服务命令执行成功
如果用srvctl关闭监听后,再用lsnrctl start打开监听。这时srvctl仍然认为监听已经关闭。因此,再次使用srvctl关闭监听,似乎srvctl根本没有去执行。
如果希望srvctl可以关闭监听,那么需要先用srvctl启动监听,然后再关闭。
$ lsnrctl status
LSNRCTL for Solaris: Version 10.2.0.2.0 - Production on 29-3月 -2007 10:50:47
Copyright (c) 1991, 2005, Oracle. All rights reserved.
正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
LISTENER 的 STATUS
------------------------别名 LISTENER版本 TNSLSNR for Solaris: Version 10.2.0.2.0 - Production启动日期 29-3月 -2007 10:32:47正常运行时间 0 天 0 小时 18 分 0 秒跟踪级别 off安全性 ON: Local OS Authentication
SNMP OFF监听程序参数文件 /data/oracle/product/10.2/database/network/admin/listener.ora监听程序日志文件 /data/oracle/product/10.2/database/network/log/listener.log监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=racnode2)(PORT=1521)))服务摘要..服务 "+ASM" 包含 1 个例程。
例程 "+ASM2", 状态 BLOCKED, 包含此服务的 1 个处理程序...服务 "+ASM_XPT" 包含 1 个例程。
例程 "+ASM2", 状态 BLOCKED, 包含此服务的 1 个处理程序...服务 "testrac" 包含 2 个例程。
例程 "testrac1", 状态 READY, 包含此服务的 1 个处理程序...
例程 "testrac2", 状态 READY, 包含此服务的 2 个处理程序...服务 "testracXDB" 包含 2 个例程。
例程 "testrac1", 状态 READY, 包含此服务的 1 个处理程序...
例程 "testrac2", 状态 READY, 包含此服务的 1 个处理程序...服务 "testrac_XPT" 包含 2 个例程。
例程 "testrac1", 状态 READY, 包含此服务的 1 个处理程序...
例程 "testrac2", 状态 READY, 包含此服务的 2 个处理程序...命令执行成功
$ srvctl start listener -n racnode2
$ srvctl stop listener -n racnode2
$ lsnrctl status
LSNRCTL for Solaris: Version 10.2.0.2.0 - Production on 29-3月 -2007 10:51:28
Copyright (c) 1991, 2005, Oracle. All rights reserved.
正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-12541: TNS: 无监听程序
TNS-12560: TNS: 协议适配器错误
TNS-00511: 无监听程序
Solaris Error: 146: Connection refused
搜索了一下metalink,没有发现关于这个问题的说明。
而且,这个问题只在关闭监听时出现,启动监听则没有问题:
$ srvctl start listener -n racnode2
$ lsnrctl status
LSNRCTL for Solaris: Version 10.2.0.2.0 - Production on 29-3月 -2007 11:14:25
Copyright (c) 1991, 2005, Oracle. All rights reserved.
正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
LISTENER 的 STATUS
------------------------别名 LISTENER_RACNODE2版本 TNSLSNR for Solaris: Version 10.2.0.2.0 - Production启动日期 29-3月 -2007 11:14:20正常运行时间 0 天 0 小时 0 分 4 秒跟踪级别 off安全性 ON: Local OS Authentication
SNMP OFF监听程序参数文件 /data/oracle/product/10.2/database/network/admin/listener.ora监听程序日志文件 /data/oracle/product/10.2/database/network/log/listener_racnode2.log监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.25.198.225)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.25.198.223)(PORT=1521)))服务摘要..服务 "PLSExtProc" 包含 1 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...命令执行成功
$ lsnrctl stop
LSNRCTL for Solaris: Version 10.2.0.2.0 - Production on 29-3月 -2007 11:14:29
Copyright (c) 1991, 2005, Oracle. All rights reserved.
正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))命令执行成功
$ srvctl start listener -n racnode2
$ lsnrctl status
LSNRCTL for Solaris: Version 10.2.0.2.0 - Production on 29-3月 -2007 11:14:50
Copyright (c) 1991, 2005, Oracle. All rights reserved.
正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
LISTENER 的 STATUS
------------------------别名 LISTENER_RACNODE2版本 TNSLSNR for Solaris: Version 10.2.0.2.0 - Production启动日期 29-3月 -2007 11:14:44正常运行时间 0 天 0 小时 0 分 5 秒跟踪级别 off安全性 ON: Local OS Authentication
SNMP OFF监听程序参数文件 /data/oracle/product/10.2/database/network/admin/listener.ora监听程序日志文件 /data/oracle/product/10.2/database/network/log/listener_racnode2.log监听端点概要...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.25.198.225)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.25.198.223)(PORT=1521)))服务摘要..服务 "PLSExtProc" 包含 1 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...命令执行成功











