对于oracle监听失败及【The listener supports no services错误的处理】

42 篇文章 0 订阅

在大家连接oracle数据库的时候,可能在数据库服务器上通过conn name/password可以登陆上数据库,但是在通过数据库管理软件连接时,会提示无监听、或者是在通过lsnrctl status查看监听时,显示的是监听失败,原因可能是hostname改变了,倘若你还记得以前的hostname 的话,你可以查询下现在的hostname(命令:hostname)如果改变了,可以通过命令(hostname 要改为的hostname),这样你在重新监听的时候就ok,希望可以帮助到大家

**

请注意下面出现的问题

**
当使用命令 lsnrctl statusshi 出现 ***The listener supports no services***时,建议使用以下操作,亲测可行
1、检查hostname
2、检查 network/admin/listener.ora中的host
确保这俩项没有问题后
具体操作
1、登录sqlplus sqlplus / as sysdba
2、查看parameter name 【注意次啊图中出现等号==的地方】

SQL> show parameter name;

NAME                                 TYPE       VALUE
------------------------------------ ----------- ------------------------------
db_file_name_convert                 string
db_name                              string      strmtarg
db_unique_name                       string      strmtarget
global_names                         boolean     TRUE
instance_name                        string      ==orcl==
lock_name_space                      string
log_file_name_convert                string
processor_group_name                 string
service_names                      	 string      ==orcl==

————————————————
也可以通过v$instance视图查到SID是正确的

SQL> select instance_name from v$instance;

INSTANCE_NAME
--------------
orcl

难道就没有办法设置静态监听了吗?NO,这里还有一种方法就是手动修改listener.ora文件,添加以下几行内容

SID_LIST_LISTENER =  
(SID_LIST =  
  (SID_DESC =  
  (GLOBAL_DBNAME = orcl)#此处具体的根据你们各自实际的来
  (SID_NAME = orcl)
  )
)

其作用就是配置一个实例静态监听,
只不过用这里跳过了图形化界面修改而已,
如果是用netmgr成功修改了实例的静态监听,也是会生成以上几行代码的

重新启动监听 lsnrctl reload

[oracle@adrep ~]$ lsnrctl reload

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 14-SEP-2013 10:32:06
Copyright (c) 1991, 2011, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=adrep)(PORT=1521)))
The command completed successfully


[oracle@adrep ~]$ lsnrctl status
LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 14-SEP-2013 10:32:14
Copyright (c) 1991, 2011, Oracle.  All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=adrep)(PORT=1521)))

STATUS of the LISTENER

Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date                14-SEP-2013 10:18:53
Uptime                    0 days 0 hr. 13 min. 21 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/adrep/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=adrep)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "orcl" has 1 instance(s).
  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
[oracle@adrep ~]$ 

这里orcl实例通过以上方法,成功地把实例注册上了,
注意"UNKNOWN"就表示是静态注册的,
如果是"READY"则表示是动态注册的

注意:动态和静态监听可以共存,如:

[oracle@zlm ~]$ lsnrctl status


LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 14-SEP-2013 09:52:23


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


Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=zlm)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date                14-SEP-2013 09:15:04
Uptime                    0 days 0 hr. 37 min. 19 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/zlm/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=orcl)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "orcl" has 2 instance(s).
  Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
  Instance "orcl", status READY, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).
  Instance "orcl", status READY, has 1 handler(s) for this service...
The command completed successfully
[oracle@zlm ~]$

以上是我在orcl主机上的监听状态,可以发现,同时配置了动态和静态的监听

总结:
以上利用了手动修改配置静态监听的方法成功注册了Oracle实例,
动态监听往往需要等实例启动后,过一段时间才会注册上,而静态监听则可以马上注册。
而且一旦实例重启会造成动态监听暂时无效,有些版本的bug甚至会导致动态监听的注册就再也起不来了。所以我对于监听的观点是,尽量配置静态监听,这样就可以避免很多由监听带来的问题,
诸如我们经常会碰到的几个ora error:ora-12541、ora-12514、ora-12154等,尤其是在RAC和DG中,一个监听的问题,往往会带来很大的麻烦,尤其需要引起大家的注意。

**

最后通过数据库管理软件就可以连接上数据库

**

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值