【Oracle 12c ASM专题】Flex磁盘组到底有多flexible?

来源:互联网 发布:2017nba数据统计 编辑:程序博客网 时间:2024/06/14 12:42

原文链接:https://martincarstenbach.wordpress.com/2017/08/22/12-2-new-feature-the-flex-asm-disk-group-part-4/

Flex Disk Group属性

前三部分我分享了关于ASM Flex Disk Group、File Group和Quota Group如何强制对存储空间进行限制的实验结果。但是我还没有测试修改磁盘组属性会产生什么效果。我所关心的属性都是数据保护级别相关的,正如官方文档中所讨论的那样-Automatic Storage Management Administrator’s Guide (https://docs.oracle.com/database/122/OSTMG/mirroring-diskgroup-redundancy.htm)。除了保护模式相关的属性之外当然也有其他的一些磁盘组属性,但是本次实验并不涉及。

一个Flex冗余度的ASM磁盘组可以被设置为任意保护模式(3副本、2副本、无保护),默认情况下,Flex冗余度的磁盘组使用2副本模式。不像其他的磁盘组,你可以改变Flex磁盘组内某个单独的DB或PDB的保护模式。这里最好给大家举个例子:

SQL> select filegroup_number,name,guid from v$asm_filegroupFILEGROUP_NUMBER NAME                 GUID---------------- -------------------- --------------------------------               0 DEFAULT_FILEGROUP               1 CDB_CDB$ROOT         4700A987085A3DFAE05387E5E50A8C7B               2 CDB_PDB$SEED         536DF51E8E28221BE0534764A8C0FD81               3 PDB1                 537B677EF8DA0F1AE0534764A8C05729               4 ORCL_CDB$ROOT        4700A987085A3DFAE05387E5E50A8C7B               5 ORCL_PDB$SEED        537E63B952183748E0534764A8C09A7F               6 PDB1_0001            537EB5B87E62586EE0534764A8C055307 rows selected. 

上面的列表展示了我的ASM实例中的文件组信息。本章将要修改6号文件组(PDB1_0001)的属性,该文件组存放在Flex磁盘组上。知道哪些文件属于这个文件组非常重要。这里是一个列表:

SQL> select file_number,bytes,space,type,redundancy,redundancy_lowered,striped,remirror  2  from v$asm_file where filegroup_number = 6;FILE_NUMBER  BYTES      SPACE      TYPE      REDUNDANCY  REDUNDANCY_LOWERED  STRIPED  REMIRROR309          104865792  218103808  DATAFILE  MIRROR      U                   COARSE   N310          262152192  541065216  DATAFILE  MIRROR      U                   COARSE   N311          419438592  859832320  DATAFILE  MIRROR      U                   COARSE   N312          67117056   142606336  TEMPFILE  MIRROR      U                   COARSE   N

官方文档说的没错,存放在Flex磁盘组上的数据文件默认冗余度是2副本。

文件组属性

在磁盘组内部改变冗余度和其他一些属性都依赖于你拥有文件组。文件组的属性可以通过sql或者asmcmd来进行查看。如下:

ASMCMD> lsfg -G flex --filegroup PDB1_0001File Group  Disk Group  Property    Value   File Type                  PDB1_0001   FLEX        PRIORITY    MEDIUM                             PDB1_0001   FLEX        STRIPING    COARSE  CONTAINER                  PDB1_0001   FLEX        STRIPING    FINE    CONTROLFILE                PDB1_0001   FLEX        REDUNDANCY  MIRROR  DATAFILE                   PDB1_0001   FLEX        STRIPING    COARSE  DATAFILE                   PDB1_0001   FLEX        REDUNDANCY  MIRROR  ONLINELOG                  PDB1_0001   FLEX        STRIPING    COARSE  ONLINELOG                  PDB1_0001   FLEX        REDUNDANCY  MIRROR  ARCHIVELOG                 PDB1_0001   FLEX        STRIPING    COARSE  ARCHIVELOG                 PDB1_0001   FLEX        REDUNDANCY  MIRROR  TEMPFILE                   PDB1_0001   FLEX        STRIPING    COARSE  TEMPFILE                   PDB1_0001   FLEX        REDUNDANCY  MIRROR  BACKUPSET                  PDB1_0001   FLEX        STRIPING    COARSE  BACKUPSET                  PDB1_0001   FLEX        REDUNDANCY  MIRROR  PARAMETERFILE              PDB1_0001   FLEX        STRIPING    COARSE  PARAMETERFILE              PDB1_0001   FLEX        REDUNDANCY  MIRROR  DATAGUARDCONFIG            PDB1_0001   FLEX        STRIPING    COARSE  DATAGUARDCONFIG            PDB1_0001   FLEX        REDUNDANCY  MIRROR  CHANGETRACKING             PDB1_0001   FLEX        STRIPING    COARSE  CHANGETRACKING             PDB1_0001   FLEX        REDUNDANCY  MIRROR  FLASHBACK                  PDB1_0001   FLEX        STRIPING    COARSE  FLASHBACK                  PDB1_0001   FLEX        REDUNDANCY  MIRROR  DUMPSET                    PDB1_0001   FLEX        STRIPING    COARSE  DUMPSET                    PDB1_0001   FLEX        REDUNDANCY  MIRROR  AUTOBACKUP                 PDB1_0001   FLEX        STRIPING    COARSE  AUTOBACKUP                 PDB1_0001   FLEX        REDUNDANCY  MIRROR  VOTINGFILE                 PDB1_0001   FLEX        STRIPING    COARSE  VOTINGFILE                 PDB1_0001   FLEX        REDUNDANCY  MIRROR  OCRFILE                    PDB1_0001   FLEX        STRIPING    COARSE  OCRFILE                    PDB1_0001   FLEX        REDUNDANCY  MIRROR  ASMVOL                     PDB1_0001   FLEX        STRIPING    COARSE  ASMVOL                     PDB1_0001   FLEX        REDUNDANCY  MIRROR  ASMVDRL                    PDB1_0001   FLEX        STRIPING    COARSE  ASMVDRL                    PDB1_0001   FLEX        REDUNDANCY  MIRROR  OCRBACKUP                  PDB1_0001   FLEX        STRIPING    COARSE  OCRBACKUP                  PDB1_0001   FLEX        REDUNDANCY  MIRROR  FLASHFILE                  PDB1_0001   FLEX        STRIPING    COARSE  FLASHFILE                  PDB1_0001   FLEX        REDUNDANCY  MIRROR  XTRANSPORT BACKUPSET       PDB1_0001   FLEX        STRIPING    COARSE  XTRANSPORT BACKUPSET       PDB1_0001   FLEX        REDUNDANCY  MIRROR  AUDIT_SPILLFILES           PDB1_0001   FLEX        STRIPING    COARSE  AUDIT_SPILLFILES           PDB1_0001   FLEX        REDUNDANCY  MIRROR  INCR XTRANSPORT BACKUPSET  PDB1_0001   FLEX        STRIPING    COARSE  INCR XTRANSPORT BACKUPSET  PDB1_0001   FLEX        REDUNDANCY  MIRROR  KEY_STORE                  PDB1_0001   FLEX        STRIPING    COARSE  KEY_STORE                  PDB1_0001   FLEX        REDUNDANCY  MIRROR  AUTOLOGIN_KEY_STORE        PDB1_0001   FLEX        STRIPING    COARSE  AUTOLOGIN_KEY_STORE        PDB1_0001   FLEX        REDUNDANCY  MIRROR  CONTAINER                  PDB1_0001   FLEX        REDUNDANCY  HIGH    CONTROLFILE                ASMCMD> 

输出包含两大类属性:冗余和条带化。我真正关心的只有冗余度,而且我也没接触过条带化相关的属性。查了下官方文档 ASM Administrator’s guide(https://docs.oracle.com/database/122/OSTMG/asm-filegroups.htm#GUID-BE9083C8-A5DF-48CD-BB32-C8A6FCDA3E7B),
对条带化属性的解释如下:

这是文件类型的属性,仅需为每个文件类型设置。一般使用默认值就够了,不需要人为改变。

看到这个我很高兴。

使用sql依然可以达到这种效果,这里是等价的输出:

SQL> select file_type, name, value from v$asm_filegroup_property where filegroup_number = 6;FILE_TYPE                      NAME                           VALUE------------------------------ ------------------------------ ------------------------------                               PRIORITY                       MEDIUMCONTROLFILE                    REDUNDANCY                     HIGHCONTROLFILE                    STRIPING                       FINEDATAFILE                       REDUNDANCY                     MIRRORDATAFILE                       STRIPING                       COARSEONLINELOG                      REDUNDANCY                     MIRRORONLINELOG                      STRIPING                       COARSEARCHIVELOG                     REDUNDANCY                     MIRRORARCHIVELOG                     STRIPING                       COARSETEMPFILE                       REDUNDANCY                     MIRRORTEMPFILE                       STRIPING                       COARSEBACKUPSET                      REDUNDANCY                     MIRRORBACKUPSET                      STRIPING                       COARSEPARAMETERFILE                  REDUNDANCY                     MIRRORPARAMETERFILE                  STRIPING                       COARSEDATAGUARDCONFIG                REDUNDANCY                     MIRRORDATAGUARDCONFIG                STRIPING                       COARSECHANGETRACKING                 REDUNDANCY                     MIRRORCHANGETRACKING                 STRIPING                       COARSEFLASHBACK                      REDUNDANCY                     MIRRORFLASHBACK                      STRIPING                       COARSEDUMPSET                        REDUNDANCY                     MIRRORDUMPSET                        STRIPING                       COARSEAUTOBACKUP                     REDUNDANCY                     MIRRORAUTOBACKUP                     STRIPING                       COARSEVOTINGFILE                     REDUNDANCY                     MIRRORVOTINGFILE                     STRIPING                       COARSEOCRFILE                        REDUNDANCY                     MIRROROCRFILE                        STRIPING                       COARSEASMVOL                         REDUNDANCY                     MIRRORASMVOL                         STRIPING                       COARSEASMVDRL                        REDUNDANCY                     MIRRORASMVDRL                        STRIPING                       COARSEOCRBACKUP                      REDUNDANCY                     MIRROROCRBACKUP                      STRIPING                       COARSEFLASHFILE                      REDUNDANCY                     MIRRORFLASHFILE                      STRIPING                       COARSEXTRANSPORT BACKUPSET           REDUNDANCY                     MIRRORXTRANSPORT BACKUPSET           STRIPING                       COARSEAUDIT_SPILLFILES               REDUNDANCY                     MIRRORAUDIT_SPILLFILES               STRIPING                       COARSEINCR XTRANSPORT BACKUPSET      REDUNDANCY                     MIRRORINCR XTRANSPORT BACKUPSET      STRIPING                       COARSEKEY_STORE                      REDUNDANCY                     MIRRORKEY_STORE                      STRIPING                       COARSEAUTOLOGIN_KEY_STORE            REDUNDANCY                     MIRRORAUTOLOGIN_KEY_STORE            STRIPING                       COARSECONTAINER                      REDUNDANCY                     MIRRORCONTAINER                      STRIPING                       COARSE49 rows selected.

除了vasmfilevasm_filegroup_file这个视图:

SQL> select filegroup_number, file_number, incarnation  2  from v$asm_filegroup_file  3  where filegroup_number = 6  4  order by file_number;FILEGROUP_NUMBER FILE_NUMBER INCARNATION---------------- ----------- -----------               6         309   948464269               6         310   948464269               6         311   948464269               6         312   948464283SQL> 

FILE_NUMBER字段和INCARNATION可以被关联上v$asm_file。

回到主题上:我想把冗余度从normal转为high,但该操作仅对6号文件组有效。v$asm_file视图中有一些大小、类型、当前冗余度、条带级别和是否正在re-mirror的信息。在进行操作之前,我们先看下里面的内容:

SQL> select file_number,bytes,space,type,redundancy,redundancy_lowered,striped,remirror  2  from v$asm_file where filegroup_number = 6;FILE_NUMBER      BYTES      SPACE TYPE                 REDUND R STRIPE R----------- ---------- ---------- -------------------- ------ - ------ -        309  104865792  218103808 DATAFILE             MIRROR U COARSE N        310  262152192  541065216 DATAFILE             MIRROR U COARSE N        311  419438592  859832320 DATAFILE             MIRROR U COARSE N        312   67117056  142606336 TEMPFILE             MIRROR U COARSE NSQL>

文件309和312使用mirror的冗余度(2副本,也就是normal冗余)。让我们尝试改变这个冗余度,看看会发生什么。

修改数据文件冗余度

这里真正的操作才开始。Automatic Storage Management Administrator’s Guide的Administering Oracle ASM Disk Groups章节的Managing Oracle ASM Flex Disk Groups这个部分(https://docs.oracle.com/database/122/OSTMG/asm-filegroups.htm#GUID-BE9083C8-A5DF-48CD-BB32-C8A6FCDA3E7B)
说了所有文件组的属性都可以被修改。让我们用文档上的例子,来改变6号文件组的属性:

SQL> alter diskgroup flex modify filegroup PDB1_0001 set 'datafile.redundancy'='high';Diskgroup altered.

这条命令(其他改变存储属性的操作)必须以SYSASM方式登陆ASM实例才可以执行。从DB实例执行会报如下错误:

SQL> alter diskgroup flex modify filegroup PDB1_0001 set 'datafile.redundancy' = 'high';Error starting at line : 1 in command -alter diskgroup flex modify filegroup PDB1_0001 set 'datafile.redundancy' = 'high'Error report -ORA-15000: command disallowed by current instance type15000. 00000 -  "command disallowed by current instance type"*Cause:    The user has issued a command to a conventional RDBMS instance           that is only appropriate for an ASM instance. Alternatively, the           user has issued a command to an ASM instance that is only           appropriate for an RDBMS instance.*Action:   Connect to the correct instance type and re-issue the command.SQL> 

命令结束后,数据文件立刻开始了re-mirror操作。在re-mirror的过程中(即remirror字段为Y),冗余度依然为MIRROR。只有当re-mirror操作完成后(即remirror字段为N),冗余度才变为high。注意:312号文件的冗余度依然为normal,想想也对,我们修改的是datafile.redundancy,而312号文件是临时文件。

SQL> select file_number,bytes,space,type,redundancy,redundancy_lowered,striped,remirror  2  from v$asm_file where filegroup_number = 6;FILE_NUMBER      BYTES      SPACE TYPE                 REDUND R STRIPE R----------- ---------- ---------- -------------------- ------ - ------ -        309  104865792  339738624 DATAFILE             MIRROR U COARSE Y        310  262152192  805306368 DATAFILE             MIRROR U COARSE Y        311  419438592 1283457024 DATAFILE             MIRROR U COARSE Y        312   67117056  142606336 TEMPFILE             MIRROR U COARSE NSQL> select file_number,bytes,space,type,redundancy,redundancy_lowered,striped,remirror  2  from v$asm_file where filegroup_number = 6;FILE_NUMBER      BYTES      SPACE TYPE                 REDUND R STRIPE R----------- ---------- ---------- -------------------- ------ - ------ -        309  104865792  339738624 DATAFILE             HIGH   U COARSE N        310  262152192  805306368 DATAFILE             HIGH   U COARSE N        311  419438592 1283457024 DATAFILE             HIGH   U COARSE N        312   67117056  142606336 TEMPFILE             MIRROR U COARSE N

为了让实验结果更详细,我下面还列了ASM实例警告日志中的相关信息,我发现观察ASM做了啥操作非常有意思。

SQL> alter diskgroup flex modify filegroup PDB1_0001 set 'datafile.redundancy'='high'NOTE: updated format of group 5 file 311 for 3-way mirroringNOTE: updated redundancy of group 5 file 311 to 3-way mirrored (remirror 0x4)NOTE: updated format of group 5 file 310 for 3-way mirroringNOTE: updated redundancy of group 5 file 310 to 3-way mirrored (remirror 0x4)NOTE: updated format of group 5 file 309 for 3-way mirroringNOTE: updated redundancy of group 5 file 309 to 3-way mirrored (remirror 0x4)NOTE: GroupBlock outside rolling migration privileged regionNOTE: client +ASM1:+ASM:rac122pri no longer has group 5 (FLEX) mountedNOTE: client +ASM1:+ASM:rac122pri no longer has group 3 (DATA) mountedNOTE: client +ASM1:+ASM:rac122pri no longer has group 2 (MGMT) mountedNOTE: requesting all-instance membership refresh for group=5NOTE: membership refresh pending for group 5/0x4718f00c (FLEX)GMON querying group 5 at 835 for pid 25, osid 11576SUCCESS: refreshed membership for 5/0x4718f00c (FLEX)SUCCESS: alter diskgroup flex modify filegroup PDB1_0001 set 'datafile.redundancy'='high'2017-07-06 13:17:47.169000 +01:00NOTE: Attempting voting file refresh on diskgroup FLEXNOTE: Refresh completed on diskgroup FLEX. No voting file found.NOTE: starting rebalance of group 5/0x4718f00c (FLEX) at power 1NOTE: starting process ARBAStarting background process ARBAARBA started with pid=33, OS id=9904NOTE: starting process ARB0Starting background process ARB0ARB0 started with pid=48, OS id=9906NOTE: assigning ARBA to group 5/0x4718f00c (FLEX) to compute estimatesNOTE: assigning ARB0 to group 5/0x4718f00c (FLEX) with 1 parallel I/O2017-07-06 13:18:29.554000 +01:00NOTE: Starting expel slave for group 5/0x4718f00c (FLEX)NOTE: stopping process ARB0NOTE: stopping process ARBANOTE: GroupBlock outside rolling migration privileged regionNOTE: requesting all-instance membership refresh for group=5SUCCESS: rebalance completed for group 5/0x4718f00c (FLEX)NOTE: membership refresh pending for group 5/0x4718f00c (FLEX)GMON querying group 5 at 836 for pid 25, osid 11576SUCCESS: refreshed membership for 5/0x4718f00c (FLEX)2017-07-06 13:18:32.568000 +01:00NOTE: Attempting voting file refresh on diskgroup FLEXNOTE: Refresh completed on diskgroup FLEX. No voting file found.

re-mirror操作在警告日志中被列为(mini) rebalance操作。

新加的数据文件会怎样?

元数据的改变在v$asm_filegroup_properties视图中也可以看到。该PDB创建的每个新数据文件都是HIGH冗余度。

SQL> select file_type, name, value from v$asm_filegroup_property  2  where filegroup_number = 6 and file_type = 'DATAFILE';FILE_TYPE       NAME                 VALUE--------------- -------------------- --------------------DATAFILE        REDUNDANCY           HIGHDATAFILE        STRIPING             COARSE

加了个表空间,新的数据文件也依然是HIGH冗余度。

SQL> select file_number,bytes,space,type,redundancy,redundancy_lowered,striped,remirror  2  from v$asm_file where filegroup_number = 6  3  order by file_number;FILE_NUMBER      BYTES      SPACE TYPE            REDUND R STRIPE R----------- ---------- ---------- --------------- ------ - ------ -        309  167780352  528482304 DATAFILE        HIGH   U COARSE N        310  272637952  843055104 DATAFILE        HIGH   U COARSE N        311  471867392 1434451968 DATAFILE        HIGH   U COARSE N        312   67117056  142606336 TEMPFILE        MIRROR U COARSE N        313 2147491840 6467616768 DATAFILE        HIGH   U COARSE N

总结

Flex ASM磁盘组继续让我惊叹。使用文件组,我可以单独为任意实体(non-CDB, CDB, PDB)定义属性,而且可以在磁盘组内部进行更细粒度的数据保护模式设置。在12c之前的版本,虽然我也可以完成同样的任务,但是操作要复杂很多很多。不得不承认,Flex磁盘组确实相当flexible。

原创粉丝点击