• Oracle ASM的基本思想
  • 通过应用ASM使得设计/使用简便化
  • ASM设计指针
  • ASM的Rebalancing 与 stripe
  • High Redundancy的优点
  • vs. Sympro /阶层化存储
  传统的存储物理设计手法 部分最优化
  • 对每个访问类型都分配磁盘配置数据
–随机访问(重视待机时间最小化的IOPS)
  • Seek等待时间 + 回转等待时间 > 读出时间
asmz1 –sequential访问(重视完全灵活使用传送带宽的吞吐量)
  • seek等待时间 + 回转等待时间 < 读出时间
asmz2   Hard Disk Drive技术演进 随机访问的并列化时sequential访问也高速化   1.提高Disk回转速度 缩短同样的数据的读出时间 变更sector的配置,缩小搜索范围 2.Disk外周的sector的高密度化 周边seek增多,头的移动距离锁定,随机访问高速化 3.Disk的低价化 通过将多个disk捆在一起,可以保证I/O性能   存储物理设计的変化 从部分最优化到整体最优化
  • 通过访问类型来分离的需求减少
–灵活利用所有disk,最大化发挥I/O性能=》采用 S. A. M. E   asmz3   Oracle ASM的基本思想 Stripe And Mirror Everything (S. A. M. E)  
  • 设计手法为:以均衡利用所有disk为目的,将数据进行stripe,分散在所有磁盘上,进行Mirroring。
–保证I/O性能:灵活使用所有disk的I/O带宽 –可用性を確保:采用Mirroring –设计简单化:隐藏物理disk结构,不需要额外进行设计   asmz4     Oracle Automatic Storage Management 架构
  • ASM实例
–管理ASM Diskgroup内存与进程群 –改造Oracle实例
  • Cluster Synchronization Services
–利用Oracle Clusterware的Membership管理服务 –报告DB实例与ASM实例的存在
  • ASM Diskgroup
–对Oracle实例进行虚拟化的池
  • ASM Disk
–构成ASM Diskgroup 的各个Disk(Logical Unit)   asmz5     Allocation Unit, File Extent & ASM File
  • Allocation Unit(AU:=分配单位)
–基本单位 可以设定为1(default)、2、4(推荐)、8、16、32或者64MB –将ASM Diskgroup中包含的所有ASM Disk通过这个单位进行Striping
  • File Extent
–通过多个AU来构成(尺寸可变)、各Extent在单一ASM Disk上配置
  • 最初的20000extent(0~19999) à 1*AU  à 1~20GB (1AU=1MB时)
  • 下一个的20000extent(20000~39999) à 4*AU  à 20~40GB (1AU=1MB时)
  • 下一个的20000extent以上(40000~) à16*AU à 40GB~ (1AU=1MB时)
  • ASM File(= Data File, etc)
–通过多个extent来构成   通过Oracle ASM进行Striping ASM File的分散配置
  • 对于ASM Diskgroup中包含的所有的ASM Disk,将ASM File(Data File)以File Extent(AU)单位来配置
  asmz6   S.A.M.E只能应用OLTP处理?
  • OLTP处理
–数据库中:Single block read(块尺寸单位) –存储中:Small 随机 read 通过将大部分的Disk进行stripe,并绑定在一起,可以确保有足够的iops
  • DWH/批量处理
–数据库中:多块读(基本、1MB单位) –存储中:  large sequential read   不需要sequential read 即使是随机访问,Fibre Channel带宽也不会陷入瓶颈
  • 比如、15krpm的HDD有60个的情况(假设中等规模系统)
–通过1MB的I/O尺寸随机读的吞吐量
  • 通过Oracle ORION的验证结果、40-45iops/Disk
  • 40iops × 1MB/io = 40MB/sec
  • 40MB/sec × 60本 = 2.4GB/sec
–每台都是4Gbps × 2本的FC结构,这是2节点RAC结构的最大吞吐量
  • 4Gbit / 8 bit / 1sec = 512MB/sec
  • 512MB/sec × 2本 = 1GB/sec
  • 1GB/sec × 2节点 = 2.0GB/sec
传统的RAW device结构课题 如果这个结构中扩展了表区域 传统的RAWdevice构成环境 asmz7   传统的RAW device结构课题-1 可以通过采用Oracle ASM来解决
  • 细致分割表区域
–空白区域的监视对象(表区域)较多,使用起来消耗人工较多 –频繁陷入区域不足,每个月都会追加数据文件 –因为每个表区域中空白区域都是独立的。所以会导致无用的空白区域增大 –因为数据文件数较多,可能导致SQL性能恶化 –因为管理layer数较多,所以操作比较复杂 –Volume超过1万个的话,就容易发生误操作  
  • 追加数据文件时,没有对现有文件进行rebalance
–因为只有在新建的volume中存在空白区域,如果新插入的记录都集中在那个volume中的话,就容易导致瓶颈 –现有记录因为保存在现有volume中,所以无法改善搜索记录的查询处理的性能   Oracle ASM环境的表区域扩展 简单化 asmz8   通过Oracle ASM使得管理简单化 从顾客的传统结构中观察到的ASM的优点
  • 操作简便化
–使得表区域扩展以及追加disk的顺序简便化,减少操作错误
  • 减少管理对象
–可以在ASM Disk group的容量内自由扩展表区域,不需要去在意传统的Volume以及RAW device(数据文件) –通过Striping,使得I/O均衡,不需要细致分割表区域来回避I/O竞争。可以大幅度减少表区域的总量
  • 数据再配置的工数不要
–追加Disk是,会自动执行重新配置现有数据(rebalancing)   Oracle ASM中的存储指針设计 八条 for High Performance & Transaction Database 1.将多台便宜的存储器绑定在一起 2.没有硬件RAID or RAID0(最多也就Disk8台以内) 3.一个RAID Group只会切换一个Logical Unit 4.可用性通过High Redundancy(3重化)来担保 5.尽可能将较多的LU绑定在一个ASM Diskgroup中 6.通过一样性能/尺寸的Disk(LU)来构成ASM Diskgroup 7.通过SSD构成面向Redo日志的Diskgroup 8.不使用存储的虚拟化功能(Thin Provisioning/阶层化)  
  • 将多台便宜的存储器绑定在一起
–可以获得与1台昂贵的存储器相同的I/O性能
  • 没有硬件RAID or RAID0(最多也就Disk8台以内)
  • 一个RAID Group只会切换一个Logical Unit
–比如,切换两个LU的情况,各个LU的I/O性能有较大超逸,就可能产生Hotspot
  • 尽可能将较多的LU绑定在一个ASM Diskgroup中
–马马虎虎的设计也可以获得优秀的I/O性能。太纠结于设计的话,就可能使得设计本身复杂化
  • 可用性通过High Redundancy(3重化)来担保
–在下一章说明
  • 通过一样性能/尺寸的Disk(LU)来构成ASM Diskgroup
–因为需要对所有的disk都均匀分配I/O,所以推荐统一I/O性能 –ASM的stripe为了保障各ASM Disk的使用率均衡,需要根据各个disk的尺寸进行分散。请尽量使用相同尺寸
  • 通过SSD构成面向Redo日志的Diskgroup
–推荐US开发、通过使用TPC-C,可以使得Log File Sync待机项目的待机时间稳定化
  • 不使用存储的虚拟化功能(Thin Provisioning/阶层化)
–在下一章说明   参考)统一LU的性能与尺寸 调整Fibre Channel带宽与LU数量
  • 构成绑定FC带宽不同的多个存储器的ASM Diskgroup时,需要调整各个存储器中切换的LU数
这仅仅是为了大家更好理解,并不推荐这样做.   asmz9    
  • 使用回转数不同的HDD时,请调整Disk个数构成RAID
asmz10   ASM Diskgroup构成 asmz11   Oracle ASMrebalance数据重新配置) 可以不终止数据库就重新配置  
  • 追加、删除ASM Disk(Logical Unit:LU)时, 为了维持「S. A. M. E」,需要重新配置数据
–以元数据(配置状況)为基础,通过ASM File单位均匀配置所有disk,实现最小限度地移动extent(AU) –可以通过设定多重度(rebalance強度)以及执行计划来控制对业务的影响   asmz12   通过ASM,分散配置数据   使用Data File单位对各ASM Disk的File Extent(AU)进行均匀地分割   asmz13     查看stripe      
$ sqlplus / as sysasm

SQL>
create diskgroup TDG external redundancy disk 
  '/dev/emcpowere1','/dev/emcpowerf1','/dev/emcpowerg1','/dev/emcpowerh1' ;

set linesize 150 pagesize 50000
col name for a8
col path for a36
select b.group_number,b.disk_number,a.name,b.path,b.state,b.total_mb 
  from v$asm_diskgroup a,v$asm_disk b 
 where a.group_number(+)=b.group_number
   and a.name='TDG'
 order by 2;

GROUP_NUMBER DISK_NUMBER NAME     PATH                                 STATE      TOTAL_MB
------------ ----------- -------- ------------------------------------ -------- ----------
           4           0 TDG      /dev/emcpowere1                      NORMAL       136850
           4           1 TDG      /dev/emcpowerf1                      NORMAL       136850
           4           2 TDG      /dev/emcpowerg1                      NORMAL       136850
           4           3 TDG      /dev/emcpowerh1                      NORMAL       136850



制成ASM File(Data File = 表空间)

$ sqlplus / as sysdba
SQL>
create tablespace TS0 datafile '+TDG(DATAFILE)' size 32m;
create tablespace TS1 datafile '+TDG(DATAFILE)' size 32m;
create tablespace TS2 datafile '+TDG(DATAFILE)' size 32m;




select C.NAME                   "GRP_NAME",
       A.GROUP_NUMBER           "GRP#",
       A.FILE_NUMBER            "FILE#",
       A.TYPE                   "FILE_TYPE",
       B.NAME                   "FILE_NAME",
       A.BLOCKS                 "USED(BLK)",
       trunc(A.BYTES/1024/1024) "USED(MB)",
       trunc(A.SPACE/1024/1024) "ALLOCATE(MB)"
  from V$ASM_FILE      "A", V$ASM_ALIAS     "B", V$ASM_DISKGROUP "C"
 where A.GROUP_NUMBER   = B.GROUP_NUMBER
   and A.GROUP_NUMBER   = C.GROUP_NUMBER
   and A.FILE_NUMBER    = B.FILE_NUMBER
   and B.FILE_NUMBER    < 4294967295  -- without Directories
   and B.SYSTEM_CREATED = 'Y'         -- without Symbolic Links
   and C.NAME           = 'TDG'
 order by 3;

GRP_NAME       GRP#      FILE# FILE_TYPE        FILE_NAME             USED(BLK)   USED(MB) ALLOCATE(MB)
-------- ---------- ---------- ---------------- -------------------- ---------- ---------- ------------
TDG               4        256 DATAFILE         TS0.256.792245841          4097         32           33
TDG               4        257 DATAFILE         TS1.257.792245841          4097         32           33
TDG               4        258 DATAFILE         TS2.258.792245843          4097         32           33

使用了X$KFDAT的样本SQL



select A.NAME                   "GRP_NAME",
       B.PATH                   "DV_NAME",
       A.GROUP_NUMBER           "GRP#",
       B.DISK_NUMBER            "DISK#",
       X.AUNUM_KFDAT            "AU#",
       X.FNUM_KFDAT             "FILE#",
       X.XNUM_KFDAT             "ASM_EXT#",
       X.SIZE_KFDAT             "EXT_SIZE",
       C.NAME                   "FILE_NAME"
  from X$KFDAT "X", V$ASM_DISKGROUP "A", V$ASM_DISK "B", V$ASM_ALIAS "C"
 where X.GROUP_KFDAT    = A.GROUP_NUMBER
   and X.GROUP_KFDAT    = B.GROUP_NUMBER
   and X.NUMBER_KFDAT   = B.DISK_NUMBER
   and X.FNUM_KFDAT     = C.FILE_NUMBER
   and A.GROUP_NUMBER   = B.GROUP_NUMBER
   and A.GROUP_NUMBER   = C.GROUP_NUMBER
   and X.FNUM_KFDAT    != 0
   and C.FILE_NUMBER    < 4294967295
   and C.SYSTEM_CREATED = 'Y'
   and A.NAME           = 'TDG'
 order by GRP#, DISK#, AU# ;

使用了X$KFDAT的样本SQL (部分)


GRP_NAME DV_NAME                GRP#      DISK#        AU#      FILE#   ASM_EXT#   EXT_SIZE FILE_NAME
-------- ---------------- ---------- ---------- ---------- ---------- ---------- ---------- --------------------
TDG      /dev/emcpowere1           4          0         15        256          1          1 TS0.256.792245841
TDG      /dev/emcpowere1           4          0         16        256          5          1 TS0.256.792245841
TDG      /dev/emcpowere1           4          0         17        256          9          1 TS0.256.792245841
TDG      /dev/emcpowere1           4          0         18        256         13          1 TS0.256.792245841
TDG      /dev/emcpowere1           4          0         19        256         17          1 TS0.256.792245841
TDG      /dev/emcpowere1           4          0         20        256         21          1 TS0.256.792245841
TDG      /dev/emcpowere1           4          0         21        256         25          1 TS0.256.792245841
TDG      /dev/emcpowere1           4          0         22        256         29          1 TS0.256.792245841
TDG      /dev/emcpowere1           4          0         23        257          3          2 TS1.257.792245841
TDG      /dev/emcpowere1           4          0         24        257          7          2 TS1.257.792245841
TDG      /dev/emcpowere1           4          0         25        257         11          2 TS1.257.792245841
TDG      /dev/emcpowere1           4          0         26        257         15          2 TS1.257.792245841
TDG      /dev/emcpowere1           4          0         27        257         19          2 TS1.257.792245841
TDG      /dev/emcpowere1           4          0         28        257         23          2 TS1.257.792245841
TDG      /dev/emcpowere1           4          0         29        257         27          2 TS1.257.792245841
TDG      /dev/emcpowere1           4          0         30        257         31          2 TS1.257.792245841
TDG      /dev/emcpowere1           4          0         31        258          2          4 TS2.258.792245843
TDG      /dev/emcpowere1           4          0         32        258          6          4 TS2.258.792245843
TDG      /dev/emcpowere1           4          0         33        258         10          4 TS2.258.792245843
TDG      /dev/emcpowere1           4          0         34        258         14          4 TS2.258.792245843
TDG      /dev/emcpowere1           4          0         35        258         18          4 TS2.258.792245843
TDG      /dev/emcpowere1           4          0         36        258         22          4 TS2.258.792245843


使用了X$KFDAT的样本SQL


select A.AU#,
       B.FNUM_KFDAT||' ['||B.XNUM_KFDAT||']' "emcpowere1",
       C.FNUM_KFDAT||' ['||C.XNUM_KFDAT||']' "emcpowerf1",
       D.FNUM_KFDAT||' ['||D.XNUM_KFDAT||']' "emcpowerg1",
       E.FNUM_KFDAT||' ['||E.XNUM_KFDAT||']' "emcpowerh1"
  from (select level + MIN - 1 "AU#"
          from (select min(MIN) MIN, max(MAX) MAX
                  from (select min(AUNUM_KFDAT) "MIN", max(AUNUM_KFDAT) "MAX"
                          from X$KFDAT
                         where GROUP_KFDAT = 4
                           and FNUM_KFDAT != 0
                           and FNUM_KFDAT != 1048575
                         group by NUMBER_KFDAT)
               ) connect by level < MAX + 1) A,
       (select AUNUM_KFDAT, FNUM_KFDAT, XNUM_KFDAT from X$KFDAT where GROUP_KFDAT=4 and NUMBER_KFDAT=0) B,
       (select AUNUM_KFDAT, FNUM_KFDAT, XNUM_KFDAT from X$KFDAT where GROUP_KFDAT=4 and NUMBER_KFDAT=1) C,
       (select AUNUM_KFDAT, FNUM_KFDAT, XNUM_KFDAT from X$KFDAT where GROUP_KFDAT=4 and NUMBER_KFDAT=2) D,
       (select AUNUM_KFDAT, FNUM_KFDAT, XNUM_KFDAT from X$KFDAT where GROUP_KFDAT=4 and NUMBER_KFDAT=3) E
 where A.AU#=B.AUNUM_KFDAT(+)
   and A.AU#=C.AUNUM_KFDAT(+)
   and A.AU#=D.AUNUM_KFDAT(+)
   and A.AU#=E.AUNUM_KFDAT(+) ;



另一个使用了X$KFDAT的样本SQL


       AU# emcpowere1   emcpowerf1   emcpowerg1   emcpowerh1
---------- ------------ ------------ ------------ -----------
         2   1  [0]       3  [2]       2  [0]       3  [3]
         3   3  [0]       3  [6]       3  [1]       3  [7]
         4   3  [4]       3 [10]       3  [5]       3 [11]
         5   3  [8]       3 [14]       3  [9]       3 [15]
         6   3 [12]       3 [18]       3 [13]       3 [19]
         7   3 [16]       3 [22]       3 [17]       3 [23]
         8   3 [20]       3 [26]       3 [21]       3 [27]
         9   3 [24]       3 [30]       3 [25]       3 [31]
        10   3 [28]       3 [34]       3 [29]       3 [35]
        11   3 [32]       3 [38]       3 [33]       3 [39]
        12   3 [36]       4  [0]       3 [37]     256  [0]
        13   3 [40]       5  [0]       3 [41]     256  [4]
        14   6  [0]     256  [3]       4  [1]     256  [8]
        15 256  [1]     256  [7]       1  [1]     256 [12]
        16 256  [5]     256 [11]     256  [2]     256 [16]
        17 256  [9]     256 [15]     256  [6]     256 [20]
        18 256 [13]     256 [19]     256 [10]     256 [24]
        19 256 [17]     256 [23]     256 [14]     256 [28]
        20 256 [21]     256 [27]     256 [18]     256 [32]
        21 256 [25]     256 [31]     256 [22]     257  [0]
        22 256 [29]     257  [2]     256 [26]     257  [4]
        23 257  [3]     257  [6]     256 [30]     257  [8]



 AU# emcpowere1   emcpowerf1   emcpowerg1   emcpowerh1
---------- ------------ ------------ ------------ -----------
        24 257  [7]     257 [10]     257  [1]     257 [12]
        25 257 [11]     257 [14]     257  [5]     257 [16]
        26 257 [15]     257 [18]     257  [9]     257 [20]
        27 257 [19]     257 [22]     257 [13]     257 [24]
        28 257 [23]     257 [26]     257 [17]     257 [28]
        29 257 [27]     257 [30]     257 [21]     257 [32]
        30 257 [31]     258  [3]     257 [25]     258  [0]
        31 258  [2]     258  [7]     257 [29]     258  [4]
        32 258  [6]     258 [11]     258  [1]     258  [8]
        33 258 [10]     258 [15]     258  [5]     258 [12]
        34 258 [14]     258 [19]     258  [9]     258 [16]
        35 258 [18]     258 [23]     258 [13]     258 [20]
        36 258 [22]     258 [27]     258 [17]     258 [24]
        37 258 [26]     258 [31]     258 [21]     258 [28]
        38 258 [30]     0 [524640]   258 [25]     258 [32]
        39 0 [524648]   0 [5767528]  258 [29]     0 [524648]
        40 0 [6291824]  0 [6291824]  0 [524656]   0 [6291824]



追加Disk+rebalance后


       AU# emcpowere1   emcpowerf1   emcpowerg1   emcpowerh1   emcpoweri1
---------- ------------ ------------ ------------ ------------ ------------
         2   1  [0]       3  [2]     258 [25]       3  [3]       2  [0]
         3 258 [30]       3  [0]     258 [21]       3  [7]       3  [6]
         4   3  [4]       3 [10]       3  [5]       3  [1]       3 [11]
         5   3  [8]       3 [14]       3  [9]       3 [15]       3 [16]
         6   3 [12]       3 [18]       3 [13]       3 [19]       3 [21]
         7 258 [26]       3 [22]       3 [17]       3 [23]       3 [26]
         8   3 [20]     258 [31]     258 [17]       3 [27]       3 [31]
         9   3 [24]       3 [30]       3 [25]       5  [0]       3 [36]
        10   3 [28]       3 [34]       3 [29]       3 [35]       3 [41]
        11   3 [32]       3 [38]       3 [33]       3 [39]     256  [0]
        12 258 [22]       4  [0]       3 [37]     258 [32]     256  [5]
        13   3 [40]     258 [27]     258 [13]     256  [4]     256 [10]
        14   6  [0]     256  [3]       4  [1]     256  [8]     256 [15]
        15 256  [1]     256  [7]       1  [1]     256 [12]     256 [20]
        16 258 [18]     256 [11]     256  [2]     256 [16]     256 [25]
        17 256  [9]     258 [23]     256  [6]     258 [28]     256 [30]
        18 256 [13]     256 [19]     258  [5]     256 [24]     257  [2]
        19 256 [17]     256 [23]     256 [14]     256 [28]     257  [7]
        20 256 [21]     256 [27]     256 [18]     256 [32]     257 [12]
        21 257  [0]     256 [31]     256 [22]     258 [20]     257 [17]
        22 256 [29]     258 [15]     256 [26]     257  [4]     257 [22]
        23 257  [3]     257  [6]     258  [1]     257  [8]     257 [27] 
        24 258 [10]     257 [10]     257  [1]     258 [16]     257 [32]
        25 257 [11]     257 [14]     257  [5]     257 [16]     258  [4]
        26 257 [15]     257 [18]     257  [9]     257 [20]     258  [9]
        27 257 [19]     258 [11]     257 [13]     257 [24]     258 [14]
        28 257 [23]     257 [26]     257 [29]     257 [28]     258 [19]
        29 258  [6]     257 [30]     257 [21]     258 [12]     258 [24]
        30 257 [31]     258  [3]     257 [25]     258  [0]     258 [29]
        31 258  [2]     258  [7]     0 [524584]   258  [8]     0 [524584]
        32 0 [524592]   0 [524592]   0 [2097456]  0 [524592]   0 [2097456]



       AU# emcpowere1   emcpowerf1   emcpowerg1   emcpowerh1
---------- ------------ ------------ ------------ -----------
         2   1  [0]       3  [2]       2  [0]       3  [3]
         3   3  [0]       3  [6]       3  [1]       3  [7]
         4   3  [4]       3 [10]       3  [5]       3 [11]
         5   3  [8]       3 [14]       3  [9]       3 [15]
         6   3 [12]       3 [18]       3 [13]       3 [19]
         7   3 [16]       3 [22]       3 [17]       3 [23]
         8   3 [20]       3 [26]       3 [21]       3 [27]
         9   3 [24]       3 [30]       3 [25]       3 [31]
        10   3 [28]       3 [34]       3 [29]       3 [35]
        11   3 [32]       3 [38]       3 [33]       3 [39]
        12   3 [36]       4  [0]       3 [37]     256  [0]
        13   3 [40]       5  [0]       3 [41]     256  [4]
        14   6  [0]     256  [3]       4  [1]     256  [8]
        15 256  [1]     256  [7]       1  [1]     256 [12]
        16 256  [5]     256 [11]     256  [2]     256 [16]
        17 256  [9]     256 [15]     256  [6]     256 [20]
        18 256 [13]     256 [19]     256 [10]     256 [24]
        19 256 [17]     256 [23]     256 [14]     256 [28]
        20 256 [21]     256 [27]     256 [18]     256 [32]
        ..........................................
        30 257 [31]     258  [3]     257 [25]     258  [0]
        31 258  [2]     258  [7]     257 [29]     258  [4]
        32 258  [6]     258 [11]     258  [1]     258  [8]
        33 258 [10]     258 [15]     258  [5]     258 [12]
        34 258 [14]     258 [19]     258  [9]     258 [16]
        35 258 [18]     258 [23]     258 [13]     258 [20]
        36 258 [22]     258 [27]     258 [17]     258 [24]
        37 258 [26]     258 [31]     258 [21]     258 [28]
        38 258 [30]     0 [524640]   258 [25]     258 [32]
        39 0 [524648]   0 [5767528]  258 [29]     0 [524648]
        40 0 [6291824]  0 [6291824]  0 [524656]   0 [6291824]






rebalance的操作 重新查看、理解stripe状态
  • 使用ASM File(= Data File)单位均匀分布
  • 移动到追加Disk的File Extent的对象是所有ASM File
–不仅限最后制成的(位于Disk之后)ASM File
  • 被去除的部分中,从位于ASM Disk之后的File Extent(AU)开始向上移动
–这成为compaction处理 –https://support.us.oracle.com/oip/faces/secure/km/BugDisplay.jspx?id=6822659&bugProductSource=Oracle&h=Y   PSR11.2.0.2以后  
  • 可以变更PSR11.2.0.2~rebalance強度(power_limit)的操作
–传统的版本中的设置范围是「0~11」 –11.2.0.2以后的设置范围是「0~1024」
  • 但是如果11.2.0.2没有设定ASM Diskgroup的COMPATIBILITY属性的话,12以上就不能设置了
–PSR11.2.0.3环境中的COMPATIBILITY属性默认为11.2.0.0.0   alter diskgroup <ASM Diskgroup Name> set attribute 'compatible.asm'='11.2.0.2.0';   ARB0进程与power_limit参数  
  • 启动执行rebalance的ARB0进程的节点是一个
–ARB0进程无法复数启动
  • power_limit的値是ARB0进程同时执行的非同步I/O数
–根据不同的存储I/O性能,设定合适的值    
set linesize 150

select * from V$ASM_OPERATION ;

GROUP_NUMBER OPERA STAT      POWER     ACTUAL      SOFAR   EST_WORK   EST_RATE EST_MINUTES ERROR_CODE

------------ ----- ---- ---------- ---------- ---------- ---------- ---------- ----------- -----------

           3 REBAL RUN         128        128         71      31408        945          33

$ ps -efH|grep arb|grep -v grep

grid     11242     1  4 21:16 ?        00:00:04   asm_arb0_+ASM1

    Oracle ASM中Disk故障时的操作 可以完善存储的缺点
  • 前提是Mirroring结构
–读取处理时,检测到I/O错误的情况
  • 从secondary中读取,自动修复不良块
–写入处理中,检测到I/O错误的情况
  • 自动online处理故障Disk
  • 通过高速镜像再同步,可以从生存disk中同步最小限度的数据
–绑定多个存储器的环境中,没有写入时,修复之后,无法识别存储到底是不是新的存储。但通过使用ASM的话就可以识别     Mirroring与故障group
  • 可以设定每个文件的Mirroring(External/Normal/High)
–保存在不同的故障group所属ASM Disk之中 –一般都是通过共享资源(电源灯)的单位(筐体/控制器)来设定 asmz14     考虑了Disk的二重故障的构成方法 RAID1+0 × Normal vs. RAID0 × High  
  • RAID1+0 × ASM Normal Redundancy
–RAID与ASM中,对应各自的镜像 –但是,磁盘使用量为4倍(=2×2)
  • RAID0 × ASM High Redundancy
–RAID虽然没有镜像,但可以用ASM的三重镜像来处理 –磁盘使用量为3倍(=1×3) –虽然最好是没有RAID,但通过减少Logical Unit数量还是可以提高管理性能
  • Disk故障时、因为包含Disk,RAID group整体都无法使用了,所以需要充分考虑性能,来决定RAID0的个数
  RAID1+0 × Normal vs. RAID0 × High 保障各个结构可用性的构造图   asmz15 RAID1+0 × Normal vs. RAID0 × High Write时的I/O量与分散状況   asmz16   Read时访问的Disk数 asmz17     ASM High Redundancy的优点 ASM是处理二重故障的最优选项
  • 比较前一页中的各个结构时,发现 RAID0 + ASM High Redundancy好多了
–实际上最好的是搭载Infiniband的Exadata。  
RAID1+0 × Normal RAID0 × High
Disk使用量 4 3
Write时存储内的I/O量 4 3
Write时写入的Disk数 8 12
Write时的FC带宽的数据量 2 3
Read时访问Disk数 6 12
  考虑导入Thin Provisioning的背景 前提是与Oracle ASM一起使用
  • 减少磁盘追加工数
  • 尽量规避通过ASM追加磁盘时进行rebalance
asmz18    
  • 对I/O性能要求不高的小规模多个数据库都集中在一个较大的存储器中时

–通过将使用率与现实使用量相协调,可以大幅减少成本

–多个数据库之间,不执行存储管理的操作(制成/删除RAID Group、切换LU、分割服务器等)、通过熟练使用物理Disk,可以减少使用的人工

–ASM并不是不支持Sympro

  • 特别是储存数据库的表区域的数据的结构与Sympro很相似
  关键点1 – stripe导致的性能恶化 重视I/O性能的数据库中ASM与Sympro的组合 我重新想了下,CoreTech资料中记载的注意点1是不正确的。我将分两点来进行阐述。 首先。 Sympro从存储中将多个RAID group绑定在一起,对OS展示虚拟volume。 换言之,一个虚拟volume会跨越多个RAID group来切换。 将各个RAID group中分配的单位称为page,CoreTech资料中说的42MB就是这个page的尺寸。 并且,这个page也会在各个RAID group中对各个磁盘进行详细的stripe。 然后。 ASM存储时推荐的stripe尺寸与手册上推荐的相同,2的乘方~AU尺寸。 推荐这个的目的是一个AU可以在多个HDD中分散I/O。 # 换言之,即使将一个AU在多个HDD中分割也没有问题。 反之,超过AU尺寸的stripe尺寸的话,就代表I/O分散情况没有问题。 考虑到上述两点的话, 本来在比AU尺寸小的话,推荐stripe尺寸的阶段中,一个AU(File Extent)会在多个磁盘中被分割。换言之,即使一个AU被多个page分割也不会有任何问题。 并且,Sympro的page是指,各RAID group分割的单位,因为其中之一的page是通过比RAID group内的各磁盘要小的stripe宽度来分割的,所以可以分割I/O。 因此,CoreTech的记录(关键点1)是正确的。但是,关键点2/3也是对的,在需求较高性能的数据库中不推荐Sympro。   关键点2 -rebalance的思想差异造成的性能恶化 重视I/O性能重視的数据库中,ASM与Sympro的组合
  • 即使使用ASM均匀分散了,也可能出现在特定的物理disk集中访问(可能发生Hotspot)
  • rebalance的思想
–ASM:每个Data File中都在所有ASM Disk(LU)中均匀分散了
  • 对所有的LU按照I/O要求均匀分散,提高I/O性能
  • 考虑到数据库对象的机制
–TP:Storage Pool中的RAID Group的使用率均衡化
  • 考虑到数据库对象的机制
  • 无法根据访问频率来分散
  关键点3 -使用的複雑化 关键点2 -rebalance的思想不同导致的性能恶化
  • 多个存储虚拟化layer可能导致trouble shooting的延迟以及误操作
– 利用TP时,无法解析RAID Group单位的I/O性能
  • 顶多到理论Volume水平。
  • 解放空白区域时,需要执行特别的utility
–ASM Diskgroup中追加Disk,进行rebalance后,现有的ASM Disk中就会产生空白区域,但是TP中无法自动认识空白区域
  • ASM Storage Reclamation Utility (ASRU)
  • Zero Page Reclamation Utility
  ASM Storage Reclamation Utility (ASRU) 存储中识别空白区域的utility
  • SR 3-3222667411: RC:ASRU resize was not successful when ASM allocation unit size is 32MB
https://support.us.oracle.com/oip/faces/secure/ml3/sr/SRDetail.jspx?SRNumber=3-3222667411
  • SR 3-3214700961: ASRU should not reclaim space when disk failed to be resized to smaller size
https://support.us.oracle.com/oip/faces/secure/ml3/sr/SRDetail.jspx?SRNumber=3-3214700961
  • 通过Oracle ASM Storage Reclamation Utility与3PAR Thin Persistence的合作,维持较高的存储使用率
http://www.oracle.com/technetwork/jp/database/1005199-oracle-asru-3par-final-321864-ja.pdf
  • ASUR Download à ASM Storage Reclamation Utility (ASRU) Download
http://www.oracle.com/us/products/database/index-100339.htmlhttp://www.oracle.com/technetwork/products/cloud-storage/asruv12-1517734.html?ssSourceSiteId=ocomen       存储产品的自动阶层化功能 可以与ASM配合使用
  • 分析过去的I/O实绩,在某个时点自动重新配置数据
  • 根据访问频率,将数据移动到合适的device(SSD or HDD)中
  asmz19   使用Oracle Database的注意事项 通过自动阶层化功能进行不透明化(1)
  • 分析过去的I/O实绩,在某个时点重新自动配置数据
–以往所有的I/O实绩并不一定是平时使用的I/O需求
  • 包含维护时以及故障时的I/O需求
  • 由于访问模式(天or月、白天 or 晚上、临时表) 访问数据时间可能产生偏差
–基于device特性与搭载量,为了运行率不产生偏差,需要使得数据配置最优化
  • SSD: 适合Small Random Read HDD: 适合Large Sequential Read
仅凭过去的I/O实绩很难实现最优化  
  • 分析过去的I/O实绩,在某个时点重新自动配置数据
–重新配置数据会使得device以及控制数据产生CPU负荷
  • 需要考虑I/O需求的时机与再配置的事务影响进行设计
数据再配置的时机以及周期设计比较困难  
  • 分析过去的I/O实绩,在某个时点重新自动配置数据
–可以无视数据库结构在存储中重新配置
  • 一个表数据被分配到SSD与HDD的中进行配置时,因为 段(表/索引)单位、表区域(数据文件)单位的I/O性能都会变成平均値,所以很难指定瓶颈
–同时分析数据库与存储的性能信息
  • 很难重现数据配置以及发生问题时的具体状况
找出性能问題的原因是一项长期工作   通过Oracle Database功能实现存储的阶层化 Database Smart Flash Cache & Partitioning   asmz20