ASM实例的SPILE 存储在ASM的磁盘组上时,集群要如何去获取SPFILE并启动ASM实例?(1)

从11g R2 开始,ASM spfile 会自动存储在安装集群软件时创建的第一个磁盘组中,一般为OCR磁盘组。
由于投票盘/OCR 存储在 ASM 上,因此需要在节点上启动 ASM。要启动 ASM,需要其 SPFILE 。但 SPFILE 仅位于 ASM 磁盘组上。集群是如何解决这个问题呢?

  • 当 Oracle Clusterware 集群的节点重新启动时,OHASD 将通过特定于平台的方式启动。OHASD 访问存储在本地文件系统上的 OLR(Oracle 本地注册表),以获取完成 OHASD 初始化所需的数据
  • OHASD 调出 GPNPD 和 CSSD。CSSD 访问存储在本地文件系统上的 GPNP 配置文件,其中包含以下重要的引导数据;
    1. ASM_DISKSTRING参数(如果指定)以查找配置了 ASM 磁盘的磁盘。
    2. ASM SPFILE 位置:包含 ASM spfile 的磁盘组的名称.
    3. 投票文件的位置 : ASM– CSSD 扫描所有 ASM 磁盘的标头(如 GPnP 配置文件中的ASM_DISKSTRING所示)以识别包含投票文件的磁盘。使用 ASM 磁盘头中的指针,CSSD 可以访问 ASM 磁盘上的投票文件位置,并且 CSSD 能够完成初始化并启动或加入现有集群。

要在 ASM 实例启动期间读取 ASM spfile,无需打开磁盘组。访问数据所需的所有信息都存储在设备的头部中。OHASD 读取包含 ASM SPfile 的 ASM 磁盘的标头(从 GPnP 配置文件读取),并使用磁盘标头中的指针读取 ASM spfile 的内容。此后,将启动 ASM 实例。
– 在 ASM 实例运行并挂载其磁盘组的情况下,CRSD 可以访问 Clusterware 的 OCR。
– OHASD 通过访问 ASM 磁盘组中的 OCR 来启动 CRSD。
– Clusterware完成初始化并启动其控制下的其他服务。

根据上述流程进行Spfile文件的获取:

第一步 通过gpnp配置文件找出ASM Spfile的位置
gpnptool get |grep ASM-Profile
--获取到以下信息
ASM-Profile id="asm" DiscoveryString="/dev/mapper/*" SPFile="+OCR_VOTE/rac-cluster/asmparameterfile/registry.253.1088942297"

找出ASM磁盘组对应的磁盘列表

[grid@rac01 ~]$ asmcmd lsdsk -G OCR_VOTE
---------------------------------
Path
/dev/mapper/ocr_vote01
/dev/mapper/ocr_vote02
/dev/mapper/ocr_vote03
[grid@rac01 ~]$ ll /dev/mapper/ocr_vote*
lrwxrwxrwx 1 root root 7 Jun 10 10:48 /dev/mapper/ocr_vote01 -> ../dm-2
lrwxrwxrwx 1 root root 7 Jun 10 10:48 /dev/mapper/ocr_vote02 -> ../dm-3
lrwxrwxrwx 1 root root 7 Jun 10 10:48 /dev/mapper/ocr_vote03 -> ../dm-4


第二步 扫描磁盘的盘头
[root@RAC01 ~]# kfed read /dev/dm2 | grep -E 'spf|ausize'
kfdhdb.ausize:                  4194304 ; 0x0bc: 0x00400000
kfdhdb.spfile:                       27 ; 0x0f4: 0x0000001b
kfdhdb.spfflg:                        1 ; 0x0f8: 0x00000001
[root@RAC01 ~]# kfed read /dev/dm3 | grep -E 'spf|ausize'
kfdhdb.ausize:                  4194304 ; 0x0bc: 0x00400000
kfdhdb.spfile:                        0 ; 0x0f4: 0x00000000
kfdhdb.spfflg:                        0 ; 0x0f8: 0x00000000
[root@RAC01 ~]# kfed read /dev/dm4 | grep -E 'spf|ausize'
kfdhdb.ausize:                  4194304 ; 0x0bc: 0x00400000
kfdhdb.spfile:                        0 ; 0x0f4: 0x00000000
kfdhdb.spfflg:                        0 ; 0x0f8: 0x00000000

可以看到/dev/dm2中包含ASM Spfile (spfflg=1) 位置从磁盘offest 27(spfile 28)开始,AU大小4M(ausize 4194304).

从磁盘内将ASM Spfile 转储出来

[root@rac2 ~]#dd if=/dev/dm2 of=spfileASM_Copy.ora skip=27  bs=4M count=1
1+0 records in
1+0 records out
4194304 bytes (4.2 MB) copied, 0.0594547 s, 70.5 MB/s

[root@rac2 ~]# strings spfileASM_Copy.ora
+ASM1.__asm_max_connected_clients=5
+ASM1.__oracle_base='/oracle/gridbase'#ORACLE_BASE set from in memory value
+ASM2.__oracle_base='/oracle/gridbase'#ORACLE_BASE set from in memory value
*.asm_diskgroups='DATA'#Manual Mount
*.asm_diskstring='/dev/asm-*'
*.asm_power_limit=1
*.large_pool_size=12M
*.remote_login_passwordfile='EXCLUSIVE'

相同的办法也可以获取到OCR File

扫描votedisk的盘头
[root@rac2 ~]# kfed read /dev/asm-diskc | grep -E 'vf'
kfdhdb.vfstart:                      56 ; 0x0ec: 0x00000038
kfdhdb.vfend:                        64 ; 0x0f0: 0x00000040
[root@rac2 ~]# kfed read /dev/asm-diskd | grep -E 'vf'
kfdhdb.vfstart:                      64 ; 0x0ec: 0x00000040
kfdhdb.vfend:                        72 ; 0x0f0: 0x00000048
[root@rac2 ~]# kfed read /dev/asm-diske | grep -E 'vf'
kfdhdb.vfstart:                      56 ; 0x0ec: 0x00000038
kfdhdb.vfend:                        64 ; 0x0f0: 0x00000040

所以集群可以通过这种方式获取到ASM磁盘内的文件,所以通过这个操作还能获取到哪些东西呢?后续继续探索。

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值