转自 http://www.51testing.com/html/99/478599-842622.html

今天安装了oracle后,启动监听,报错如下:

  
启动tnslsnr: 请稍候...
 
TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Production
写入E:\oracle\product\10.2.0\db_2\network\log\listener.log的日志信息
监听: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=win2003-64Template)(PORT=1521)))
 
正在连接到 (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
LISTENER 的 STATUS
------------------------
别名                      LISTENER
版本                      TNSLSNR for 32-bit Windows: Version 10.2.0.1.0 - Produ
ction
启动日期                  25-3月 -2013 14:30:30
正常运行时间              0 天 0 小时 0 分 1 秒
跟踪级别                  off
安全性                    ON: Local OS Authentication
SNMP                      OFF
监听程序日志文件          E:\oracle\product\10.2.0\db_2\network\log\listener.log
监听端点概要...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=win2003-64Template)(PORT=1521)))
监听程序不支持服务
命令执行成功
 
服务端报监听程序不支持服务,那就把焦点放在listener.ora文件上来。listener.ora是oracle服务器端的网络配置文件,oracle根据它来配监听服务。它接受远程对数据库的申请,并转交给oracle的服务进程。出现这个问题的可能原因是文件中没有增加那个配置。
于是检查了一下 E:\oracle\product\10.2.0\db_2\network\Admin文件夹,发现果然是没有listener.ora文件。难道我迷迷糊糊没有建立监听文件,直接去新建了本地net配置?先不管三七二十一,加上listener.ora。添加的内容如下,这个跟通过Net Configuration Assistant新建监听文件的内容是一样的:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = E:\oracle\product\10.2.0\db_2)
      (PROGRAM = extproc)
    )   
  )
 
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = win2003-64Template)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )
顺便复习一下listener.ora的作用:在这个文件中一般我们会看到两个参数
1)参数LISTENER  定义了 监听“LISTENER” 的 监听协议地址(listening protocol address)
格式例子:
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
      (ADDRESS = (PROTOCOL = TCP)(HOST = CHINA-E24EA7C0A)(PORT = 1521))
    )
  )
 
2)参数SID_LIST_LISTENER 用于提供 监听“LISTENER” 所能够静态支持的服务信息。
而且,如果使用EM(Oracle Enterprise Manager)去管理数据库的话,这个参数是必须的。
 
格式例子:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = c:\oracle\product\10.2.0\db_1)
      (PROGRAM = extproc)
    )
  )
上面看到PLSExtProc,PLSExtProc不是oracle实例,是pl/sql external procdure 的意思,就是在pl/sql中调用外部语句,如c,java写的过程。这个里面的配置,是让监听器产生extproc agent,实际上就是一个extproc进程,用于为external procedure 服务。
 
添加listener.ora好了,再次启动。好了,这次启动成功,出现下面界面:
看到只启动了PLSExtProc,而我们新建的实例orcl却没有起来。这样其它计算机使用pl/sql连接的话,会出现“ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务”。当然原因还是在于listener.ora。一般新建监听之后,listener.ora中会有相应的配置,但不知道为什么我在上面的操作中也新建了监听,却没有自动生成。那我修改SID_LIST_LISTENER 手动添加以下内容:
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (ORACLE_HOME = E:\oracle\product\10.2.0\db_2)
      (PROGRAM = extproc)
    )
   (SID_DESC =
      (SID_NAME = orcl)
      (ORACLE_HOME = E:\oracle\product\10.2.0\db_2)
      (GLOBAL_DBNAME= orcl)
  )
)
 
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = win2003-64Template)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )
 
OK,再试一次。成功。
 
 
虽然可能是很简单的问题,但是还是从中了解了listener.ora的作用,而且,侧面反映出我装oracle的时候心不在焉啦啦!!不过,若非心不在焉,怎么能学会在发现问题的时候怎么排查呢~以后再出现监听方面的问题,就知道从何下手了。

(转)oracle 启动监听 报“监听程序不支持服务” 解决的更多相关文章

  1. 虚拟机启动linux系统报错,此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态

    在使用虚拟机启动linux的时候报错,如下: 已将该虚拟机配置为使用 64 位客户机操作系统.但是,无法执行 64 位操作. 此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态. ...

  2. Navicat Premium 连接Oracle登入时候报ORA-12638: 身份证明检索失败的解决办法

    我的电脑是64位,oracle也是64位, plsql客户端是32位,oci连接的是32位 11.2版本: 用plsql 连接本地或远程数据库都没问题.在用 Navicat Premium 连本也没问 ...

  3. Eclipse新建web项目正常启动tomcat不报错,但不能访问项目的解决方法

    原因:  虽然我手动添加了自己下载的tomcat,但是由于在Eclipse中创建Server时,"Server Locations"选项采用的时默认配置,即"Use wo ...

  4. intellij IDEA启动springboot项目报无效的源发行版错误解决方法

    从http://start.spring.io/ 上下载的springboot 模板项目,导入intellij 后,报如下错误,原因是intellij 默认使用的Java compiler 是1.8版 ...

  5. idea 启动java项目报错 java: 程序包javax.servlet.http不存在

    File -- Project Structure

  6. idea 启动springboot项目报找不到主类

    今天搭建的一个新springboot项目,运行启动类时控制报找不到主类错误 解决方法: 在idea控制台输入mvn clean install命令

  7. 重启服务器后,启动oracle监听报错 The listener supports no services The command completed successfuslly

    启动监听报错如下图所示: 远程连接报错如下图所示: 问题原因:数据库实例没注册到listener中 解决方法: (1)登录数据库:$sqlplus  / as sysdba (2)显示服务名:sql& ...

  8. Oracle启动两个监听

    接上篇:Oracle服务器修改IP后 Oracle服务器更换IP后,办公网络里面可以正常访问了,外地的同事,连了vpn 也可以访问,以为可以收工回家,突然又有同事过来说,机房的服务器ping不通新的i ...

  9. Linux下oracle启动/关闭监听(bash:lsnrctl:command not found)

    打开终端 切换帐户 # su - Oracle 启动监听 $ lsnrctl start 关闭监听 $ lsnrctl stop 切换帐户一定要加 "-" 否则会出现:   bas ...

随机推荐

  1. Coderfroces 862 B . Mahmoud and Ehab and the bipartiteness

     Mahmoud and Ehab and the bipartiteness Mahmoud and Ehab continue their adventures! As everybody in ...

  2. Fedora 29 Linux发行版发布,新功能使Web开发人员的工作更方便

    Matthew Miller宣布发布Fedora 29.这个项目的最新版本是在Fedora Core 1发布后几乎整整15年才发布的,并且可以在多个版本中用于多个体系结构. 最新版本的Fedora已经 ...

  3. JS jQuery查看系统中安装的字体

    1.下载插件:FontDetect插件  地址:http://www.lalit.org/lab/javascript-css-font-detect/ 或者复制以下代码到fontdetect.js: ...

  4. JQ遍历 input 并修改name属性

    1.执行完克隆行后,会出现name属相相同的问题 function addRow(){ var obj = $("tr[name='info']:last"); var objCl ...

  5. Activiti工作流框架学习(二)——使用Activiti提供的API完成流程操作

    可以在项目中加入log4j,将logj4.properties文件拷入到src目录下,这样框架执行的sql就可以输出到到控制台,log4j提供的日志级别有以下几种: Fatal  error  war ...

  6. 自建的IPV6管道

    前阵子琢磨IPV6,建立了一个给本机分配IPV6地址的管道,不怎么稳定  http://6tu.me

  7. Zabbix自动发现与自动注册.

    一, 自动发现与自动注册 自动发现? 当场景中出现要添加很多台主机的时候,一台台添加难免太过于繁琐,zabbix提供自动注册,自动发现,可以实现主机的批量添加, zabbix的发现包括三种类型: # ...

  8. Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory(转)

    1. Spring整合MyBatis切换SqlSessionFactory有两种方法,第一. 继承SqlSessionDaoSupport,重写获取SqlSessionFactory的方法.第二.继承 ...

  9. 4455: [Zjoi2016]小星星|状压DP|容斥原理

    OrzSDOIR1ak的晨神 能够考虑状压DP枚举子集,求出仅仅保证连通性不保证一一相应的状态下的方案数,然后容斥一下就是终于的答案 #include<algorithm> #includ ...

  10. UVa 11094 - Continents

    题目:有一些岛屿在湖中.地图用两种字符表示.当前处在位置是一个岛屿.求除了当前岛屿外的最大岛屿. 分析:图论,floodfill.直接利用dfs求联通部分的面积就可以,然后取出最大. 说明:横线没有边 ...