当我们使用单个客户端访问名称(扫描)时,客户端通过DNS或GNS中的扫描名称连接到数据库,如下例所示:
stackdb =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan.stack.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = stackdb)
)
)但是为什么我们在配置集群软件时仍然需要指定一个虚拟IP地址(VIP)?VIP在哪里用?

我知道在11.2之前我们像这样使用VIP
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS=(PROTOCOL=tcp)(HOST=rac1-vip.localdomain)(PORT=1521))
(ADDRESS=(PROTOCOL=tcp)(HOST=rac2-vip.localdomain)(PORT=1521)))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)发布于 2020-06-02 08:32:19
客户端连接到扫描侦听器(S)上监听扫描vip(s)。扫描监听器将请求转发给在节点vip上侦听的适当的本地侦听器。因此,节点vip仍然用于连接。
侦听器必须在最终连接的节点上运行,以生成服务器进程。运行在rac1上的扫描侦听器不能在节点rac2上生成进程。您需要一个本地侦听器来侦听本地地址。该本地地址,即使它只是虚拟的,而不是固定的,是节点vip。
从数据库客户端到Oracle RAC数据库实例的典型连接尝试可以总结如下:
拥有vip的最初目的是提供在节点故障时快速返回响应的能力。
如果rac1关闭并使用其地址启动连接尝试,客户端必须等待tcp超时才能获得任何响应。如果使用虚拟地址进行连接尝试,即使vip在rac2上运行且不提供请求,客户端将立即得到响应,并可以尝试连接字符串中列出的另一个地址,从而降低连接的总时间。
如果节点失败,则VIP地址将失败转移到VIP地址可以接受TCP连接的另一个节点,但它不接受到Oracle数据库的连接。试图连接到不在其主节点上的VIP地址的客户端将收到快速连接拒绝错误,而不是等待TCP连接超时消息。
此外,一些老客户端无法使用扫描。
https://dba.stackexchange.com/questions/268337
复制相似问题