FAILGROUP bb DISK ‘/dev/asm-bbdata1’
ATTRIBUTE ‘au_size’=‘1M’,
‘compatible.asm’ = ‘11.2’,
‘compatible.rdbms’ = ‘11.2’,
‘compatible.advm’ = ‘11.2’;
如果上线后有添加磁盘的需求,Data 磁盘组添加磁盘命令如下:
alter diskgroup DATA add
FAILGROUP aa disk ‘/dev/asm-aadata2’
FAILGROUP bb disk ‘/dev/asm-bbdata2’
rebalance power 111;
双活的 ocr 磁盘组创建好之后需要将 OCR 和 votedisk 设备迁移至 OCR 磁盘中,命令如下:
$ORACLE_HOME/bin/ocrconfig -add +OCR
$ORACLE_HOME/bin/ocrconfig -delete +TMPOCR
$ORACLE_HOME/bin/crsctl replace votedisk +OCR
$ORACLE_HOME/bin/crsctl query css votedisk
$ORACLE_HOME/bin/ocrcheck
将 ASM 实例的参数文件迁移到 asmspfile 至 OCR 磁盘组
sqlplus / as sysasm
SQL> create pfile=‘/tmp/pfile.ora’ from spfile;
SQL> create spfile=‘+OCR’ from pfile=‘/tmp/pfile.ora’;
ASM 实例的参数需要做如下设置(优先读本地磁盘组):
alter system set asm_preferred_read_failure_groups=‘DATA.aa’ sid=‘+ASM1’ SCOPE=SPFILE;
alter system set asm_preferred_read_failure_groups=‘DATA.bb’ sid=‘+ASM2’ SCOPE=SPFILE;
3Oracle 存储双活性能测试
Oracle 双活存储安装完毕之后需要重点做读写性能速度测试,在这里我们通过主机层的软件和数据库及的写入速度测试:
① 主机层测试
这里我们采用 Orion 软件分别在2个 RAC 节点上对两块异地测试盘做读写速度测试:(同样块大小,100%写)
/home/oracle/orion-run advanced -testname yt -num_disks 1 -size_small 64 -size_large 64 -typerand -write 100 -duration 20
测试结果如下:
[oracle@ytaeplogdb1 test]$ cat yt_20171107_0255_trace.txt|grep bw
ran (small): my 1 oth 0 iops 2490 size 64 K lat 0.40 ms bw = 155.64 MBps dur 19.91 s WRITE
ran (small): my 2 oth 0 iops 4489 size 64 K lat 0.45 ms bw = 280.58 MBps dur 20.00 s WRITE
ran (small): my 3 oth 0 iops 5699 size 64 K lat 0.53 ms bw = 356.19 MBps dur 20.00 s WRITE
ran (small): my 4 oth 0 iops 4927 size 64 K lat 0.81 ms bw = 308.00 MBps dur 20.00 s WRITE
ran (small): my 5 oth 0 iops 5099 size 64 K lat 0.98 ms bw = 318.70 MBps dur 19.99 s WRITE
然后再对比2个 RAC 节点分别测试2块盘的写速度
Orion 测速写 | AA 磁盘组 | BB 磁盘组 |
Rac1 | 170M/秒 | 84 M/秒 |
Rac2 | 88 M/秒 | 169M/秒 |
测试结果描述:因为 RAC1节点和 aa 的存储在一个本地机房,RAC2 节点和 bb 存储在一个机房,所以 RAC1 节点写 aa 存储的速度和 RAC2 节点写 bb 存储的速度都接近理想值 。但是 RAC1 存储写 bb 存储和 RAC2 存储写 aa 存储需要跨两个机房之间定的光纤和传输网络,实际速度根据两个机房的距离,存储光纤的信号传输速率,进而影响 Orin 写入速率,通过上表我们可以看出跨光纤距离为理想值的50%左右,而且两端的写入速度比较对称(从 RAC 写入到 bb 和从 RAC2 写入到 aa 的速度)。
② 数据库层测试
数据库层的测试主要是在2个 RAC 节点对两个异地机房的磁盘模拟插入数据测试,详细测试方案如下:
创建2个磁盘组,分别为两个异地机房的磁盘
CREATE DISKGROUP AA external REDUNDANCY DISK ‘/dev/asm-aatest’
ATTRIBUTE ‘au_size’=‘1M’, ‘compatible.asm’ = ‘11.2.0.4.0’,
‘compatible.rdbms’ = ‘11.2’, ‘compatible.advm’ = ‘11.2’;
CREATE DISKGROUP BB external REDUNDANCY DISK ‘/dev/asm-bbtest’
ATTRIBUTE ‘au_size’=‘1M’, ‘compatible.asm’ = ‘11.2.0.4.0’,
‘compatible.rdbms’ = ‘11.2’, ‘compatible.advm’ = ‘11.2’;
创建2个表空间,datafile 分别为两个机房的磁盘组
Create tablespace aa datafile ’ +AA’ size 30g;
Create tablespace bb datafile ’ +BB’ size 30g;
模拟创建一个 10G 的表,分别再 RAC 的两个节点上写两个磁盘组,并测试速度(因为 Redo 在 Data 磁盘组上,data 磁盘组跨两个异地存储节点,这里我们测试需要绕过 Redo,直接写在对应磁盘组上,这里我们用 create table as 测试写入速度,(绕过 Redo 直接测试写到某个磁盘)
Rac1 节点执行:
Create table a1 tablespace aa as select * from test;
Create table b1 tablespace bb as select * from test;
Rac2 节点执行:
Create table a2 tablespace aa as select * from test;
Create table b2 tablespace bb as select * from test;
测试结果如下:
Create as 测速 | AA 磁盘组 | BB 磁盘组 |
Rac1 | 150M/秒 | 67 M/秒 |
Rac2 | 73 M/秒 | 162M/秒 |
通过数据库级的插入速度测试要尽量接近 Oracle 的写入速度为最佳,如果上述测试的速度严重低于 orion 测试速度,或者某个链路的测试速度比预估值低很多,这时候我们就需要联系主机存储或者光纤链路负责人员进行原因排查和问题定位,尽量在系统上线之前解决问题,避免出现系统上线之后因写入速度慢导致数据库性能严重下降的问题。
4Oracle 存储双活高可用测试及故障处理
如果两个异地机房的存储中有个一个存储出现故障,则会出现如下报错,这时候 ASM 磁盘组状态会变成 UNKNOWN 状态,这时候需要存储工程师修复好磁盘,链路或者磁盘修复好之后需要对磁盘进行 dd 操作,因为和正常盘数据出现不一致,命令如下:
dd if=/dev/zeroof=/dev/asm-bbdata bs=8k count=2000
删除 UNKNOWN 状态的磁盘
alter diskgroupDATA drop disk DATA_0001 FORCE;
添加新的磁盘
alter diskgroup dataadd FAILGROUP bb disk ‘/dev/asm-bbdata’ rebalance power 111;
如果出现问题的是仲裁存储这时候我们的操作步骤如下:
alter diskgroupOCR drop QUORUM disk OCR_0004 FORCE;
添加新的磁盘
alter diskgroupocr add QUORUM FAILGROUP RZ disk’/dev/asm-zcocr’ rebalance power 1;
添加好 ocr 磁盘组之后需要检查 ocr 磁盘的状态
[grid@ytaeplogdb1~]$ crsctl query css votedisk
## STATE File Universal Id File Name Disk group
– ----- ----------------- --------- ---------
-
ONLINE a7af9b05365e4f1ebfe22a8bf6ee06a0 (/dev/asm-bbocr) [OCR]
-
ONLINE 65f9bba630ac4f21bf12a84ae761e660 (/dev/asm-zcocr) [OCR]