Oracle ASM 翻译系列第二十四弹:ASM Internal ASM files number 10 and 11

本文涉及的产品
访问控制,不限时长
简介:

ASM files number 10 and 11

本篇介绍ASM元信息的十号文件和十一号文件,ASM元信息10号文件是ASM用户目录,11号文件是组目录。它们是用来为ASM文件访问控制特性提供支持的元信息结构。

ASM文件访问控制机制用来限制特定的ASM客户端(通常就是数据库实例)对文件的访问,它是基于操作系统层database home的effective user标识号实现的。

这些信息可以通过V$ASM_USER、V$ASM_USERGROUP、$ASM_USERGROUP_MEMBER视图查询到。

ASM users and groups

如果要使用ASM文件访问控制特性,我们需要适当的设置操作系统用户和组。通过ALTER DISKGROUP ADD USERGROUP命令将用户和组添加至ASM磁盘组中。这一步就略过了,我们把关注点集中在ASM 用户和组目录上。

下面是操作系统中我们创建的用户。

$ id grid

uid=1100(grid) gid=1000(oinstall) groups=1000(oinstall),1020(asmadmin),1021(asmdba),1031(dba)

$ id oracle

uid=1101(oracle) gid=1000(oinstall) groups=1000(oinstall),1021(asmdba),1031(dba)

$ id oracle1

uid=1102(oracle1) gid=1033(dba1) groups=1033(dba1)

$ id oracle2

uid=1103(oracle2) gid=1034(dba2) groups=1034(dba2)

接下来就是我在磁盘组中设置的用户和组。

SQL> SELECT u.group_number "Disk group#",

 u.os_id "OS ID",

 u.os_name "OS user",

 u.user_number "ASM user#",

 g.usergroup_number "ASM group#",

 g.name "ASM user group"

FROM v$asm_user u, v$asm_usergroup g, v$asm_usergroup_member m

WHERE u.group_number=g.group_number and u.group_number=m.group_number

 and u.user_number=m.member_number

 and g.usergroup_number=m.usergroup_number

ORDER BY 1, 2;


Disk group# OS ID OS user ASM user# ASM group# ASM user group

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

          1 1100  grid            1          3 GRIDTEAM

            1101  oracle          2          1 DBATEAM1

            1102  oracle1         3          2 DBATEAM2

            1103  oracle2         4          2 DBATEAM2

          2 1101  oracle          2          1 DBATEAM1

Look inside

在1号磁盘组中获取ASM 用户和组目录所在的AU。

SQL> SELECT x.number_kffxp "File#",

 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=1

 and x.number_kffxp in (10, 11)

ORDER BY 1, 2;


     File#      Disk#     Extent         AU Disk name

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

        10          0          0       2139 ASMDISK5

                    1          0       2139 ASMDISK6

        11          0          0       2140 ASMDISK5

                    1          0       2140 ASMDISK6

对于每个用户,用户目录元信息中都有一个block相对应,而block号是跟用户号(对应v$asm_user的user_number列)相对应的。如果我们有四个用户,用户号码分别对应1-4,那么他们也分别位于1-4号block中。接下来加以验证。

$ kfed read /dev/oracleasm/disks/ASMDISK5 aun=2139 blkn=1 | more

kfbh.endian:                          1 ; 0x000: 0x01

kfbh.hard:                          130 ; 0x001: 0x82

kfbh.type:                           24 ; 0x002: KFBTYP_USERDIR

...

kfzude.user:                       1100 ; 0x038: length=4

...

所以,1号block对应1100号操作系统用户。这与上文v$asm_user查询结果是匹配的。接下来看其他block。

$ let b=1

$ while (( $b <= 4 ))

 do

 kfed read /dev/oracleasm/disks/ASMDISK5 aun=2139 blkn=$b | grep kfzude.user

 let b=b+1

 done


kfzude.user:                       1100 ; 0x038: length=4

kfzude.user:                       1101 ; 0x038: length=4

kfzude.user:                       1102 ; 0x038: length=4

kfzude.user:                       1103 ; 0x038: length=4

正如所想的,以上显示了ASM用户目录中的四个操作系统用户对应的ID。

组目录也是一个条目对应一个block,block号也是跟ASM组号码匹配的。继续验证。

$ let b=1

$ while (( $b <= 3 ))

 do

 kfed read /dev/oracleasm/disks/ASMDISK5 aun=2140 blkn=$b | grep kfzgde.name

 let b=b+1

done


kfzgde.name:                   DBATEAM1 ; 0x03c: length=8

kfzgde.name:                   DBATEAM2 ; 0x03c: length=8

kfzgde.name:                   GRIDTEAM ; 0x03c: length=8

以上显示了该磁盘组中对应的组名称。

Conclusion

ASM用户目录和组目录是用来为ASM文件访问控制特性提供支持的元信息结构,该特性在11.2版本中引入。这些信息可以通过V$ASM_USER、V$ASM_USERGROUP、$ASM_USERGROUP_MEMBER视图查询到。


本文来自云栖社区合作伙伴“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月前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用合集之使用JDBC方式读取Oracle的number类型时,通过什么方式进行映射
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
153 0
实时计算 Flink版产品使用合集之使用JDBC方式读取Oracle的number类型时,通过什么方式进行映射
|
6月前
|
存储 Oracle 关系型数据库
【数据库数据恢复】Oracle数据库ASM磁盘组掉线的数据恢复案例
oracle数据库ASM磁盘组掉线,ASM实例不能挂载。数据库管理员尝试修复数据库,但是没有成功。
【数据库数据恢复】Oracle数据库ASM磁盘组掉线的数据恢复案例
|
Oracle 关系型数据库
Oracle中decode 以及ROW_NUMBER() OVER() 函数等其它相关函数用法
Oracle中decode 以及ROW_NUMBER() OVER() 函数等其它相关函数用法
126 0
|
Oracle 关系型数据库 数据库
在Flink CDC中,使用Oracle 11g数据库的NUMBER类型作为主键
在Flink CDC中,使用Oracle 11g数据库的NUMBER类型作为主键
119 1
|
机器学习/深度学习 人工智能 Oracle
在Oracle中,TO_CHAR()、TO_NUMBER()和TO_DATE()函数的使用方法以及作用
在Oracle中,TO_CHAR()、TO_NUMBER()和TO_DATE()函数的使用方法以及作用
403 0
|
SQL Oracle 关系型数据库
Oracle-分析函数之排序后顺序号row_number()
Oracle-分析函数之排序后顺序号row_number()
98 0
|
SQL 移动开发 Oracle
Oracle中rownum和row_number()
Oracle中rownum和row_number()
723 0
|
SQL Oracle 关系型数据库
Oracle ASM磁盘和磁盘组的常用SQL语句
Oracle ASM磁盘和磁盘组的常用SQL语句
281 0