REMOTE_LISTENER参数主要用于RAC环境中监听器的远程注册,监听器的远程注册主要用于实现负载均衡。通
常情况下,客户端发出的连接请求会首先被LOCAL_LISTENER接收,然后由Master Instance来决定当前的连接请
求应该由哪个目标Instance发出Server Process响应这个连接请求。在启用了负载均衡的情形下,Master Instance
会将请求转发到负载较小的实例。如果此时Remote_Listener中指定的实例负载较小,那么当前的请求会被重定向
到负载较小的Instance中来建立连接,派生服务器进程进行相应连接。
从Oracle11gR2版本后,RAC集群引入SCAN概念。scan的提出彻底做到了rac数据库对用户的透明管理,客户端
通过scan域名直接连接数据库即可(首先客户端可以解析scan域名),具体由DNS服务器解析域名,这里如果用
dns解析scan,最多可以解析3个scan vip,通过scan域名访问数据库可以实现scan vip的failover和负载均衡,即
只要3个scan vip中存活一个,客户端应用既可以访问数据库。如果采用hosts文件解析scan,只能解析一个scan
vip。 而我们目前常用的方式就是用hosts文件去解析scan,固定一个scan ip。
RAC环境中的监听器可以分为本地监听器和SCAN监听器,分别对应LOCAL_LISTENER和REMOTE_LISTENER参
数:
LOCAL LISTENER:本地监听器只能监听到运行在本节点上的数据库。 RAC的每个节点上都会有独立的本地监
听器,它会监听该节点的Public IP和VIP,而每个节点的实例在启动的时候也会向本地监听器进行注册,当然
它也会向SCAN监听器注册,当VIP或者Public IP有连接请求的时候,本地监听器就接受处理并和本地实例建立
连接。如果某个节点故障,那么其上面的VIP会进行漂移,但本地监听器并不会产生漂移。
本地监听器对应的设置参数为LOCAL_LISTENER。这个参数控制着本地监听器的注册,因为本地监听器的工
作机制关系,通过本地监听器的数据库连接请求只会连接到本地节点的实例上,并且本地监听器负责监听本地
的vip。
SQL> show parameter local_listener
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
local_listener string (ADDRESS=(PROTOCOL=TCP)(HOST=1
92.168.8.172)(PORT=1521))
SCAN LISTENER:SCAN监听器可以监听到集群中运行的所有数据库, 它是实现SCAN负载均衡的原理所在。
如果RAC上有三个SCAN VIP,那么SCAN监听器也有三个,它们各自监听SCAN VIP的连接请求。SCAN监听
器跟着SCAN VIP随机分配到节点服务器上,如果某个节点发生故障,那么运行在此节点上的SCAN VIP会进行
漂移,这时候SCAN监听器也跟着漂移到正常的节点上,继续为SCAN VIP监听连接请求。当PMON进程下次动
态更新实例信息到该SCAN监听器之后,它又重新接收客户端的连接。这和VIP产生漂移的时候是有所区别的。
SCAN监听器对应的设置参数为REMOTE_LISTENER。通过设置这个参数,任何数据库实例都会向SCAN监听
器注册,主要用于注册远程数据库实例,所以SCAN监听器能够负载均衡地分发连接请求到节点本地监听器
上,也就是连接到其本地节点上实例上。REMOTE_LISTENER设置格式默认如下,在配置后RAC数据库的每
文档被以下合辑收录
评论