oracle 启动监听 报“监听程序不支持服务” 解决

oracle 启动监听 报“监听程序不支持服务” 解决

2015年03月10日 17:23:32

阅读数:4646

今天安装了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的时候心不在焉啦啦!!不过,若非心不在焉,怎么能学会在发现问题的时候怎么排查呢~以后再出现监听方面的问题,就知道从何下手了。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Linux上启动Oracle监听,可以按照以下步骤操作: 1. 以oracle用户身份登录到Linux系统。 2. 打开终端,进入Oracle的安装目录下的bin目录。 3. 执行以下命令启动监听程序: ``` ./lsnrctl start ``` 4. 如果监听程序启动成功,终端会输出类似以下的信息: ``` Starting /u01/app/oracle/product/11.2.0/db_1/bin/tnslsnr: please wait... TNSLSNR for Linux: Version 11.2.0.1.0 - Production System parameter file is /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora Log messages written to /u01/app/oracle/diag/tnslsnr/localhost/listener/alert/log.xml Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))) Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production Start Date 20-AUG-2019 07:18:20 Uptime 0 days 0 hr. 0 min. 0 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora Listener Log File /u01/app/oracle/diag/tnslsnr/localhost/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))) Services Summary... Service "orcl" has 1 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service... The command completed successfully ``` 这表示监听程序已经启动,并且在本地监听1521端口。 如果监听程序启动失败,终端会输出错误信息,可以根据错误信息进行排查和修复。 5. 可以使用以下命令检查监听程序的状态: ``` ./lsnrctl status ``` 如果监听程序正常运行,终端会输出类似以下的信息: ``` Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))) STATUS of the LISTENER ------------------------ Alias LISTENER Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production Start Date 20-AUG-2019 07:18:20 Uptime 0 days 0 hr. 4 min. 34 sec Trace Level off Security ON: Local OS Authentication SNMP OFF Listener Parameter File /u01/app/oracle/product/11.2.0/db_1/network/admin/listener.ora Listener Log File /u01/app/oracle/diag/tnslsnr/localhost/listener/alert/log.xml Listening Endpoints Summary... (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))) Services Summary... Service "orcl" has 1 instance(s). Instance "orcl", status READY, has 1 handler(s) for this service... The command completed successfully ``` 如果监听程序没有正常运行,可以根据错误信息进行排查和修复。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值