您的位置:首页 > 数据库 > Oracle

【Oracle 12c ASM专题】——我的第一个Flex Diskgroup

2017-08-16 16:15 886 查看
原文链接 https://martincarstenbach.wordpress.com/2017/07/06/12-2-new-feature-the-flex-asm-disk-group-part-1/
译者  周天鹏 

之前笔者都是从其他分享者那里了解了12.2的flex diskgroup,但直到现在都没能亲自探索下它有多cool。笔者相信它真的非常cool而且很值得拿出来分享下。关于这个特性和下面这些测试,有非常多的东西值得一提,所以笔者选择把它分解成了多个部分,将每周定期与大家进行分享。

背  景

在GI/ASM之前的版本中,尤其是两者都是用的环境,有一些我想做的操作几乎是不可能轻易完成的。许多磁盘组的属性(例如冗余度等)是对这个磁盘组里所有文件都生效的。例如,你想创建一个normal冗余度的磁盘组给某个数据库,high冗余度的磁盘组给其他库,这时你就必须创建两个用于存放数据的磁盘组。ASM 12.2中,Oracle减少了ASM的限制来提供更好的定制化服务,这一点在12.1中可见一斑。可以看下63
ASM disk groups in 11.2(https://docs.oracle.com/cd/E11882_01/server.112/e18951/asmdiskgrps.htm#OSTMG94134)和511
in 12.1(https://docs.oracle.com/database/121/OSTMG/GUID-BC6544D7-6D59-42B3-AE1F-4201D3459ADD.htm#OSTMG94136),虽然这也允许一些定制化,但还是增加了维护的开销。

12.1中人们可以更细粒度的管理存储而且引入了CDB的概念。在创建PDB时,管理员可以指定pdbstorageclause子句来对PDB做一些限制,例如:

SQL> create pluggable database pdb1 

2 admin user someone identified by somepassword

3 ... 

4 storage (maxsize 200G);

Pluggable database created. 

但是,如果数据库建在了一个high冗余度的磁盘组上,该磁盘组上所有文件都继承这个属性。我无法将一个存放在high冗余度磁盘组上的PDB定义为normal冗余度,至少我在12.1中没意识到如何达到这个效果。

Flex Disk Group

Flex Diak Group允许磁盘组内的更细粒度的管理。你可以强化磁盘组内的配额限制(以数据库为粒度比较靠谱),而且你可以给不同的文件组定义不同的冗余度(即不同的数据库、PDB可以有不同的冗余度)。换句话说就是,你可以在同一个磁盘组里建两个库,数据库1是normal冗余度,数据库2是high冗余度。如果数据库2是一个CDB,你甚至可以以PDB为粒度再去管理一些设置(例如冗余度)。

在我的实验环境中,我创建了一个Flex冗余度的磁盘组。该环境为两节点RAC,Oracle版本为12.2.0.1.170620,操作系统版本为Oracle Linux 7.3 with UEK4。我把这个磁盘组取名为FLEX,下面是它的创建命令:

CREATE DISKGROUP FLEX FLEX REDUNDANCY  

 DISK 'AFD:FLEX1' 

 DISK 'AFD:FLEX2'   

 DISK 'AFD:FLEX3' 

 DISK 'AFD:FLEX4'  

 DISK 'AFD:FLEX5'  

ATTRIBUTE 

 'compatible.asm'='12.2.0.1',

 'compatible.rdbms'='12.2.0.1',

 'compatible.advm'='12.2.0.1',

 'au_size'='4M’;

注意这里用了AFD(ASM Filter Driver),为了笔者的实验配置的。在安装ASM 12.2时这个特性是默认启用的。看看样例代码,自己确实也意识到了磁盘组名字取得不是很理想……例子中的重点是使用了“FLEX REDUNDANCY”,5个隐式创建的故障组和兼容性设置为了12.2。

[这篇文章](https://docs.oracle.com/database/122/OSTMG/asm-filegroups.htm)提到了,Flex Disk Group一般可以容忍两个故障组丢失。但是,容忍两个故障组丢失的前提是该磁盘组至少有5个故障组,如果故障组少于5个,则只允许一个故障组丢失。Flex
Disk Group最少需要3个故障组。

如果你现在觉得这个新特性很牛逼,这里有个大大的警告:你必须使用12.2的数据库实例才能使用这个特性。

你可以捕获日志输出(从命令开始到结束),因为在12.2 ASM中当你创建新的磁盘组时,观察下磁盘组创建期间到底发生了啥真的很有意思。如果你对详细的信息并不是很感兴趣,可以直接跳过下面这部分。

SQL> CREATE DISKGROUP FLEX FLEX REDUNDANCY  DISK 'AFD:FLEX1' SIZE 10239M

 DISK 'AFD:FLEX2' SIZE 10239M

 DISK 'AFD:FLEX3' SIZE 10239M

 DISK 'AFD:FLEX4' SIZE 10239M

 DISK 'AFD:FLEX5' SIZE 10239M

 ATTRIBUTE 'compatible.asm'='12.2.0.1','compatible.rdbms'='12.2.0.1','compatible.advm'='12.2.0.1','au_size'='4M'

NOTE: Assigning number (5,0) to disk (AFD:FLEX1)

NOTE: Assigning number (5,1) to disk (AFD:FLEX2)

NOTE: Assigning number (5,2) to disk (AFD:FLEX3)

NOTE: Assigning number (5,3) to disk (AFD:FLEX4)

NOTE: Assigning number (5,4) to disk (AFD:FLEX5)

2017-07-03 10:38:53.811000 +01:00

NOTE: initializing header (replicated) on grp 5 disk FLEX1

NOTE: initializing header (replicated) on grp 5 disk FLEX2

NOTE: initializing header (replicated) on grp 5 disk FLEX3

NOTE: initializing header (replicated) on grp 5 disk FLEX4

NOTE: initializing header (replicated) on grp 5 disk FLEX5

NOTE: initializing header on grp 5 disk FLEX1

NOTE: initializing header on grp 5 disk FLEX2

NOTE: initializing header on grp 5 disk FLEX3

NOTE: initializing header on grp 5 disk FLEX4

NOTE: initializing header on grp 5 disk FLEX5

NOTE: Disk 0 in group 5 is assigned fgnum=1

NOTE: Disk 1 in group 5 is assigned fgnum=2

NOTE: Disk 2 in group 5 is assigned fgnum=3

NOTE: Disk 3 in group 5 is assigned fgnum=4

NOTE: Disk 4 in group 5 is assigned fgnum=5

GMON updating for reconfiguration, group 5 at 657 for pid 45, osid 25857

NOTE: group 5 PST updated.

NOTE: initiating PST update: grp = 5

GMON updating group 5 at 658 for pid 45, osid 25857

NOTE: set version 0 for asmCompat 12.2.0.1.0 for group 5

NOTE: group FLEX: initial PST location: disks 0000 0001 0002 0003 0004

NOTE: PST update grp = 5 completed successfully

NOTE: cache registered group FLEX 5/0x0A58F009

NOTE: cache began mount (first) of group FLEX 5/0x0A58F009

NOTE: cache is mounting group FLEX created on 2017/07/03 10:38:52

NOTE: cache opening disk 0 of grp 5: FLEX1 label:FLEX1

NOTE: cache opening disk 1 of grp 5: FLEX2 label:FLEX2

NOTE: cache opening disk 2 of grp 5: FLEX3 label:FLEX3

NOTE: cache opening disk 3 of grp 5: FLEX4 label:FLEX4

NOTE: cache opening disk 4 of grp 5: FLEX5 label:FLEX5

* allocate domain 5, valid ? 0

kjbdomatt send to inst 2

NOTE: attached to recovery domain 5

NOTE: cache creating group 5/0x0A58F009 (FLEX)

NOTE: cache mounting group 5/0x0A58F009 (FLEX) succeeded

NOTE: allocating F1X0 (replicated) on grp 5 disk FLEX1

NOTE: allocating F1X0 (replicated) on grp 5 disk FLEX2

NOTE: allocating F1X0 (replicated) on grp 5 disk FLEX3

NOTE: allocating F1X0 on grp 5 disk FLEX1

NOTE: allocating F1X0 on grp 5 disk FLEX2

NOTE: allocating F1X0 on grp 5 disk FLEX3

2017-07-03 10:38:56.621000 +01:00

NOTE: Created Used Space Directory for 1 threads

NOTE: Created Virtual Allocation Locator (1 extents) and Table (5 extents) directories for group 5/0x0A58F009 (FLEX)

2017-07-03 10:39:00.153000 +01:00

NOTE: VAM migration has completed for group 5/0x0A58F009 (FLEX)

NOTE: diskgroup must now be re-mounted prior to first use

NOTE: cache dismounting (clean) group 5/0x0A58F009 (FLEX)

NOTE: messaging CKPT to quiesce pins Unix process pid: 25857, image: oracle@rac122pri1 (TNS V1-V3)

2017-07-03 10:39:01.805000 +01:00

NOTE: LGWR not being messaged to dismount

kjbdomdet send to inst 2

detach from dom 5, sending detach message to inst 2

freeing rdom 5

NOTE: detached from domain 5

NOTE: cache dismounted group 5/0x0A58F009 (FLEX)

GMON dismounting group 5 at 659 for pid 45, osid 25857

GMON dismounting group 5 at 660 for pid 45, osid 25857

NOTE: Disk FLEX1 in mode 0x7f marked for de-assignment

NOTE: Disk FLEX2 in mode 0x7f marked for de-assignment

NOTE: Disk FLEX3 in mode 0x7f marked for de-assignment

NOTE: Disk FLEX4 in mode 0x7f marked for de-assignment

NOTE: Disk FLEX5 in mode 0x7f marked for de-assignment

SUCCESS: diskgroup FLEX was created

NOTE: cache deleting context for group FLEX 5/0x0a58f009

NOTE: cache registered group FLEX 5/0x4718F00C

NOTE: cache began mount (first) of group FLEX 5/0x4718F00C

NOTE: Assigning number (5,0) to disk (AFD:FLEX1)

NOTE: Assigning number (5,1) to disk (AFD:FLEX2)

NOTE: Assigning number (5,2) to disk (AFD:FLEX3)

NOTE: Assigning number (5,3) to disk (AFD:FLEX4)

NOTE: Assigning number (5,4) to disk (AFD:FLEX5)

2017-07-03 10:39:08.161000 +01:00

NOTE: GMON heartbeating for grp 5 (FLEX)

GMON querying group 5 at 663 for pid 45, osid 25857

NOTE: cache is mounting group FLEX created on 2017/07/03 10:38:52

NOTE: cache opening disk 0 of grp 5: FLEX1 label:FLEX1

NOTE: 07/03/17 10:39:07 FLEX.F1X0 found on disk 0 au 10 fcn 0.0 datfmt 1

NOTE: cache opening disk 1 of grp 5: FLEX2 label:FLEX2

NOTE: 07/03/17 10:39:07 FLEX.F1X0 found on disk 1 au 10 fcn 0.0 datfmt 1

NOTE: cache opening disk 2 of grp 5: FLEX3 label:FLEX3

NOTE: 07/03/17 10:39:07 FLEX.F1X0 found on disk 2 au 10 fcn 0.0 datfmt 1

NOTE: cache opening disk 3 of grp 5: FLEX4 label:FLEX4

NOTE: cache opening disk 4 of grp 5: FLEX5 label:FLEX5

NOTE: cache mounting (first) flex redundancy group 5/0x4718F00C (FLEX)

* allocate domain 5, valid ? 0

kjbdomatt send to inst 2

NOTE: attached to recovery domain 5

start recovery: pdb 5, passed in flags x4 (domain enable 0)

validate pdb 5, flags x4, valid 0, pdb flags x204

* validated domain 5, flags = 0x200

NOTE: cache recovered group 5 to fcn 0.0

NOTE: redo buffer size is 512 blocks (2105344 bytes)

NOTE: LGWR attempting to mount thread 1 for diskgroup 5 (FLEX)

NOTE: LGWR found thread 1 closed at ABA 0.11262 lock domain=0 inc#=0 instnum=0

NOTE: LGWR mounted thread 1 for diskgroup 5 (FLEX)

NOTE: setting 11.2 start ABA for group FLEX thread 1 to 2.0

NOTE: LGWR opened thread 1 (FLEX) at fcn 0.0 ABA 2.0 lock domain=5 inc#=12 instnum=1 gx.incarn=1192816652 mntstmp=2017/07/03 10:39:08.437000

NOTE: cache mounting group 5/0x4718F00C (FLEX) succeeded

NOTE: cache ending mount (success) of group FLEX number=5 incarn=0x4718f00c

NOTE: Instance updated compatible.asm to 12.2.0.1.0 for grp 5 (FLEX).

NOTE: Instance updated compatible.asm to 12.2.0.1.0 for grp 5 (FLEX).

NOTE: Instance updated compatible.rdbms to 12.2.0.1.0 for grp 5 (FLEX).

NOTE: Instance updated compatible.rdbms to 12.2.0.1.0 for grp 5 (FLEX).

SUCCESS: diskgroup FLEX was mounted

NOTE: diskgroup resource ora.FLEX.dg is online

SUCCESS: CREATE DISKGROUP FLEX FLEX REDUNDANCY  DISK 'AFD:FLEX1' SIZE 10239M

 DISK 'AFD:FLEX2' SIZE 10239M

 DISK 'AFD:FLEX3' SIZE 10239M

 DISK 'AFD:FLEX4' SIZE 10239M

 DISK 'AFD:FLEX5' SIZE 10239M

 ATTRIBUTE 'compatible.asm'='12.2.0.1','compatible.rdbms'='12.2.0.1','compatible.advm'='12.2.0.1','au_size'='4M'

2017-07-03 10:39:09.429000 +01:00

NOTE: enlarging ACD to 2 threads for group 5/0x4718f00c (FLEX)

2017-07-03 10:39:11.438000 +01:00

SUCCESS: ACD enlarged for group 5/0x4718f00c (FLEX)

NOTE: Physical metadata for diskgroup 5 (FLEX) was replicated.

adrci> 

一条命令引发了如此多的活动……笔者检查了磁盘组的属性,它看起来并没有很让我费解的地方。

SQL> select name, value from v$asm_attribute 

  2   where group_number = 5 

  3   and name not like 'template%';

NAME                           VALUE

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

idp.type                       dynamic

idp.boundary                   auto

disk_repair_time               3.6h

phys_meta_replicated           true

failgroup_repair_time          24.0h

thin_provisioned               FALSE

preferred_read.enabled         FALSE

sector_size                    512

logical_sector_size            512

content.type                   data

content.check                  FALSE

au_size                        4194304

appliance._partnering_type     GENERIC

compatible.asm                 12.2.0.1.0

compatible.rdbms               12.2.0.1.0

compatible.advm                12.2.0.1.0

cell.smart_scan_capable        FALSE

cell.sparse_dg                 allnonsparse

access_control.enabled         FALSE

access_control.umask           066

scrub_async_limit              1

scrub_metadata.enabled         FALSE

22 rows selected.

我没制定任何故障组,所以隐式的将每块盘做成了一个故障组。

SQL> select name, os_mb, failgroup, path from v$asm_disk where group_number = 5;

NAME            OS_MB FAILGROUP                      PATH

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

FLEX1           10239 FLEX1                          AFD:FLEX1

FLEX2           10239 FLEX2                          AFD:FLEX2

FLEX3           10239 FLEX3                          AFD:FLEX3

FLEX4           10239 FLEX4                          AFD:FLEX4

FLEX5           10239 FLEX5                          AFD:FLEX5

下面的是笔者的新磁盘组。你可以看到其中把Grid Infrastructure Management Repository (GIMR)单独分了个磁盘组叫+MGMT。此外笔者有一个磁盘组叫+OCR,笔者用它存放OCR和voting files。除了两个大家看名字就能猜出来干什么用的磁盘组+DATA和+RECO,还有刚刚新建的+FLEX磁盘组。

[oracle@rac122pri1 ~]$ asmcmd lsdg

State    Type    Rebal  Sector  Logical_Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name

MOUNTED  EXTERN  N         512             512   4096  4194304     20476    17068                0           17068              0             N  DATA/

MOUNTED  FLEX    N         512             512   4096  4194304     51180    50676                0               0              0             N  FLEX/

MOUNTED  EXTERN  N         512             512   4096  4194304     40956     6560                0            6560              0             N  MGMT/

MOUNTED  NORMAL  N         512             512   4096  4194304     15348    14480             5116            4682              0             Y  OCR/

MOUNTED  EXTERN  N         512             512   4096  4194304     15356    15224                0           15224              0             N  RECO/

[oracle@rac122pri1 ~]$ 

+FLEX的required_mirror_free_mb和 useable_file_mb值为0并不是bug,因为Flex冗余度的磁盘组就应该是这样。后面我们会使用其他查询方法来确定你的数据库的空间使用情况(下次更新会介绍)。

小  结

Flex ASM Disk Group非常的有趣,而且在读者测试Oracle 12.2时这个特性绝对值得关注。笔者承认12.2依然非常的新,而且笔者相信在第一个大补丁发布前,谨慎的人不会用它做生产使用。笔者依然非常好奇如何使用ADF才能改变自己与ASM相关的工作方式。它或许和ASMLib有点像,但目前还没搞清这个问题。

下一章将会讲一些理解Flex ASM disk group所需要的一些额外的概念。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: