SCAN 原理小节

Posted renfengjun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SCAN 原理小节相关的知识,希望对你有一定的参考价值。

现象

经反应有一个集群数据库经常出现一会儿能连接成功,一会无法连接的问题。


第一时间判断为listener的问题。

可能是因为节点的vip 端口没有全部开放导致。

 


 

 

排查

(ip地址不便提供)

scan信息

 

db 信息

host表中vip信息

至此询问了一下端口开放信息,答复为已经开放了所有vip的1521访问权限。

 

 

集群中注册的vip信息


数据库listener注册信息

 

由local_listener中发现,注册了本地vip的两个listener,一个为1521端口,一个为1523端口。

 

 

询问开启端口的状况

开启了app server 访问所有vip的1521端口。

原因

判断为1523端口未开放导致,为此,开放了app server 访问三个vip的1523端口,至此问题得到解决。

 

 

为什么没有开启1523端口,会导致无法连接,连接超时的状况呢。

下面我们做一下原理分析。

 

 

scan 原理分析

 

 

SCAN 通常的工作环境如图所示

 

客户端通过scan listener发送request请求,scan listener接收请求后,根据负载情况重定向连接请求给local listener。

最后客户端得到local listener地址后,双方建立连接。

 

 

我们现有的环境如下图所示


不知为何原因,数据库服务器上创建了两个listener,分别监听vip上的1521以及1523端口,而数据库也相应的注册到了两个listener上面。

 

 

发生问题的情况是,我们开启了所有vip的1521端口。

所以当scan listener 重定向给vip的1521端口的listener的时候,我们可以正常的进行连接。

 

 

发生问题的情况如下所示:


而当scan listener 重定向给vip的1523端口的listener的时候,因为没有开启相应的端口访问权限,所以发生连接超时等无法连接的情况。

 

 

 

 

 

 

其他类似问题

另外一个比较常见的问题是 vip解析的问题。

 

有些rac数据库的local listener中使用的是别名来代替ip地址。

例如某数据库的配置:

local_listener    这个参数

NAME                               TYPE        VALUE
------------------------------------ ----------- ------------------------------
listener_networks                   string
local_listener                      string      (DESCRIPTION=(ADDRESS_LIST=(AD
                                               DRESS=(PROTOCOL=TCP)(HOST=sol1-vip)(PORT=1521))))
remote_listener                     string      sol-scan:1521

 

这样的配置就会出现客户端无法连接,或者连接超时的情况。根本原因是客户端无法解析sol1-vip。

有两种方法解决:

第一种方法:

Linux :vi /etc/hosts

windows : C:\\Windows\\System32\\drivers\\etc\\hosts

加入这个sol1-vip对应的ip条目即可

第二种方法:

修改local_listener为真实ip地址(注意两个节点分别修改)

 

以上是关于SCAN 原理小节的主要内容,如果未能解决你的问题,请参考以下文章

关于HBase MVCC的设计原理以及MVCC所引起的一个scan问题

Oracle 11G R2 RAC中的scan ip 的用途和基本原理

ASP.NET MVC 5 Azure App ZAP Scan 指示代理披露漏洞 - 我们如何防止这种情况发生?

SQL Server 索引查找Index Seek 索引扫描 Index Scan与索引存储原理详解

context:component-scan标签的use-default-filters属性的作用以及原理分析

hbase读写优化