转:Oracle RAC万能集群测试大全 支持11g/12c/18c/19c版本
生产环境Oracle RAC集群测试最佳方法(支持Oracle 11g/12c/18c/19c RAC安装后期测试过程)
一、Oracle RAC集群测试背景
某中大型制造业公司,由于要新上项目,建设了一套业务系统-ERP系统,这套系统的数据库环境是Oracle RAC(RHEL Linux7+Oracle11gR2 RAC)架构 ,根据风哥提供的建设方案项目已经建设完成。
这套ERP系统的RAC集群数据库在上线之前,我们需要对RAC集群做一些功能测试,这个测试方法适用于Oracle11g/12c,也适用于oracle18c/19c。
二、Oracle RAC集群的介绍
在测试之前,这里风哥给大家介绍一下Oracle RAC是什么:Oracle 真正应用集群技术(Oracle Real Application Cluster )是Oracle 9i及以后版本,Oracle 9i之前叫OPS集群。Oracle RAC主要支持Oracle9i、10g、11g、12c版本(18c,19c)。 在Oracle RAC环境下,Oracle集群提供了集群软件和存储管理软件,集群软件CRS/GRID,存储管理软件ASM(自动存储管理),多个节点共享一份数据。
ORACLE RAC架构如下:
其中Oracle RAC在物理架构上,硬件设备主要包括如下部分:
服务器、共享存储设备(共享存储,光纤交换机,HBA卡,光纤线)、网络设备(网络交换机,光纤交换机,网线)
1)服务器
我们称这个服务器为“数据库服务器”,“数据库主机”,在RAC的术语中我们又称其为“节点”,服务器的配置应该相同,cpu,内存等。
2)网络设备
每台服务器上至少两块物理网卡,分别用于主机间私有通信和对外公用通信,也可以有多快网卡,进行网卡绑定,实现网卡的冗余。
私有通信的网卡叫private NIC,对应的IP为private IP。
公用通信的网卡叫public NIC,对应的IP为public IP。
3)共享存储设备
共享存储是整个RAC架构中的核心
每台服务器至少一块/两块HBA卡,用于共享存储的连接。
可以用光纤线直连存储,也可以通过光纤交换机,我们建议使用光纤交换机。
RAC是一个典型的“多实例,单数据库”架构,被所有节点共享,并行访问。
数据库数据文件,控制文件,参数文件,联机重做日志文件,甚至归档日志文件都放在共享存储
上,并保证可以被所有节点同时访问。IO性能要求比较高,一般用光纤线连接。
另外Oracle RAC还有两种集群模式:
Oracle RAC 同时具备HA(High Availiablity) 、LB(LoadBalance)。
1)Failover(故障转移):
它指集群中任何一个节点的故障都不会影响用户的使用,连接到故障节点的用户会被自动转移到健康节点,从用户感受而言, 是感觉不到这种切换。
2)LoadBalance(负载均衡):
就是把负载平均的分配到集群中的各个节点,从而提高整体的吞吐能力。
三、Oracle RAC集群功能测试
序号 | OracleRAC测试项目 | OracleRAC测试方法 | OracleRAC正确结果 | OracleRAC测试结果 |
1 | 检查数据库的版本和补丁 | select * from v$version; | Oracle 11/12c相应版本 | 是否正常: |
2 | 数据库启动和关闭 | startup | 能正常启动和关闭 | 是否正常: |
Shutdown immediate | ||||
3 | 逻辑备份 | exp,expdp | 导出成功 | 是否正常: |
4 | 字符集 | select name,value$ from | ZHS16GBK 、 UTF8 | 是否正常: |
props$ | ||||
where name like | ||||
'%CHARACTERSET%'; | ||||
5 | 创建/删除 | create tablespace fgedudata01 | 创建成功 | 是否正常: |
表空间 | datafile '+fgedudata1’ | 删除成功 | ||
size 10m autoextend off; | ||||
drop tablespace fgedudata01 | ||||
including contents and files; | ||||
6 | 创建/删除用户 | create user fgedu identified | 创建成功 | 是否正常: |
by test default tablespace | 删除成功 | |||
fgedudata01 temporary tablespace temp; | ||||
drop user fgedu cascade; | ||||
7 | 创建/删除表 | create table fgedu.itpux | 创建成功 | 是否正常: |
(name varchar2(10),id number); | 删除成功 | |||
drop table fgedu.itpux; | ||||
8 | 插入/删除数据 | Insert into fgedu.itpux values('itpux01',’1); | 插入成功 | 是否正常: |
Commit; | 删除成功 | |||
Delete from fgedu.itpux | ||||
Commit; | ||||
9 | 客户端连接到 | sqlplus “sys/oracle@itpuxdb as sysdba”; | 连接成功 | 是否正常: |
数据库 | ||||
10 | 修改数据库为归档模式 | Alter system set db_recovery_file_dest='+dgrecover' scope=spfile; | 归档模式 | 是否正常: |
alter system set db_recovery_file_dest_size=200G scope=spfile; | ||||
Srvctl stop database -d fgerpdb | ||||
Sqlplus “/as sysdba” | ||||
Startup mount; | ||||
Alter database archivelog; | ||||
Shutdown immediate | ||||
Srvctl start database -d fgerpdb |
四、Oracle RAC集群负载测试
序号 | OracleRAC测试内容 | OracleRAC测试方法 | OracleRAC正确结果 | OracleRAC测试结果 |
1 | 客户端连接数据库(RAC方式) | sqlplus “sys/itpux123@itpuxdb as sysdba”; | 连接成功,并且每次连接有可能分布到不同的实例上 | 是否正常: |
select instance_name from v$instance; | ||||
2 | CRS正常启动关闭 | crsctl start crs | 能正常启动和关闭 | 是否正常: |
crsctl stop crs | ||||
3 | 网络连接中断(public网络) | 拔掉节点一public网卡的网线 | 本节点实例正常,vip漂移到节点二,listener,ons,network服务offline,原先连接到节点一的连接自动连接至节点二 | 是否正常: |
4 | 网络连接恢复(public网络) | 插回节点一public网卡的网线 | vip漂移回节点一,listener,ons,network服务自动onlien,crs资源恢复正常 | 是否正常: |
5 | 网络连接中断(private网络) | 拔掉节点一private网卡的网线 | 节点二重启,crs资源offline,vip漂移到节点一,原先连接到节点二的连接自动连接至节点1 | 是否正常: |
6 | 网络连接恢复(private网络) | 插回节点一private网卡的网线,使用crsctl start crs启动crs | 节点二的vip漂移回节点二,节点二crs资源恢复正常 | 是否正常: |
7 | 网络连接中断(public网络) | 拔掉节点二public网卡的网线 | 本节点实例正常,vip漂移到节点一,listener,ons,network服务offline,原先连接到节点二的连接自动连接至节点一 | 是否正常: |
8 | 网络连接恢复(public网络) | 插回节点二public网卡的网线 | vip漂移回节点二,listener,ons,network服务自动onlien,crs资源恢复正常 | 是否正常: |
9 | 网络连接中断(private网络) | 拔掉节点二private网卡的网线 | 节点二重启,crs资源offline,vip漂移到节点一,原先连接到节点二的连接自动连接至节点1 | 是否正常: |
10 | 网络连接恢复(private网络) | 插回节点二private网卡的网线,使用crsctl start crs启动crs | 节点二的vip漂移回节点二,节点二crs资源恢复正常 | 是否正常: |
11 | 负载均衡 | 开启多个数据库连接 | 多次连接应分布在两个节点 | 是否正常: |
12 | 透明故障切换 | 使用RAC的方式连接数据库 | 连接不中断,查询继续并自动切换至另一实例 | 是否正常: |
select instance_name from v$instance; | ||||
关闭当前实例后 | ||||
select instance_name from v$instance; | ||||
13 | 正常维护,正常关闭节点1 | Crsctl stop crs | Scan vip,vip漂移到节点二,原先连接到节点一的连接自动连接至节点二 | 是否正常: |
14 | 正常维护,正常关闭节点2 | Crsctl stop crs | vip漂移到节点一,原先连接到节点二的连接自动连接至节点一 | 是否正常: |
针对测试列表中的第1点:客户端连接到数据库(RAC负载均衡测试)
Oracle 客户端的tnsnames.ora模式如下:只需要配置scan对应的name或ip地址即可,如下所示:
最终Oracle RAC的测试效果如下:
针对测试列表中的第12点:客户端连接到数据库(RAC透明切换测试),
客户端tnsnames.ora配置
tnsping fgerpdbtaf 测试连通性
连通ok后,再用第12点的方式测试透明故障切换
五、Oracle RAC集群维护命令
5.1.Oracle RAC常用命令工具
以下内容是风哥推荐大家需要熟悉的常用命令,日常工作中需要经常参考来使用。