1、问题描述:
打开sqlplus后用system角色登陆
然后切换成scott用户,再切换成sys
D:/>sqlplus sys/admin@orcl as sysdba
然后接下去操作出现 “TNS: 监听程序无法分发客户机连接”
2、解决过程
用lsnrctl service查看监听状态
D:/Documents and Settings>lsnrctl service
LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 3-10月 -2012 20:11:19
Copyright (c) 1991, 2005, Oracle. All rights reserved.
正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
服务摘要..
服务 "PLSExtProc" 包含 1 个例程。
例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
处理程序:
"DEDICATED" 已建立:0 已被拒绝:0
LOCAL SERVER
服务 "orcl" 包含 1 个例程。
例程 "orcl", 状态 READY, 包含此服务的 3 个处理程序...
处理程序:
"DEDICATED" 已建立:33 已拒绝:0 状态:ready
LOCAL SERVER
"D001" 已建立:0 已被拒绝:9 当前: 0 最大: 1002 状态: ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcps)(HOST=netplus)(PORT=1934))
"D000" 已建立:1 已被拒绝:0 当前: 1 最大: 1002 状态: ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=netplus)(PORT=1933))
服务 "orcl_XPT" 包含 1 个例程。
例程 "orcl", 状态 READY, 包含此服务的 3 个处理程序...
处理程序:
"DEDICATED" 已建立:33 已拒绝:0 状态:ready
LOCAL SERVER
"D001" 已建立:0 已被拒绝:9 当前: 0 最大: 1002 状态: ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcps)(HOST=netplus)(PORT=1934))
"D000" 已建立:1 已被拒绝:0 当前: 1 最大: 1002 状态: ready
DISPATCHER
(ADDRESS=(PROTOCOL=tcp)(HOST=netplus)(PORT=1933))
命令执行成功
如下的原因:客户连接到监听器后,监听器把客户重定向到调度程序端口(很可能不是1521端口),由于操作系统问题,这些连接会被拒绝。
要解决这个问题,只需要在LISTENER。ORA的头部加入这一行DIRECT_HANDOFF_TTC_LISTENER = OFF 即可。
解法方法:
在listener.ora加入下面的“加入内容”
# listener.ora Network Configuration File: E:oracleproduct11.2.0dbhome_1networkadminlistener.ora
# Generated by Oracle configuration tools.
= OFF //加入的内容
=
( =
( =
( = CLRExtProc)
( = E:oracleproduct11.2.0dbhome_1)
( = extproc)
( = "EXTPROC_DLLS=ONLY:E:oracleproduct11.2.0dbhome_1binoraclr11.dll")
)
)
然后在命令行执行以下命令重启监听器和EM,如果还有问题就再重新启动下oracle服务
lsnrctl stop
lsnrctl start
emctl stop dbconsole
emctl start dbconsole