参考资料:


https://blog.csdn.net/tianlesoftware/article/details/5543166

https://www.cnblogs.com/guilingyang/p/6074867.html

 现象1:


1、动态注册

参数文件中指定service_names(多个服务名vmdb,sn01,sn02),8i以后数据库实例启动后,会根据参数文件的service_names以及instance_name动态注册到监听器:

 SQL> show parameter service_names;

 NAME                     TYPE     VALUE
------------------------------------ ----------- ------------------------------
service_names string vmdb,sn01,sn02
SQL> show parameter instance_name; NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
instance_name string vmdb

2、静态注册

实例启动时读取文件$ORACLE_HOME/network/admin/listener.ora文件的配置,将实例和服务注册到监听程序。listener.ora文件配置如下:

 SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = sn03)
(ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
(SID_NAME = vmdb)
)
) LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = CentOS)(PORT = 1521))
) ADR_BASE_LISTENER = /u01/app/oracle

3、先启动数据库再启动监听

 SQL> startup
ORACLE instance started. Total System Global Area 776646656 bytes
Fixed Size 2217384 bytes
Variable Size 583010904 bytes
Database Buffers 188743680 bytes
Redo Buffers 2674688 bytes
Database mounted.
Database opened.

启动数据库

 [oracle@CentOS ~]$ lsnrctl start

 LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 28-MAR-2018 13:03:11

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

 TNS-01106: Listener using listener name LISTENER has already been started
[oracle@CentOS ~]$ lsnrctl reload LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 28-MAR-2018 13:03:19 Copyright (c) 1991, 2009, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=CentOS)(PORT=1521)))
The command completed successfully
[oracle@CentOS ~]$ lsnrctl status LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 28-MAR-2018 13:03:25 Copyright (c) 1991, 2009, Oracle. All rights reserved. Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=CentOS)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 28-MAR-2018 13:03:08
Uptime 0 days 0 hr. 0 min. 16 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/CentOS/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=CentOS)(PORT=1521)))
Services Summary...
Service "sn03" has 1 instance(s).
Instance "vmdb", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

启动监听器

发现监听服务只有静态注册的sn03

4、手工注册

SQL> alter system register; System altered.

再次查看监听,动态注册成功:

 [oracle@CentOS ~]$ lsnrctl status

 LSNRCTL for Linux: Version 11.2.0.1.0 - Production on 28-MAR-2018 12:41:00

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

 Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=CentOS)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 - Production
Start Date 28-MAR-2018 12:40:45
Uptime 0 days 0 hr. 0 min. 15 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/CentOS/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=CentOS)(PORT=1521)))
Services Summary...
Service "sn01" has 1 instance(s).
Instance "vmdb", status READY, has 1 handler(s) for this service...
Service "sn02" has 1 instance(s).
Instance "vmdb", status READY, has 1 handler(s) for this service...
Service "sn03" has 1 instance(s).
Instance "vmdb", status UNKNOWN, has 1 handler(s) for this service...
Service "vmdb" has 1 instance(s).
Instance "vmdb", status READY, has 1 handler(s) for this service...
Service "vmdbXDB" has 1 instance(s).
Instance "vmdb", status READY, has 1 handler(s) for this service...
The command completed successfully

查看监听状态

动态注册到非默认端口


如果要向非默认监听注册,则要修改相应系统参数。将要监听的信息添加到tnsnames.ora文件(pmon动态注册监听时从tnsnames.ora文件读取信息)。

对于专用服务器模式:

LOCAL_LISTENER=listener_alias

对于共享服务器模式:

DISPATCHERS="(PROTOCOL=tcp)(LISTENER=listener_alias)"

例如对于专用服务器模式,监听端口1522:

1、修改listener.ora文件监听器的监听端口

LISTENER =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = CentOS)(PORT = 1522))
)

2、修改tnsnames.ora,设置pmon动态注册的目标端口

 listener_alias =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = CentOS)(PORT = 1522))
)

3、修改参数LOCAL_LISTENER

alter system set local_listener=listener_alias;
alter system register;

4、查看监听状态

 [oracle@CentOS admin]$ lsnrctl status

 LSNRCTL for Linux: Version 11.2.0.1. - Production on -MAR- ::

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

 Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=CentOS)(PORT=)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1. - Production
Start Date -MAR- ::
Uptime days hr. min. sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/11.2./dbhome_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/CentOS/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=CentOS)(PORT=)))
Services Summary...
Service "sn01" has instance(s).
Instance "vmdb", status READY, has handler(s) for this service...
Service "sn02" has instance(s).
Instance "vmdb", status READY, has handler(s) for this service...
Service "sn03" has instance(s).
Instance "vmdb", status UNKNOWN, has handler(s) for this service...
Service "vmdb" has instance(s).
Instance "vmdb", status READY, has handler(s) for this service...
Service "vmdbXDB" has instance(s).
Instance "vmdb", status READY, has handler(s) for this service...
The command completed successfully

静态注册的意义


//TODO

总结:


与文章开头的引用的外部文章说法有些差异:

1、动态注册只会在PMON进程启动时才会自动将服务注册到监听器(一般在启动一分钟内完成注册),如果此时监听器未启动,则动态注册失败,此时如果再启动监听器,依然不会有动态注册信息。

2、静态注册与实例是否启动无关,启动监听器时会读取listener.ora文件进行静态注册,此时即便数据库未启动,监听状态依然能看到静态注册信息。重启监听器也一样,只会进行静态注册,所以可能导致动态注册信息丢失。

3、动态注册默认只注册到默认的监听器(名称LISTENER,端口1521,协议TCP),否则PMON不能动态注册listener,除非修改参数local_listener。

oracle监听的动态注册和静态注册的更多相关文章

  1. Oracle静态监听和动态监听

    一.静态注册 静态注册指实例启动时读取listener.ora配置文件,将实例和服务注册到监听程序.无论何时启动一个数据库,默认都有两条信息注册到监听器中:实例和服务.SID_LIST_LISTENE ...

  2. Oracle监听的静态注册和动态注册

    静态注册:通过解析listene.ora文件 动态注册:由PMON进程动态注册至监听中 在没有listener.ora配置文件的情况下,如果启动监听,则监听为动态注册.用图形化netca创建的监听,默 ...

  3. oracle监听动态注册与静态注册

    client端如果想要连接到远程的数据库服务器,首先数据库服务器必须启动监听器 oracle监听器的配置在$ORACLE_HOME/network/admin/listener.ora,打开这个文件, ...

  4. 【转】oracle 监听静态注册举例解析

    网上有很多关于oracle 监听静态注册的文章,但大多都是简单说说,并没有详细的例子,这里,将结合linux as3 下的oracle 10gR2.0.1 举一个具体的例子 1.在 $ORACLE_H ...

  5. oracle 监听静态注册举例解析

    网上有很多关于oracle 监听静态注册的文章,但大多都是简单说说,并没有详细的例子,这里,将结合linux as3 下的oracle 10gR2.0.1 举一个具体的例子 1.在 $ORACLE_H ...

  6. oracle监听(lsnrctl)详解解读

    (总结)Oracle监听服务lsnrctl参数及查询状态详解   lsnrctl命令常用参数详解: lsnrctlstart启动指定的监听器 stop关闭指定的监听器 status显示监听器的状态.s ...

  7. ORACLE 监听

    今天来学习一下监听的相关内容,昨晚被老大问了两个关于监听很简单的问题,但是却吞吞吐吐回答,而且有一个问题还答错了,刚刚查了下资料,才发现"驴头对了马嘴",哭笑不得. 一.监听(li ...

  8. ORACLE监听配置及测试实验

    实验一: 修改db_domain和service_name 我们将Db_name和Db_domain两个参数用'.'连接起来,表示一个数据库,并将该数据库的名称称为Global_name即等于serv ...

  9. ORACLE监听理解

    参考官方文档Net Services Reference的7 Oracle Net Listener Parameters (listener.ora) 1 监听概念 oracle监听,是个服务器端进 ...

随机推荐

  1. linux 内核代码结构

    1.ARM的核心代码保存在arch/arm目录下 2.ARM SoC core architecture code保存在arch/arm目录下 3.ARM SOC的周边外设模块的驱动保存在driver ...

  2. ArrayList 实现随机点名

    package lijun.cn.demo1; import java.util.ArrayList; import java.util.Random; public class CallName { ...

  3. 数据预处理:独热编码(One-Hot Encoding)

    python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制) 网易云观看地址 https://study.163.com/course/introduction.htm?courseId=10 ...

  4. docker 基础 之安装

    一.安装 系统要求 Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10. CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功(如 overlay ...

  5. ubuntu14.04 mysql数据库允许远程访问设置

    安装mysql5.5 sudo apt-get install mysql-server-5.5 --------------------------------------------------- ...

  6. python+selenium 模拟登陆,自动下单

    目前写的实在太粗糙,留着,以后来写上

  7. Set实现数组去重

    ES6 提供了新的数据结构 Set 它类似于数组,但是成员的值都是唯一的,没有重复的值 (set本身是一个构造函数,用来生成 Set 数据结构)   使用Set实现数组去重要简单很多.   第一种数组 ...

  8. python中\r的意义及用法

    \r的意义 \r 表示将光标的位置回退到本行的开头位置 \b表示将光标的位置回退一位 在python里print会默认进行换行,可以通过修改参数让其不换行 (1) python2中可以在print语句 ...

  9. jqgrid again

    之前有提及过jqgrid这个很不错的jquery grid, 非常适合企业MIS系统使用. 本文以一个显示学生成绩结果的页面, 来说明它的一些用法, 手写代码, 运行可能会报错, 不过思路是经过验证的 ...

  10. springboot(十八):CORS方式实现跨域

    资料 https://www.cnblogs.com/toutou/p/9843588.html