RAC 攻击 - Oracle 集群数据库在家/服务器负载均衡
外观
- 在数据库上打开一个 SQLPlus 会话,并确认SH用户没有会话。 SQL> select inst_id, count(*) from gv$session where username='SH' group by inst_id; 没有选择行 如果存在任何会话,您可以使用以下 SQL 的输出将其杀死:select 'alter system disconnect session '''|| sid||','||serial#||''' immediate;' from v$session where username='SH';
- 通过将 REMOTE_LISTENER 初始化参数设置回其默认值 (collab-scan:1521) 并重新注册,在两个实例上重新启用服务器端负载均衡。 在向侦听器注册之前,重新启动它们以重置连接统计信息。 SQL> alter system set remote_listener='collab-scan:1521'; 系统已更改。 collabn1:/home/oracle[RAC1]$ lsnrctl stop collabn1:/home/oracle[RAC1]$ lsnrctl start collabn2:/home/oracle[RAC2]$ lsnrctl stop collabn2:/home/oracle[RAC2]$ lsnrctl start 为什么只需要运行一次“alter system”命令,而需要在两个节点上运行 lsnrctl 命令? SQL> -- 实例 RAC1 SQL> alter system register; 系统已更改。 collabn1:/home/oracle[RAC1]$ lsnrctl services 服务“RAC.vm.ardentperf.com”有 1 个实例。 实例“RAC1”,状态 READY,此服务有 2 个处理程序... 处理程序: “DEDICATED” 已建立:0 拒绝:0 状态:就绪 远程服务器(地址 =(协议 = TCP)(主机 = collabn1.vm.ardentperf.com)(端口 = 1521)) “DEDICATED” 已建立:0 拒绝:0 状态:就绪 本地服务器 实例“RAC2”,状态 READY,此服务有 1 个处理程序... 处理程序: “DEDICATED” 已建立:0 拒绝:0 状态:就绪 远程服务器(地址 =(协议 = TCP)(主机 = collabn2.vm.ardentperf.com)(端口 = 1521))
- 编辑您连接到的服务器上的TNSNAMES.ORA文件。 添加一个名为LBTEST的条目,该条目连接到 RAC 服务 - 但只使用一个侦听器。 [root@collabn1 ~]# vi $ORACLE_HOME/network/admin/tnsnames.ora LBTEST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = collab-scan)(PORT = 1521)) (LOAD_BALANCE = no) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = RAC.vm.ardentperf.com) ) )
- 在您的另一个已连接的 SQLPlus 会话中,密切注意连接的平衡。 同时,打开一个新的 shell 会话并运行以下脚本,该脚本将打开 160 个连接到数据库 - 但这次将使用 LBTEST 连接。 a=160; while [ $a -gt 0 ]; do sqlplus sh/sh@LBTEST & a=$((a-1)) done 在服务器端负载均衡期间,连接如何在数据库实例之间分配?
- 通过运行以下两个命令终止所有 sqlplus 会话。 运行第二个命令后,当您开始看到“no more job”消息时,按<Ctrl-C>。 killall sqlplus while true; do fg; done <Ctrl-C>