今天装了个XE,但一连接就直接报12541错误,说无监听程序
下面是tnsnames的配置
XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = xrkj-e86332a8bd)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )
下面是listener的配置
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = D:\oracle\xe\app\oracle\product\10.2.0\server)
      (PROGRAM = extproc)
    )
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = D:\oracle\xe\app\oracle\product\10.2.0\server)
      (PROGRAM = extproc)
    )
  )LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
      (ADDRESS = (PROTOCOL = TCP)(HOST = xrkj-e86332a8bd)(PORT = 1521))
    )
  )DEFAULT_SERVICE_LISTENER = (XE)
xrkj-e86332a8bd为计算机名
用sqlplus连接的话是可以连接,但连接不了XE,如下:
connect sys/sys as sysdba  成功
connect sys/sys@XE as sysdba  报错:ORA-12541:TNS:无监听程序
但服务器的监听都是启动了的
就搞不懂了,望各位牛人赐教

解决方案 »

  1.   

    问题补充:
    监听正常啊。
    C:\>lsnrctlLSNRCTL for 32-bit Windows: Version 10.2.0.1.0 - Production on 08-12月-2011 19:0
    7:12Copyright (c) 1991, 2005, Oracle.  All rights reserved.欢迎来到LSNRCTL, 请键入"help"以获得信息。LSNRCTL> status
    正在连接到 (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC_FOR_XE)))
    LISTENER 的 STATUS
    ------------------------
    别名                      LISTENER
    版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
    ction
    启动日期                  08-12月-2011 18:18:37
    正常运行时间              0 天 0 小时 48 分 41 秒
    跟踪级别                  off
    安全性                    ON: Local OS Authentication
    SNMP                      OFF
    默认服务           XE
    监听程序参数文件          D:\oracle\xe\app\oracle\product\10.2.0\server\network\
    admin\listener.ora
    监听程序日志文件          D:\oracle\xe\app\oracle\product\10.2.0\server\network\
    log\listener.log
    监听端点概要...
      (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC_FOR_XEipc)))
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=xrkj-e86332a8bd)(PORT=1521)))
      (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=127.0.0.1)(PORT=8080))(Presentation=
    HTTP)(Session=RAW))
    服务摘要..
    服务 "CLRExtProc" 包含 1 个例程。
      例程 "CLRExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
    服务 "PLSExtProc" 包含 1 个例程。
      例程 "PLSExtProc", 状态 UNKNOWN, 包含此服务的 1 个处理程序...
    服务 "XEXDB" 包含 1 个例程。
      例程 "xe", 状态 READY, 包含此服务的 1 个处理程序...
    服务 "XE_XPT" 包含 1 个例程。
      例程 "xe", 状态 READY, 包含此服务的 1 个处理程序...
    服务 "xe" 包含 1 个例程。
      例程 "xe", 状态 READY, 包含此服务的 1 个处理程序...
    命令执行成功
      

  2.   

    HOST = xrkj-e86332a8bd  右边改成你的电脑ip试下
      

  3.   

    问题解决了,但还是不知道原因,处理问题如下:
    将tnsnames和listener的HOST=IP改为了HOST=localhost
    如此启动后报“ ORA-12514: TNS: 监听程序无法识别连接描述符中请求的服务”错误
    将 (SID_NAME = PLSExtProc) 改为 (SID_NAME = orcl) ,重启 listener 。 
    重新用 pl/sql 登录,报错:“ ORA-28547: TNS: 连接服务器失败,可能是 Net8 管理错误。” 
    删掉上述文件中的 (PROGRAM = extproc) ,重启 listener ,用 pl/sql 登录,成功。不知道为什么。 
      

  4.   

    上面打错了,是将 (SID_NAME = PLSExtProc) 改为 (SID_NAME = XE) ,重启 listener 
      

  5.   

    我碰见过这种问题,把那一行注释掉就可以了,也不知道怎么回事?
    # listener.ora Network Configuration File: /opt/app/oracle/product/10.1.0/db_1/n
    etwork/admin/listener.ora
    # Generated by Oracle configuration tools.SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = orcl)
          (ORACLE_HOME = /opt/app/oracle/product/10.1.0/db_1)
    #      (PROGRAM = extproc)
        )
      )LISTENER =
      (DESCRIPTION_LIST =
        (DESCRIPTION =
    #      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
          (ADDRESS = (PROTOCOL = TCP)(HOST = ems_dl580)(PORT = 1521))
        )
      )