ORACLE动态监听与静态监听

【前言】连接ORACLE其实是挺简单的一件事,只要会启动监听、配置tnsnames文件就可以了,但是相信大部分的人对于更深一点的动态监听和静态监听会知道一些,但也仅限于表面而已,在后面的工作中,因为一些配置的缘故需要对这个更深一步了解,所以就有了今天这个文档;

 

【1】数据库和监听注册的过程:

1.1 如果知道数据库的信息,可以先在监听文件里面配置好要监听的数据库的实例名,并配置server名称,这种就是静态监听,因为这个监听服务器是由监听程序发起的,所以状态一直是UNKNOWN,且数据库关闭后这个监听还会存在;

1.2 监听文件没有配置监听数据库的信息,但是当数据库启动的时候,会自动将instance_name,service_names两个参数将实例和服务动态注册到listener中,这种监听就是动态监听因为这个监听是从数据库发起的,这个时候监听肯定是由对应的数据库的,所以显示的状态是READ,当数据库关闭后这个监听也就消失了。

[grid@db01 admin]$ lsnrctl status

LSNRCTL for Linux: Version 11.2.0.3.0 - Production on 03-DEC-2015 04:21:14

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

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 11.2.0.3.0 - Production
Start Date                03-DEC-2015 02:37:06
Uptime                    0 days 1 hr. 44 min. 8 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /u01/app/grid/product/11.2.0/grid/network/admin/listener.ora
Listener Log File         /u01/app/grid/diag/tnslsnr/db01/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=db01)(PORT=1521)))
Services Summary...
Service "JOEONEXDB" has 1 instance(s).
  Instance "JOEONE", status READY, has 1 handler(s) for this service...
Service "XIAMEN" has 2 instance(s).
  Instance "JOEONE", status UNKNOWN, has 1 handler(s) for this service...
  Instance "JOEONE", status READY, has 1 handler(s) for this service...
Service "XIAMEN01" has 1 instance(s).
  Instance "JOEONE", status UNKNOWN, has 1 handler(s) for this service...
Service "XIAMEN_DGB" has 1 instance(s).
  Instance "JOEONE", status READY, has 1 handler(s) for this service...
The command completed successfully

以上亮红色的字体有三个监听,分别是:

  • 数据库有通过动态注册一个Service为XIAMEN,INSTANCE_NAME为JOEONE的监听;
  • 配置了一个Service为XIAMEN,INSTANCE_NAME为JOEONE的静态监听,因为两个的SERVICE名称一样,所以合并在一起了;
  • 配置了一个Service为XIAMEN01,INSTANCE_NAME为JOEONE的静态监听;

 

相应的监听配置文件如下:

SID_LIST_LISTENER = 
  (SID_LIST = 
    (SID_DESC = 
      (GLOBAL_DBNAME =XIAMEN01
      (ORACLE_HOME =/u01/app/oracle/product/11.2.0/dbhome_1) 
      (SID_NAME =JOEONE
    ) 
  (SID_DESC =
      (GLOBAL_DBNAME =XIAMEN)
      (ORACLE_HOME =/u01/app/oracle/product/11.2.0/dbhome_1)
      (SID_NAME =JOEONE)
    )
  ) 

 

【2】动态监听的原理

  pmon在数据库启动到mount或open时,动态从参数文件中读取service_names值。service_names可以为多值(可以有64个,其中包括两个系统的)。
  service_names缺省为建立数据库时的全局数据库名,默认以1521的端口进行注册;

 

创建非默认的名称,脚本:

SQL>  alter system set service_names=JOHN;

Services Summary...
Service "JOEONEXDB" has 1 instance(s).
  Instance "JOEONE", status READY, has 1 handler(s) for this service...
Service "JOHN" has 1 instance(s).    #上面注册的名称
  Instance "JOEONE", status READY, has 1 handler(s) for this service...
Service "XIAMEN" has 2 instance(s).
  Instance "JOEONE", status UNKNOWN, has 1 handler(s) for this service...
  Instance "JOEONE", status READY, has 1 handler(s) for this service...
Service "XIAMEN01" has 1 instance(s).
  Instance "JOEONE", status UNKNOWN, has 1 handler(s) for this service...
Service "XIAMEN_DGB" has 1 instance(s).
  Instance "JOEONE", status READY, has 1 handler(s) for this service...
The command completed successfully

 

默认情况下监听的端口是1521,有时候出自于安全或区别的考虑监听的端口就会用非默认的端口,SAP数据库使用的端口就是用1527的,所以为了保证数据库和监听能够建立连接,就需要配置静态监听或让数据库进行动态注册;

  • 静态监听:这里的步骤不再说明,在$ORACLE_HOME/NETWORK/ADMIN/listener.ora添加上面增加1.2的配置
  • 动态监听:在ORACLE里面添加SQL语句进行注册,可以通过以下脚本进行管理:

 

2.1 动态监听的注册:alter system set LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(HOST=HOSTNAME)(PORT=1527))';

 

2.2  查看当前本地监听注册的信息: show parameter local_listener;

SQL> show parameter listener

NAME                           TYPE                                 VALUE
----------------------  --------------     ----------------------------------------------------------------
local_listener                 string                (ADDRESS=(PROTOCOL=TCP)(HOST=db01)(PORT=1527))

 

2.3 删除当前监听的注册信息:alter system set LOCAL_LISTENER='';

SQL> show parameter  local_listener 

NAME                                 TYPE                             VALUE
-----------------------  -------------    --------------------------------------------------------------------
local_listener                 string               (ADDRESS=(PROTOCOL=TCP)(HOST=db01)(PORT=1527))

SQL> alter system set LOCAL_LISTENER='';

System altered.

SQL> show parameter local_listener;

NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
local_listener                 string

 

【总结】认证整理完监听的这个文档,发现其实监听也是很简单的一件事就像男生和女生谈恋爱一样,要么男生主动找女生这是动态监听,要么女生就在那边静静等待男生的到来这是静态监听;但是动态不管是动态监听还是静态监听女生都要告诉男神联系的暗号,这样才能在同一个频道上面。。

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

如果你对ORACLE的数据库管理有独特的见解或者有浓厚的兴趣,请加入群367875324,暗号ORACLE管理

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12679300/viewspace-1969620/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12679300/viewspace-1969620/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值