zoukankan      html  css  js  c++  java
  • 【网摘】 TNS12518: TNS: 监听程序无法分发客户机连接

    最近学习ORACLE SHARED SERVER的时候遇到一个奇怪的错误。

    以下模拟错误并展示解决方法
    环境:WINXP_SP2_CHS + ORACLE_R2
    服务器配置为专用服务器,并且运行正常。

    1:使用SQLPLUS把服务器改变SHARED SERVER


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

    SQL*Plus: Release 10.2.0.1.0 - Production on 星期日 7月 15 18:08:43 2007

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


    连接到:
    Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
    With the Partitioning, OLAP and Data Mining options

    SQL> alter system set shared_servers=1;

    系统已更改。

    SQL>

    然后使用LSNRCTL查看监听器状态,马上就会发现有很多连接被拒绝


    D:/Documents and Settings/gdy>lsnrctl service

    LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 15-7月 -2007 18:1
    1: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 <machine: NETPLUS, pid: 3448>
             (ADDRESS=(PROTOCOL=tcps)(HOST=netplus)(PORT=1934))
          "D000" 已建立:1 已被拒绝:0 当前: 1 最大: 1002 状态: ready
             DISPATCHER <machine: NETPLUS, pid: 3996>
             (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 <machine: NETPLUS, pid: 3448>
             (ADDRESS=(PROTOCOL=tcps)(HOST=netplus)(PORT=1934))
          "D000" 已建立:1 已被拒绝:0 当前: 1 最大: 1002 状态: ready
             DISPATCHER <machine: NETPLUS, pid: 3996>
             (ADDRESS=(PROTOCOL=tcp)(HOST=netplus)(PORT=1933))
    命令执行成功

    D:/Documents and Settings/gdy>


    查看监听器日志发现如下错误
    15-7月 -2007 18:12:43 * (CONNECT_DATA=(SID=orcl)(CID=(PROGRAM=D:/oracle/product/10.2.0/db_1/bin/emagent.exe)(HOST=NETPLUS)(USER=SYSTEM))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.1)(PORT=2101)) * establish * orcl * 12518
    TNS-12518: TNS: 监听程序无法分发客户机连接
     ORA-28759: 无法打开文件
      TNS-12560: TNS: 协议适配器错误
       TNS-00540: SSL 协议适配器错误 


    而且在EM中会显示如下错误

    到实例的代理连接
    状态
    失败
    详细资料 无法连接到数据库实例: ORA-12518: TNS: 监听程序无法分发客户机连接 (DBD ERROR: OCIServerAttach)。


    上网搜索后发现可能是如下的原因:客户连接到监听器后,监听器把客户重定向到调度程序端口(很可能不是1521端口),由于操作系统问题,这些连接会被拒绝。
    要解决这个问题,只需要在LISTENER。ORA的头部加入这一行DIRECT_HANDOFF_TTC_LISTENER = OFF 即可。

    2:根据搜索到的原因,我们在LISTENER。ORA头部加入这一行


    # listener.ora Network Configuration File: D:/oracle/product/10.2.0/db_1/NETWORK/ADMIN/listener.ora
    # Generated by Oracle configuration tools.
    DIRECT_HANDOFF_TTC_LISTENER = OFF 
    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = D:/oracle/product/10.2.0/db_1)
          (PROGRAM = extproc)
        )
      )

    LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
        )
        (DESCRIPTION =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))
        )
      )



    3:执行以下命令重启监听器和EM


    lsnrctl stop
    lsnrctl start
    emctl stop dbconsole
    emctl start dbconsole



    4:查看监听器状态和登入EM,看到状态,一切正常


    D:/Documents and Settings/gdy>lsnrctl service

    LSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 15-7月 -2007 18:2
    8: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 个处理程序...
        处理程序:
          "D001" 已建立:0 已被拒绝:0 当前: 0 最大: 1002 状态: ready
             DISPATCHER <machine: NETPLUS, pid: 3448>
             (ADDRESS=(PROTOCOL=tcps)(HOST=netplus)(PORT=1934))
          "D000" 已建立:7 已被拒绝:0 当前: 6 最大: 1002 状态: ready
             DISPATCHER <machine: NETPLUS, pid: 3996>
             (ADDRESS=(PROTOCOL=tcp)(HOST=netplus)(PORT=1933))
          "DEDICATED" 已建立:1 已拒绝:0 状态:ready
             LOCAL SERVER
    服务 "orcl_XPT" 包含 1 个例程。
      例程 "orcl", 状态 READY, 包含此服务的 3 个处理程序...
        处理程序:
          "D001" 已建立:0 已被拒绝:0 当前: 0 最大: 1002 状态: ready
             DISPATCHER <machine: NETPLUS, pid: 3448>
             (ADDRESS=(PROTOCOL=tcps)(HOST=netplus)(PORT=1934))
          "D000" 已建立:7 已被拒绝:0 当前: 6 最大: 1002 状态: ready
             DISPATCHER <machine: NETPLUS, pid: 3996>
             (ADDRESS=(PROTOCOL=tcp)(HOST=netplus)(PORT=1933))
          "DEDICATED" 已建立:1 已拒绝:0 状态:ready
             LOCAL SERVER
    命令执行成功

    D:/Documents and Settings/gdy>



    官方论坛有说到这个问题
    http://forums.oracle.com/forums/thread.jspa?threadID=267593

  • 相关阅读:
    CF 142B Tprimes
    CF 231A Team
    poj 2001 Shortest Prefixes ——字典树入门
    hdu 1039 Easier Done Than Said?
    poj 2528 Mayor's posters
    hdu 1061 Rightmost Digit
    poj 2503 Babelfish
    CF271 A. Beautiful Year
    poj 2752
    CF271 B. Prime Matrix
  • 原文地址:https://www.cnblogs.com/uniqueness/p/3024922.html
Copyright © 2011-2022 走看看