数据库的初始化参数remote_listener默认被设置为SCAN Listener,目的是为了让SCAN Listener可以监听所有的实例,记录所有实例的压力,以便于按照负载均衡的方式来转发客户端的请求。
客户端如何通过SCAN访问数据库
------------------------------------------------------
客户端发出连接数据库的请求,DNS将SCAN解析出对应的3个SCAN IP并返回给客户端,
客户端随机的选择其中一个SCAN IP地址,然后客户端通过这个SCAN IP访问对应的节点,当对应节点的SCAN Listener接受到请求后,SCAN Listener会选择压力最小的数据库实例,然后压力最小的数据库实例对应的local listener的地址将会返回给客户端,最终这个local listener为客户端请求建立与数据库的连接。
客户端tnsnames.ora的配置
-------------------------------------------
RAC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac-cluster-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = rac)
) )
客户端的连接方式:
$ sqlplsu <username>/<password>@RAC
EZconnet的连接仍然适用于SCAN
$ sqlplus <username>/<password>@rac-cluster-scan:1521/rac
常用命令
-----------------------
1. 查看SCAN配置信息
$ srvctl config scan
SCAN name: rac-cluster-scan, Network: 1/192.168.1.0/255.255.255.0/
SCAN VIP name: scan1, IP: /rac-cluster-scan/192.168.1.12
SCAN VIP name: scan2, IP: /rac-cluster-scan/192.168.1.13
SCAN VIP name: scan3, IP: /rac-cluster-scan/192.168.1.14
2. 查看SCAN Listener配置信息
$ srvctl config scan_listener
SCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521
SCAN Listener LISTENER_SCAN2 exists. Port: TCP:1521
SCAN Listener LISTENER_SCAN3 exists. Port: TCP:1521
3. 查看SCAN的状态
$ srvctl status scan
4. 查看SCAN listener的状态
$ srvctl status scan_listener