Oracle出现“TNS: 监听程序无法分发客户机连接”解决方法


1、问题描述:

打开sqlplus后用system角色登陆

然后切换成scott用户,再切换成sys

D:/>sqlplus sys/admin@orcl as sysdba

然后接下去操作出现 “TNS: 监听程序无法分发客户机连接”

2、解决过程

用lsnrctl service查看监听状态

D:/Documents and Settings>lsnrctl service

  1. LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 3-10月 -2012 20:11:19 
  2.  
  3. Copyright (c) 1991, 2005, Oracle.  All rights reserved. 
  4.  
  5. 正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1))) 
  6. 服务摘要.. 
  7. 服务 "PLSExtProc" 包含 1 个例程。 
  8.   例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序... 
  9.     处理程序: 
  10.       "DEDICATED" 已建立:0 已被拒绝:0 
  11.          LOCAL SERVER 
  12. 服务 "orcl" 包含 1 个例程。 
  13.   例程 "orcl", 状态 READY, 包含此服务的 3 个处理程序... 
  14.     处理程序: 
  15.       "DEDICATED" 已建立:33 已拒绝:0 状态:ready 
  16.          LOCAL SERVER 
  17.       "D001" 已建立:0 已被拒绝:9 当前: 0 最大: 1002 状态: ready 
  18.          DISPATCHER <machine: NETPLUS, pid: 3448> 
  19.          (ADDRESS=(PROTOCOL=tcps)(HOST=netplus)(PORT=1934)) 
  20.       "D000" 已建立:1 已被拒绝:0 当前: 1 最大: 1002 状态: ready 
  21.          DISPATCHER <machine: NETPLUS, pid: 3996> 
  22.          (ADDRESS=(PROTOCOL=tcp)(HOST=netplus)(PORT=1933)) 
  23. 服务 "orcl_XPT" 包含 1 个例程。 
  24.   例程 "orcl", 状态 READY, 包含此服务的 3 个处理程序... 
  25.     处理程序: 
  26.       "DEDICATED" 已建立:33 已拒绝:0 状态:ready 
  27.          LOCAL SERVER 
  28.       "D001" 已建立:0 已被拒绝:9 当前: 0 最大: 1002 状态: ready 
  29.          DISPATCHER <machine: NETPLUS, pid: 3448> 
  30.          (ADDRESS=(PROTOCOL=tcps)(HOST=netplus)(PORT=1934)) 
  31.       "D000" 已建立:1 已被拒绝:0 当前: 1 最大: 1002 状态: ready 
  32.          DISPATCHER <machine: NETPLUS, pid: 3996> 
  33.          (ADDRESS=(PROTOCOL=tcp)(HOST=netplus)(PORT=1933)) 
  34. 命令执行成功 

如下的原因:客户连接到监听器后,监听器把客户重定向到调度程序端口(很可能不是1521端口),由于操作系统问题,这些连接会被拒绝。

要解决这个问题,只需要在LISTENER。ORA的头部加入这一行DIRECT_HANDOFF_TTC_LISTENER = OFF 即可。

解法方法:

在listener.ora加入下面的“加入内容”

  1. # listener.ora Network Configuration File: E:\oracle\product\11.2.0\dbhome_1\network\admin\listener.ora 
  2. # Generated by Oracle configuration tools. 
  3. DIRECT_HANDOFF_TTC_LISTENER = OFF   //加入的内容</SPAN><SPAN style="COLOR: #333333"> 
  4. SID_LIST_LISTENER = 
  5.   (SID_LIST = 
  6.     (SID_DESC = 
  7.       (SID_NAME = CLRExtProc
  8.       (ORACLE_HOME = E:\oracle\product\11.2.0\dbhome_1) 
  9.       (PROGRAM = extproc
  10.       (ENVS = "EXTPROC_DLLS=ONLY:E:\oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll"
  11.     ) 
  12.   )

然后在命令行执行以下命令重启监听器和EM,如果还有问题就再重新启动下oracle服务

lsnrctl stop
lsnrctl start
emctl stop dbconsole
emctl start dbconsole

相关内容