转自 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. 不允许 ASSIGNMENT 语句中包含 FOR XML 子句。

    DECLARE @guidList NVARCHAR(max) SELECT @guidList=( CAST(OrderGUID AS nvarchar(max)) +',') FROM Order ...

  2. 学习思考:思考>努力

    学.习.思.考 学习.思考,这2个词,4个字,其实代表了4个不同的动作:学.习.思.考. 学,就是从外部(他人)获得. 习,就是练习,行动. 思,就是从内部(自己)获得. 考,就是考量,检测. 因此, ...

  3. vue抽取公共方法———方法一

    方法一:Vue插件 1.概述 作用:满足vue之外的需求,特定场景的需求 比如说,让你在每个单页面组件里,都可以调用某个方法(公共方法),或者共享某个变量等 2.使用方法 [声明插件]- [写插件]- ...

  4. 【Django】Cookie

    目录 Cookie介绍 操作Cookie 获取Cookie 设置 Cookie 删除Cookie @ Cookie介绍 Cookie的由来 大家都知道==HTTP协议是无状态的==. ==无状态的的意 ...

  5. javescript定时器demo

    本来认为这个事情还是挺easy的不值得写上去,今天同事突然问我.我心想曾经写过,可是就是想不起函数的名称的,于是翻了一下原来的代码. function run() { interval = setIn ...

  6. JavaFX 一 出生新手村(阅读小规则)

    我就不讲IDE怎么装的,网上有的是,我仅仅是说说我学习过程中遇到的,该注意的东西 1.JavaFX刚開始出是基于脚本script开发的语言,所以网上会有流传比較多关于script的JavaFX,对于被 ...

  7. js--11对象的创建方式

    <html> <head> <title>Object</title> </head> <body> <script ty ...

  8. headset-监听有线耳机插拔

    今天在做项目的时候,需要对耳机的插拔事件进行监听,所以就写了如下的一个小demo,对耳机监听事件进行验证.直接看代码 package com.example.alert; import android ...

  9. SAR(遥感、卫星) 图像常用数据集

    Brazilian Coffee Scenes数据集较小,5MB左右: UC Merced Land Use Dataset(数据集规模较大,300MB+) MSTAR public targets ...

  10. 53.遇到SyntaxError: Unexpected token

    转自:https://segmentfault.com/q/1010000002649920/a-1020000002655984 不知道你自己现在已经发现问题没, Unexpected token ...