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

  • 相关阅读:
    JavaScript高级程序设计读书笔记(二)变量 作用域和内存
    JavaScript高级程序设计读书笔记(一)基础概念
    angular6 + ng-zorro鹿途后台管理系统(三)项目升级改造 01 升级ng-zorro-antd到1.8+
    angular6 + ng-zorro鹿途后台管理系统(三)环境变量配置
    angular6 + ng-zorro鹿途后台管理系统(二)项目结构规划
    angular6 + ng-zorro鹿途后台管理系统(一)
    web-view——微信小程序嵌入H5
    JS知识整理随笔(8) BOM
    JS知识整理随笔(7) DOM事件
    基础信息论 (复习)
  • 原文地址:https://www.cnblogs.com/uniqueness/p/3024922.html
Copyright © 2011-2022 走看看