生产环境Oracle RAC集群测试最佳方法(支持Oracle 11g/12c/18c/19c RAC安装后期测试过程)php
1、Oracle RAC集群测试背景html
某中大型制造业公司,因为要新上项目,建设了一套业务系统-ERP系统,这套系统的数据库环境是Oracle RAC(RHEL Linux7+Oracle11gR2 RAC)架构 ,根据风哥提供的建设方案项目已经建设完成。node
这套ERP系统的RAC集群数据库在上线以前,咱们须要对RAC集群作一些功能测试,这个测试方法适用于Oracle11g/12c,也适用于oracle18c/19c。sql
2、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卡,光纤线)、网络设备(网络交换机,光纤交换机,网线)oracle
1)服务器app
咱们称这个服务器为“数据库服务器”,“数据库主机”,在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(负载均衡):
就是把负载平均的分配到集群中的各个节点,从而提升总体的吞吐能力。
3、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 |
4、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点的方式测试透明故障切换
5、Oracle RAC集群维护命令
5.1.Oracle RAC经常使用命令工具
如下内容是风哥推荐你们须要熟悉的经常使用命令,平常工做中须要常常参考来使用。