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

原作者: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命令去管理。

原文发布于微信公众号 - 沃趣科技(woqutech)

原文发表时间:2017-03-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大内老A

ASP.NET MVC集成EntLib实现“自动化”异常处理[实例篇]

个人觉得异常处理对于程序员来说是最为熟悉的同时也是最难掌握的。说它熟悉,因为仅仅就是try/catch/finally而已。说它难以掌握,则是因为很多开发人员却...

21810
来自专栏lgp20151222

rabbit的简单搭建,java使用rabbitmq queue的简单例子和一些坑

由于本人的码云太多太乱了,于是决定一个一个的整合到一个springboot项目里面。

3851
来自专栏互联网大杂烩

Spring MVC请求处理过程

重写了service,doGet,doPost,doPut,doDelete,doOptions,doTrance(除了doHead),在service方法中增...

2632
来自专栏Linux驱动

第1阶段——uboot分析之硬件初始化start.S(4)

分析uboot第一个执行函数_start(cpu/arm920t/start.S)  打开cpu/arm920t/start.S 1 .globl _start...

2728
来自专栏有趣的django

Django rest framework源码分析(3)----节流

添加节流 自定义节流的方法  限制60s内只能访问3次 (1)API文件夹下面新建throttle.py,代码如下: # utils/throttle.py ...

5238
来自专栏大内老A

[WCF REST] 通过ASP.NET Output Caching实现声明式缓存

ASP.NET的输出缓存(Output Caching)机制允许我们针对整个Web页面或者页面的某个部分(主要针对用户控件)最终呈现的HTML进行缓存。对于后续...

2057
来自专栏*坤的Blog

公司web安全等级提升

公司的一个web数据展示系统,本来是内网的,而且是一个单独的主机,不存在远程控制的问题,所以之前并没有考虑一些安全相关的测试.但是国调安全检查的需要添加这样子的...

2174
来自专栏岑玉海

Hadoop源码系列(一)FairScheduler申请和分配container的过程

1、如何申请资源 1.1 如何启动AM并申请资源 1.1.1 如何启动AM val yarnClient = YarnClient.createYarnClie...

4514
来自专栏lzj_learn_note

Volley源码分析学习

2)根据SDK版本来创建HttpStack的实现,如果是2.3以上的,则使用基于HttpUrlConnection实现的HurlStack,反之,则利用Http...

1176
来自专栏bboysoul

ubuntu安装wxpython库

为了做一个小程序,要用到wxpython这个库,所以就需要安装下,因为我是使用pyenv去管理python的,所以安装这个库就使用pip安装了,系统是ubunt...

1823

扫码关注云+社区

领取腾讯云代金券