oracle 启动监听提示 :The listener supports no services

[oracle@DC04024 ~]$ lsnrctl start

LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 25-MAR-2014 16:38:58

Copyright (c) 1991, 2009, Oracle.  All rights reserved.

Starting /XXXX/app/oracle/product/11.2.0/XXXX/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 11.2.0.1.0 - Production
System parameter file is /XXXX/app/oracle/product/11.2.0/XXXX/network/admin/listener.ora
Log messages written to /XXXX/app/oracle/diag/tnslsnr/DC04024/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=DC04024)(PORT=1521)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date                25-MAR-2014 16:38:58
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /XXXX/app/oracle/product/11.2.0/XXXX/network/admin/listener.ora
Listener Log File         /XXXX/app/oracle/diag/tnslsnr/DC04024/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=DC04024)(PORT=1521)))
The listener supports no services
The command completed successfully
[oracle@DC04024 ~]$

这样启动后远程连接会造成
oracle ORA-12514:TNS:listener does not currently know of service requested in connect descriptor
*******************************************
* 解决方案一
*******************************************
原因:数据库实例不能注册到listener

--登录数据库
$sqlplus / as sysdba
--显示服务名
SQL>show parameter service_names
--强制注册服务
SQL>alter system register;
--查看监听状态
$lsnrctl status

*******************************************
* 解决方案二(静态注册)
*******************************************
在listener.ora里面添加了一行

SID_LIST_LISTENER =  
(SID_LIST =  
  (SID_DESC =  
  (GLOBAL_DBNAME = globe)
  (SID_NAME = globe)
  )
)
*******************************************
* 解决方案三(静态注册)
*******************************************

Oracle Net Manager修改配置

在下图的Listeners->Database Services中配置要监听的SID及ORACLE_HOME,退出保存。

 

*nux上面:

[oracle@DC04024 ~]$ netmgr



lsnrctl start
提示:
The listener supports no services
The command completed successfully

这样启动后远程连接会造成
oracle ORA-12514:TNS:listener does not currently know of service requested in connect descriptor

---方案一---------原因:数据库实例注册到listener-----------------------------------

--登录数据库
$sqlplus / as sysdba
--显示服务名
SQL>show parameter service_names
--强制注册服务
SQL>alter system register;
--查看监听状态
$lsnrctl status

-----方案二--------------------------------------

问题解决了
在listener.ora里面添加了一行

SID_LIST_LISTENER =  
(SID_LIST =  
  (SID_DESC =  
  (GLOBAL_DBNAME = globe)
  (SID_NAME = globe)
  )
)

-----方案三-------------------------

后发现Oracle有个Net Manager可用:

在下图的Listeners->Database Services中配置要监听的SID及ORACLE_HOME,退出保存。

 

linux上面:

[root@localhost oracle]# xhost +

[root@localhost oracle]# su - oracle

[oracle@localhost ~]$ netmgr
========================================================================================

Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
TNS-12535: TNS:operation timed out
TNS-12560: TNS:protocol adapter error
TNS-00505: Operation timed out
   Linux Error: 110: Connection timed out
LSNRCTL>

今天在启动监听的时候发现需要等很长时间,而且还报错。想想这两天机器做过的改变,只有防火墙动了一下(由于是测试机我试验一下iptables的一些配置)。我马上暂停了防火墙服务,监视服务起来了而且没有任何错误。马上搜一下,是由于我没有在本地防火墙里添加可以127.0.0.1的IP INPUT许可原因。其实只要ping 一下自己的机器名,如果通就可以了。


11.2.0.3 linux 64bit  启动ORACLE监听器,结尾报 The listener supports no services ,数据库实例services没被注册监听,前几天装aix的11.2.0.3 rac的时候没这毛病,很奇怪~

2种方法解决:
一、手工注册,每次重启监听都需要手工注册:
SQL> alter system register;
System altered.

二、修改 listener.ora,一劳永逸解决问题
在LISTENER里添加内容:
SID_LIST_LISTENER =
(SID_LIST =
  (SID_DESC =
  (GLOBAL_DBNAME = orcl)
  (SID_NAME = orcl)
  )
)
另,感觉这是个bug,google下·看到:http://www.askmaclean.com/archives/11gr2-rac-add-listener-static-register.html
原来在11gr2新建和修改监听后,不会自动静态注册,需要退出netca 界面,启动netmgr界面,为监听加入静态注册的信息:
点选方才创建的监听器,选择Database Services菜单
填入Global Database Name和本地实例的SID信息,并确认ORACLE HOME Directory(应是Grid Infrastructure的Home目录)正确后点选Save Network Configuration。
重启监听即可
请使用浏览器的分享功能分享到微信等