DB_POWER

细心 静心 恒心

  • 博客访问: 1298393
  • 博文数量: 187
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-12 18:11
个人简介

曾就职于国美控股集团有限公司 目前就职于某大型采招网 11g ocp 11g ocm 专注Oracle和mysql数据库 承接私活,数据库、ios安卓app开发.有意者联系(17710028343)

ITPUB论坛APP

ITPUB论坛APP



APP发帖 享双倍积分

文章分类

全部博文(187)

文章存档

2018年(6)

2017年(52)

2016年(24)

2015年(56)

2014年(49)

微信关注

IT168企业级官微



微信号:IT168qiye



系统架构师大会



微信号:SACC2013

分类: Oracle

一:EM无法使用的解决:首先我们知道EM只支持动态注册的监听。哪怕是有动态注册信息就可以
首先我先配置了listener这个监听,具体配置如下:
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = edb1.example.com)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )
很显然这个是动态监听,正好这时候我用这个监听配置了EM。
EM配置完成之后,我继续配置lsnr2 ,具体配置如下:
LSNR2 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = edb1.example.com)(PORT = 1526))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1526))
    )
  )
要求要lsnr也能动态注册到数据库信息,这时候我们发现这个监听的端口非默认端口。然而oracle默认动态是注册到1521端口上的,所有这时候lsnr2是不能动态注册到数据库信息的,如下:
[oracle@edb1 admin]$ lsnrctl status lsnr2 

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 05-JUL-2016 23:34:29 

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=edb1.example.com)(PORT=1526))) 
STATUS of the LISTENER 
------------------------ 
Alias lsnr2 
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production 
Start Date 05-JUL-2016 23:34:06 
Uptime 0 days 0 hr. 0 min. 22 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/edbjr2p1/lsnr2/alert/log.xml 
Listening Endpoints Summary... 
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=edb1.example.com)(PORT=1526))) 
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1526))) 
The listener supports no services 
The command completed successfully 
可以通过  local_listener这个参数来修改oracle默认动态注册的端口,使lsnr2可以动态注册到信息。
1)在tnsname.ora 文件里添加
LSNR2 =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = edb1.example.com)(PORT = 1526))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1526))
    )
  ) 
2)然后 修改数据库参数
sqlplus  / as sysdba
SQL> alter system set local_listener='lSNR2';
SQL> alter system register;     ###动态监听如果先于数据库启动,那就不必要执行这个命令。
3)再次查看监听状态,发现动态注册到了信息
[oracle@edbjr2p1 admin]$ lsnrctl status lsnr2 

。。。。。。。
Services Summary...

Service "PROD1.us.oracle.com" has 1 instance(s).

Instance "PROD1", status READY, has 1 handler(s) for this service...

Service "PROD1XDB.us.oracle.com" has 1 instance(s).

Instance "PROD1", status READY, has 1 handler(s) for this service...

The command completed successfully

这样我觉得OK了,可是等到后面使用EM的时候,我发现报错,说 database  is  down,
可是我检查发现数据库正常, 然后查看监听listener的状态:发现原本动态注册的信息已经没有了。如下:
[oracle@edb1 admin]$ lsnrctl status  

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 05-JUL-2016 23:34:29 

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=edb1.example.com)(PORT=1521))) 
STATUS of the LISTENER 
------------------------ 
Alias listener 
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production 
Start Date 05-JUL-2016 23:34:06 
Uptime 0 days 0 hr. 0 min. 22 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/edbjr2p1/lsnr2/alert/log.xml 
Listening Endpoints Summary... 
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=edb1.example.com)(PORT=1521))) 
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1526))) 
The listener supports no services 
The command completed successfully 
可以推测出可能是这里的原因导致报错 :database is down
那么是什么原因导致的呢?
原来 当你设置local_listener=lsnr2后,数据库信息就会动态的注册到1526端口,他就不会动态的注册到1521,所以listener这个监听注册不到信息,导致EM链接不到数据库,报错  database is down。
 
解决办法:只需要修改参数 local_listener='listener','lsnr2';   即可,这样oracle会动态注册到两个端口上。
然后发现EM可以使用了。

二:关于oracle监听动态和静态的分析
oracle静态监听如下:
[oracle@edb1 admin]$ cat listener.ora 
# listener.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora 
# Generated by Oracle configuration tools. 

LISTENER = 
(DESCRIPTION_LIST = 
(DESCRIPTION = 
(ADDRESS = (PROTOCOL = TCP)(HOST = edb1.example.com)(PORT = 1521)) 
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521)) 


SID_LIST_LISTENER= 
(SID_LIST= 
(SID_DESC= 
(GLOBAL_DBNAME=PROD1) 
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1) 
(SID_NAME=PROD1)) 
(SID_DESC= 
(SID_NAME=plsextproc) 
(ORACLE_HOME=/u01/app/oracle/product/11.2.0/dbhome_1) 
(PROGRAM=extproc))) 

尽管是静态监听,但是他也会有动态注册信息,如下  ready代表动态,unknown代表静态。如果你刚才用这样的话已经配置好的EM是可以使用这个监听的,可不要认为静态监听也可以了,真正的原因是虽然是静态监听配置,但是oracle会默认动态的注册到1521这个端口上,所以既有动态又有静态的注册信息(前提是没有修改local_listener这个参数)
[oracle@edb1 admin]$ lsnrctl status 

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 05-JUL-2016 23:45:04 

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=edb1.example.com)(PORT=1521))) 
STATUS of the LISTENER 
------------------------ 
Alias LISTENER 
Version TNSLSNR for Linux: Version 11.2.0.3.0 - Production 
Start Date 05-JUL-2016 23:43:44 
Uptime 0 days 0 hr. 1 min. 20 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/edbjr2p1/listener/alert/log.xml 
Listening Endpoints Summary... 
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=edb1.example.com)(PORT=1521))) 
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
Services Summary...
Service "PROD1" has 1 instance(s).
  Instance "PROD1", status UNKNOWN, has 1 handler(s) for this service...
Service "PROD1.us.oracle.com" has 1 instance(s).
  Instance "PROD1", status READY, has 1 handler(s) for this service...
Service "PROD1XDB.us.oracle.com" has 1 instance(s).
  Instance "PROD1", status READY, has 1 handler(s) for this service...
Service "plsextproc" has 1 instance(s).
  Instance "plsextproc", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully





如果你配置EM使用的监听没有动态注册信息,那么当你使用EM的时候就会报错,具体如下:



小结:EM管理器,配置和使用只支持动态注册的监听,如果你刚开始是用动态注册的监听配置好了EM,你又把动态的监听改成了静态的,这时候你没有修改local_listener这个参数,正常情况还是可以使用EM的,因为这时候你的监听既有静态注册信息又有动态注册信息,EM使用的是动态信息,说白了就是保证有动态注册的信息即可。


阅读(11) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册