ASM 翻译系列第三十七弹:ASM密码文件目录

时间:2022-05-05
本文章向大家介绍ASM 翻译系列第三十七弹:ASM密码文件目录,主要内容包括The password file、The ASM password directory、Conclusion、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

原作者:Bane Radulovic

译者: 魏兴华

审核: 魏兴华

DBGeeK社区联合出品

原文链接:http://asmsupportguy.blogspot.sg/2014/01/the-asm-password-directory.html

本篇介绍ASM的13号文件-密码文件目录,密码文件给Oralce或ASM的本地或远程连接提供访问授权,在Oracle的12C版本,密码文件可以存放在ASM磁盘组中了,ASM的也专门为密码文件的管理设计了元数据结构-ASM Password Directory-ASM密码文件目录 ,元数据文件号为13。

注意,密码文件只有在磁盘组mount以后才能被访问,这意味着如果磁盘组没有被mount,那么远端的客户端将不能连接ASM或DB实例。

The password file

对于密码文件的管理涉及到ASMCMD、ORAPWD、SRVCTL命令,密码文件可以使用ORAPWD和ASMCA(在ASM被配置的时候)进行创建。密码文件的其他相关操作是通过ASMCMD和SRVCTL命令来进行的。

如果要使用到上面提到的这一特性,密码文件所在的磁盘组的COMPATIBLE.ASM 属性必须至少设置为12.1,管理ASM密码文件的用户需要具有SYSASM的权限,管理DB的密码文件需要具有SYSDBA权限。

我们在ASM磁盘组DATA中创建一个ASM密码文件:

首先确认磁盘组的COMPATIBLE.ASM属性值是否满足要求:

 $ asmcmd lsattr -G DATA -l compatible.asm
Name            Value
compatible.asm  12.1.0.0.0

创建ASM的密码文件:

 $ orapwd file='+DATA/orapwasm' asm=y
 Enter password for SYS: *******
 $

通过asmcmd的pwget命令来获取ASM密码文件的名称:

 $ asmcmd pwget --asm
+DATA/orapwasm

还可以通过asmcmd的find命令来找到密码文件的全路径和名称:

 $ asmcmd find +DATA "*" --type password
+DATA/ASM/PASSWORD/pwdasm.256.837972683
+DATA/orapwasm

其实+DATA/orapwasm是实际文件名(+DATA/ASM/PASSWORD/pwdasm.256.837972683)的一个alias。

The ASM password directory

ASM用来管理密码文件的元数据结构是ASM的密码文件目录,是ASM元数据结构中的13号文件。但是要注意,ASM的密码文件跟其他文件一样也被ASM文件目录所管理。

我们来定位到ASM的密码文件目录,根据他的文件号为13,我们可以在ASM的文件目录中找到它,我们首先需要定位到ASM的文件目录,它位于ASM 0号磁盘的磁盘头中kfdhdb.f1b1locn所指向的位置。

首先定位到磁盘组DATA的0号磁盘:

 $ asmcmd lsdsk -p -G DATA | cut -c12-21,78-88
Disk_Num  Path
       0  /dev/sdc1
       1  /dev/sdd1
       2  /dev/sde1
       3  /dev/sdf1

然后找到文件目录的起始AU:

 $ kfed read /dev/sdc1 | grep f1b1locn
kfdhdb.f1b1locn:                     10 ; 0x0d4: 0x0000000a

上面的输出代表文件目录在这个磁盘的AU 10处,只需要定位到AU 10的块13(因为密码文件目录是文件13),就可以通过kfed工具查看ASM密码文件目录的AU分布信息:

 $ kfed read /dev/sdc1 aun=10 blkn=13 | egrep "au|disk" | head
kfffde[0].xptr.au:                   47 ; 0x4a0: 0x0000002f
kfffde[0].xptr.disk:                  2 ; 0x4a4: 0x0002
kfffde[1].xptr.au:                   45 ; 0x4a8: 0x0000002d
kfffde[1].xptr.disk:                  1 ; 0x4ac: 0x0001
kfffde[2].xptr.au:                   46 ; 0x4b0: 0x0000002e
kfffde[2].xptr.disk:                  3 ; 0x4b4: 0x0003
kfffde[3].xptr.au:           4294967295 ; 0x4b8: 0xffffffff
kfffde[3].xptr.disk:              65535 ; 0x4bc: 0xffff
...

以上输出显示了,ASM的密码文件目录位于磁盘2的AU 47处,并且同时又复制了2分,分别位于磁盘1的AU 45,磁盘3的AU 46处。注意这是一个normal冗余的磁盘组,ASM的密码文件目录被做了3重镜像。对于元数据的3重镜像我们在本系列文章中已经多次看到。

我们看下2号磁盘的AU 47:

 $ kfed read /dev/sde1 aun=47 blkn=1 | more
kfbh.endian:                          1 ; 0x000: 0x01
kfbh.hard:                          130 ; 0x001: 0x82
kfbh.type:                           29 ; 0x002: KFBTYP_PASWDDIR
...
kfzpdb.block.incarn:                  3 ; 0x000: A=1 NUMM=0x1
kfzpdb.block.frlist.number:  4294967295 ; 0x004: 0xffffffff
kfzpdb.block.frlist.incarn:           0 ; 0x008: A=0 NUMM=0x0
kfzpdb.next.number:                  15 ; 0x00c: 0x0000000f
kfzpdb.next.incarn:                   3 ; 0x010: A=1 NUMM=0x1
kfzpdb.flags:                         0 ; 0x014: 0x00000000
kfzpdb.file:                        256 ; 0x018: 0x00000100
kfzpdb.finc:                  837972683 ; 0x01c: 0x31f272cb
kfzpdb.bcount:                       15 ; 0x020: 0x0000000f
kfzpdb.size:                        512 ; 0x024: 0x00000200
...

上面的输出显示了此ASM元数据块的类型是KFBTYP_PASWDDIR,也就是ASM的密码文件目录:

 $ asmcmd ls -l +DATA/ASM/PASSWORD
Type      Redund  Striped  Time             Sys  Name
PASSWORD  HIGH    COARSE   JAN 27 18:00:00  Y    pwdasm.256.837972683

ASM的密码文件是HIGH冗余,做了3副本,但是读者需要注意,这是一个normal冗余的磁盘组。

Conclusion

从12C 版本开始,ASM和数据库的密码文件可以存放在ASM的磁盘组中,ASM的密码文件可以在GI安装时或者使用ORAPWD命令去创建,磁盘组的密码文件可以使用ASMCMD、ORAPWD、SRVCTL命令去管理。