Oracle ASM 翻译系列第二十一弹:ASM Attributes Directory

简介:

ASM Attributes Directory

ASM的元数据9号文件,是ASM属性目录,包含了磁盘组的属性信息。属性目录只有在磁盘组的compatible.asm属性设置为11.1或以上时才会存在。

直到ASM 11.1版本开始,才引入了磁盘组属性的概念,它被用来细粒度的调整磁盘组的属性。有些属性只能在磁盘组创建时指定(如au_size),有些属性可以在任何时候指定(如disk_repair_time)。有些属性保存在磁盘头中(如au_size),有些属性被存储在【成员关系和状态表】中或磁盘头中,这取决于ASM的版本。

译者注:成员关系和状态表即partnership and status table的信息请参考本系列的【partnership and status table】篇的详细介绍

Public attributes

大多数属性存放在属性目录并且可以通过查询v$asm_attribute视图获得。我们通过查询这个视图来看下我的所有磁盘组的属性信息:

SQL> SELECT g.name "Group", a.name "Attribute", a.value "Value"

FROM v$asm_diskgroup g, v$asm_attribute a

WHERE g.group_number=a.group_number and a.name not like 'template%';


Group Attribute               Value

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

ACFS  disk_repair_time        3.6h

     au_size                 1048576

     access_control.umask    026

     access_control.enabled  TRUE

     cell.smart_scan_capable FALSE

     compatible.advm         11.2.0.0.0

     compatible.rdbms        11.2

     compatible.asm          11.2.0.0.0

     sector_size             512

DATA  access_control.enabled  TRUE

     cell.smart_scan_capable FALSE

     compatible.rdbms        11.2

     compatible.asm          11.2.0.0.0

     sector_size             512

     au_size                 1048576

     disk_repair_time        3.6h

     access_control.umask    026

SQL>

一个我们可以在任何时候修改的属性是disk repair time。以下是通过asmcmd修改DATA磁盘组的命令:

$ asmcmd setattr -G DATA disk_repair_time '8.0h'


$ asmcmd lsattr -lm disk_repair_time

Group_Name  Name              Value  RO  Sys

ACFS        disk_repair_time  3.6h   N   Y

DATA        disk_repair_time  8.0h   N   Y

$

Hidden attributes

前文提到,属性目录位于ASM元数据9号文件。现在我们定位到2号磁盘组的属性目录。

SQL> SELECT x.disk_kffxp "Disk#",

x.xnum_kffxp "Extent",

x.au_kffxp "AU",

d.name "Disk name"

FROM x$kffxp x, v$asm_disk_stat d

WHERE x.group_kffxp=d.group_number

and x.disk_kffxp=d.disk_number

and d.group_number=2

and x.number_kffxp=9

ORDER BY 1, 2;


Disk# Extent   AU Disk name

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

   0      0 1146 ASMDISK1

   1      0 1143 ASMDISK2

   2      0 1150 ASMDISK3

SQL>

现在用kfed工具进行查看。

$ kfed read /dev/oracleasm/disks/ASMDISK3 aun=1150 | more

kfbh.endian:                          1 ; 0x000: 0x01

kfbh.hard:                          130 ; 0x001: 0x82

kfbh.type:                           23 ; 0x002: KFBTYP_ATTRDIR

...

kfede[0].entry.incarn:                1 ; 0x024: A=1 NUMM=0x0

kfede[0].entry.hash:                  0 ; 0x028: 0x00000000

kfede[0].entry.refer.number: 4294967295 ; 0x02c: 0xffffffff

kfede[0].entry.refer.incarn:          0 ; 0x030: A=0 NUMM=0x0

kfede[0].name:         disk_repair_time ; 0x034: length=16

kfede[0].value:                    8.0h ; 0x074: length=4

...

kfede[i]字段包含了磁盘组属性的名称和值。我们结合egrep命令查看所有的ASM磁盘组的属性值:

$ kfed read /dev/oracleasm/disks/ASMDISK3 aun=1150 | egrep "name|value"

kfede[0].name:         disk_repair_time ; 0x034: length=16

kfede[0].value:                    8.0h ; 0x074: length=4

kfede[1].name:       _rebalance_compact ; 0x1a8: length=18

kfede[1].value:                    TRUE ; 0x1e8: length=4

kfede[2].name:            _extent_sizes ; 0x31c: length=13

kfede[2].value:                  1 4 16 ; 0x35c: length=6

kfede[3].name:           _extent_counts ; 0x490: length=14

kfede[3].value:   20000 20000 214748367 ; 0x4d0: length=21

kfede[4].name:                        _ ; 0x604: length=1

kfede[4].value:                       0 ; 0x644: length=1

kfede[5].name:                  au_size ; 0x778: length=7

kfede[5].value:               ; 0x7b8: length=9

kfede[6].name:              sector_size ; 0x8ec: length=11

kfede[6].value:               ; 0x92c: length=9

kfede[7].name:               compatible ; 0xa60: length=10

kfede[7].value:               ; 0xaa0: length=9

kfede[8].name:                     cell ; 0xbd4: length=4

kfede[8].value:                   FALSE ; 0xc14: length=5

kfede[9].name:           access_control ; 0xd48: length=14

kfede[9].value:                   FALSE ; 0xd88: length=5

以上,我们还窥探到了许多隐藏的磁盘组属性。我们看到_REBALANCE_COMPACT属性是TRUE。这个属性关系到磁盘组rebalance中的compact环节。我们还可以看到extent的增长方式(_EXTENT_SIZES),初始化大小会从1个AU到4个AU再到16AU。_EXTENT_COUNTS表示extent增长的断点,前20000个extent只包含1个AU,接下来20000个extent包含4个AU,再往后的extent都会包含16个AU。

Conclusion

每个磁盘组都具有一些磁盘组的属性,磁盘组属性用来细粒度的控制磁盘组的特性。大多数属性存放在属性目录并且可以通过查询v$asm_attribute视图获得。

[1] 在ASM 11.1之前的版本,我们也可以在创建磁盘组时指定AU的大小,这是通过ASM隐含参数_ASM_AUSIZE来实现的,在ASM 11.1及之后的版本,由于ASM磁盘组属性的出现,就可以通过设置ASM磁盘组的AU_SIZE属性值来达到同样的目的。


本文来自云栖社区合作伙伴“DBGEEK”

目录
相关文章
|
6月前
|
Oracle 关系型数据库
oracle asm 磁盘显示offline
oracle asm 磁盘显示offline
316 2
|
18天前
|
存储 Oracle 关系型数据库
数据库数据恢复—Oracle ASM磁盘组故障数据恢复案例
Oracle数据库数据恢复环境&故障: Oracle ASM磁盘组由4块磁盘组成。Oracle ASM磁盘组掉线 ,ASM实例不能mount。 Oracle数据库故障分析&恢复方案: 数据库数据恢复工程师对组成ASM磁盘组的磁盘进行分析。对ASM元数据进行分析发现ASM存储元数据损坏,导致磁盘组无法挂载。
|
6月前
|
存储 Oracle 关系型数据库
【数据库数据恢复】Oracle数据库ASM磁盘组掉线的数据恢复案例
oracle数据库ASM磁盘组掉线,ASM实例不能挂载。数据库管理员尝试修复数据库,但是没有成功。
【数据库数据恢复】Oracle数据库ASM磁盘组掉线的数据恢复案例
|
SQL Oracle 关系型数据库
什么是Oracle的目录( Directory)
什么是Oracle的目录( Directory)
569 0
|
SQL Oracle 关系型数据库
Oracle ASM磁盘和磁盘组的常用SQL语句
Oracle ASM磁盘和磁盘组的常用SQL语句
281 0
|
Oracle 关系型数据库 数据库管理
|
SQL Oracle 关系型数据库
Oracle ASM+11gR2安装
【ASM】Oracle ASM + 11gR2 + RHEL6.5 安装 1.1    简介     1.1.1    ASMLib     1.
1929 0
|
SQL Oracle 关系型数据库
【ASM】Oracle ASM + 11gR2 + RHEL6.5 安装
【ASM】Oracle ASM + 11gR2 + RHEL6.5 安装 1.1    简介     1.
2075 0
|
21天前
|
存储 Oracle 关系型数据库
Oracle数据库的应用场景有哪些?
【10月更文挑战第15天】Oracle数据库的应用场景有哪些?
139 64
|
11天前
|
SQL Oracle 关系型数据库
Oracle数据库优化方法
【10月更文挑战第25天】Oracle数据库优化方法
23 7