一台Oracle数据库服务器上两个监听同时使用

简介:

记得之前Oracle原厂的工程师在例行检查时发现一台Oracle数据库服务器的上启动了两个监听,分别监听的是1521和1581端口,而且两个端口都在用,当时当作一个比较奇怪的现象,没有能理解原因是什么。最近几天在看Oracle网络配置的文档,无意间在虚拟机上启动了两个监听,就又想起了之前的问题。到底是因为什么原因呢?

下面先来还原一下整个过程。

当时是在做配置静态监听的练习,在listener.ora中配置了一个静态监听:

1
2
3
4
5
6
7
8
9
10
ORCL =
   (DESCRIPTION=
     (ADDRESS_LIST=
       (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.2)(PORT=1581))
SID_LIST_ORCL=
   (SID_LIST=
     (SID_DESC=
       (GLOBAL_DBNAME=orcl)
       (ORACLE_HOME= /u02/app/oracle/product/11 .2.4 /db1 )
       (SID_NAME=orcl)))

启动正常:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[oracle@rhel6 admin]$ lsnrctl start orcl
 
LSNRCTL  for  Linux: Version 11.2.0.4.0 - Production on 03-JUN-2017 16:22:41
 
Copyright (c) 1991, 2013, Oracle.  All rights reserved.
 
Starting  /u02/app/oracle/product/11 .2.4 /db1/bin/tnslsnr : please wait...
 
TNSLSNR  for  Linux: Version 11.2.0.4.0 - Production
System parameter  file  is  /u02/app/oracle/product/11 .2.4 /db1/network/admin/listener .ora
Log messages written to  /u02/app/oracle/diag/tnslsnr/rhel6/orcl/alert/log .xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.2)(PORT=1581)))
 
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.2)(PORT=1581)))
STATUS of the LISTENER
------------------------
Alias                     orcl
Version                   TNSLSNR  for  Linux: Version 11.2.0.4.0 - Production
Start Date                03-JUN-2017 16:22:41
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File    /u02/app/oracle/product/11 .2.4 /db1/network/admin/listener .ora
Listener Log File          /u02/app/oracle/diag/tnslsnr/rhel6/orcl/alert/log .xml
Listening Endpoints Summary...
   (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.56.2)(PORT=1581)))
Services Summary...
Service  "orcl"  has 1 instance(s).
   Instance  "orcl" , status UNKNOWN, has 1 handler(s)  for  this service...
The  command  completed successfully

远程测试连接成功

wKioL1kycoOAJpDsAAApXIpAtIY883.png

这时不小时敲了lsnrctl start命令,“神奇”的事情发生了,又一个监听起来了:

wKioL1kycxSRqwiCAACdyUHkHT8195.png使用netstat -nltp查端口,两个端口都是被监听的状态:

wKioL1kyc5TyjnA1AAAl7pJ9NaM880.png现在远程测试连接,居然也可以连接成功

wKioL1kyc9qQecbcAAAXGCgc25g054.png

那么现在问题就来了,为什么可以启动两个监听,而两个监听都可以用呢?而且我在listener.ora中并没有配置1521端口的监听,为什么可以启动1521的监听呢?

先来看第二个问题,为什么会启动对1521端口的监听,从官方文档中找到这样一名话:

Because all of the configuration parameters have default values, it is possible to start
and use a listener with no configuration. This default listener has a name of LISTENER,
supports no services on startup, and listens on the following TCP/IP protocol address:
(ADDRESS=(PROTOCOL=tcp)(HOST=host_name)(PORT=1521))

这句话就能解释为什么会启动1521端口的监听。我也做了实验,即使是在没有listener.ora文件的情况下,也会可以启动名为LISTENER的监听来监听1521端口。

解释了监听起来的问题,再来看第一个问题,为什么两个监听都可以用呢?

先了解一下动态监听和静态监听:

动态监听是在数据库启动后,PMON进程会向本地的端口注册服务信息,默认是向本地地址的1521端口注册。而前面启动的对1521端口的监听正符合默认的注册方式,所以直接可以注册成功,数据库也可以对外提供服务。

而最开始配置的静态监听的目的就是代替PMON进程注册的工作,直接把数据库的服务强制绑定到监听上,即使数据库没有启动,这个数据库的服务名还是会在监听中显示的。

了解了这些之前,就不难理解为什么两个监听可以同时使用了:数据库默注册到了1521端口的监听上了,而静态监听又强制数据库绑定到了1581端口上,所以两个监听端口都是可以通的。

所以出现这种情况的原因是配置静态监听的时候,使用了是1581端口而非默认的1521端口,而且又启动了默认的监听。如果静态监听使用的1521端口,也不会出现这样的情况。

那如何能避免使用非默认监听端口时出现这种情况呢?可以在数据库中配置local_listener参数,详细参考之前的博客:http://hbxztc.blog.51cto.com/1587495/1890055


官方文档:http://docs.oracle.com/cd/E11882_01/network.112/e41945/listenercfg.htm#NETAG292





      本文转自hbxztc 51CTO博客,原文链接:http://blog.51cto.com/hbxztc/1931954,如需转载请自行联系原作者





相关文章
|
1月前
|
存储 Oracle 关系型数据库
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
118 11
|
2月前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—Oracle数据库文件有坏快损坏的数据恢复案例
一台Oracle数据库打开报错,报错信息: “system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。管理员联系我们数据恢复中心寻求帮助,并提供了Oracle_Home目录的所有文件。用户方要求恢复zxfg用户下的数据。 由于数据库没有备份,无法通过备份去恢复数据库。
|
2月前
|
存储 Oracle 关系型数据库
oracle数据恢复—Oracle数据库文件大小变为0kb的数据恢复案例
存储掉盘超过上限,lun无法识别。管理员重组存储的位图信息并导出lun,发现linux操作系统上部署的oracle数据库中有上百个数据文件的大小变为0kb。数据库的大小缩水了80%以上。 取出&并分析oracle数据库的控制文件。重组存储位图信息,重新导出控制文件中记录的数据文件,发现这些文件的大小依然为0kb。
|
1月前
|
存储 Oracle 关系型数据库
服务器数据恢复—华为S5300存储Oracle数据库恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障: RAID5阵列中1块硬盘出现故障离线,热备盘自动激活开始同步数据,在同步数据的过程中又一块硬盘离线,RAID5阵列瘫痪,上层LUN无法使用。
|
2月前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
61 7
|
2月前
|
PHP 数据库 数据安全/隐私保护
布谷直播源码部署服务器关于数据库配置的详细说明
布谷直播系统源码搭建部署时数据库配置明细!
|
2月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
1021 2
|
2月前
|
SQL Java 数据库连接
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
|
2月前
|
存储 Oracle 关系型数据库
oracle服务器存储过程中调用http
通过配置权限、创建和调用存储过程,您可以在Oracle数据库中使用UTL_HTTP包发起HTTP请求。这使得Oracle存储过程可以与外部HTTP服务进行交互,从而实现更复杂的数据处理和集成。在实际应用中,根据具体需求调整请求类型和错误处理逻辑,以确保系统的稳定性和可靠性。
115 0
|
11天前
|
弹性计算 数据挖掘 应用服务中间件
阿里云轻量应用服务器68元与云服务器99元和199元区别及选择参考
目前阿里云有三款特惠云服务器,第一款轻量云服务器2核2G68元一年,第二款经济型云服务器2核2G3M带宽99元1年,第三款通用算力型2核4G5M带宽199元一年。有的新手用户并不是很清楚他们之间的区别,因此不知道如何选择。本文来介绍一下它们之间的区别以及选择参考。
249 87

推荐镜像

更多