ASM_PREFERRED_READ_FAILURE_GROUPS

简介:

  最近有一些客户有这样一个需求,一个ASM磁盘组中分别挂载不同性能的存储或磁盘。希望ASM在读取的时候,优先读取性能好的磁盘,性能差的磁盘更多的是扮演'standby'的角色。
    oracle提供一个参数ASM_PREFERRED_READ_FAILURE_GROUPS,来实现ASM优先读取的功能,但是以FAILURE_GROUP为单位实现的。我们可以将不同性能的存储(磁盘),分别划分到不同的FAILURE_GROUP,然后根据这个参数来指定优先读取哪个FAILURE_GROUP


关于参数说明
ASM_PREFERRED_READ_FAILURE_GROUPS specifies the failure groups that contain preferred read disks. Preferred disks are instance specific. This parameter is only valid in ASM instances.

下面就是在测试环境测试的过程:

1. 修改参数(无需重启instance,立即生效)

1
2
SQL> alter system  set  ASM_PREFERRED_READ_FAILURE_GROUPS= 'DATA.QR01CEL03' ;
System altered.

2. 检查修改结果 

1
2
3
4
SQL> show parameter prefer
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
asm_preferred_read_failure_groups string DATA.QR01CEL03

下面是测试部分:
1. 查询修改后每个FAILGROUP的读取次数

1
2
3
4
5
6
SQL> select instname, failgroup, sum(reads), sum(writes) from v$asm_disk_iostat group by instname,failgroup order by  1 , 2 ;
INSTNAME  FAILGROUP SUM(READS) SUM(WRITES)
---------------------------------------------------------------- -----------
dbm2                QR01CEL01   12608  5470
dbm2 QR01CEL02   3544    4529
dbm2 QR01CEL03   1997   4107

2. 另一个窗口2,执行read操作

1
select * from dba_objects;

3. 窗口1,可以看到,读取都是QR01CEL03上的reads是一直增加的,而其他的FAILGROUP是没有reads的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
SQL> /
INSTNAME  FAILGROUP SUM(READS) SUM(WRITES)
---------------------------------------------------------------- -----------
dbm2  QR01CEL01   12608   5492
dbm2  QR01CEL02   3545    4550
dbm2  QR01CEL03   2081    4128
SQL> /
INSTNAME  FAILGROUP SUM(READS) SUM(WRITES)
---------------------------------------------------------------- -----------
dbm2  QR01CEL01   12608  5508
dbm2  QR01CEL02   3545   4560
dbm2  QR01CEL03   2102   4138
SQL> /
INSTNAME  FAILGROUP SUM(READS) SUM(WRITES)
---------------------------------------------------------------- -----------
dbm2  QR01CEL01   12608   5561
dbm2  QR01CEL02   3546    4606
dbm2  QR01CEL03   2250    4185
SQL> /
INSTNAME  FAILGROUP SUM(READS) SUM(WRITES)
---------------------------------------------------------------- -----------
dbm2  QR01CEL01   12608   5645
dbm2  QR01CEL02   3546    4669
dbm2  QR01CEL03   2414    4246

最后可以看到本次查询共读取2414-1997=417次。并且全部在FAILGROUP-QR01CEL03上。

4. 下面我们测试写入部分:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
窗口 1
SQL> /
INSTNAME  FAILGROUP SUM(READS) SUM(WRITES)
---------------------------------------------------------------- -----------
dbm2  QR01CEL01   12619   5991
dbm2  QR01CEL02   3558    4957
dbm2  QR01CEL03   3389    4539
窗口 2
SQL> create table test  as  select * from dba_objects;
窗口 1
SQL> /
INSTNAME  FAILGROUP SUM(READS) SUM(WRITES)
---------------------------------------------------------------- -----------
dbm2  QR01CEL01   12621  6178
dbm2  QR01CEL02   3559   5097
dbm2  QR01CEL03   3720   4675

实际测试显示,对写操作是没有影响。
   写操作的测试--很白痴的行为,想想也是,data磁盘组是normal模式,一定会根据算法,将数据块分配到不同的FAILGROUP。也就不可能有优先写的概念。

    总结,很简单的一个参数设置,可以实现和实用的一个功能。










本文转自 hsbxxl 51CTO博客,原文链接:http://blog.51cto.com/hsbxxl/1407678,如需转载请自行联系原作者

目录
相关文章
asm Normal redundancy storage link is broken(19C)
asm Normal redundancy storage link is broken,Storage Split
2999 0
|
Oracle 关系型数据库 数据库
|
文字识别
ALERT.LOG for ASM Shows "WARNING: failed to online diskgroup resource ora.GI.dg (unable to communica
APPLIES TO: OracleDatabase - Enterprise Edition - Version 11.2.0.1 to 12.
1305 0
|
SQL 关系型数据库 数据库
ORA-15149: another ASM instance found running on the host
【问题现象】 [grid@localhost ~]$ echo $ORACLE_SID +asm [grid@localhost ~]$ echo $ORACLE_HOME /u01/app/11.
1098 0
|
Oracle 网络协议 关系型数据库
[INS-30507] Empty ASM disk group
    最近的Oracle 11g RAC安装碰到了INS-30507错误,也就是在grid安装到创建ASM磁盘组的时候找不到任何候选磁盘,google了N多安装指导也没有找到蛛丝马迹。
1245 0
|
SQL Perl
ORA-00054: resource busy and acquire with NOWAIT specified
截取METALINK: Error: ORA-00054Text:  resource busy and acquire with NOWAIT specified or timeout expired============================...
944 0