RAC GPNP 即插即用进程

修改私网IP

Oracle 11g RAC环境下Private IP修改方法及异常处理 - jimeper - 博客园

-----这段修改不知道干啥, 做好这个xml ocr vf asm的备份是大事

针对RAC中一些启动故障,常常是与GPNP相关的问题,在这篇文章中,我将解释什么是GPnP配置文件以及它如何被群集件使用,并且通过小小实验来进行常说的修改GPNP文件。

什么是GPNP?

    GPNP配置文件是位于GRID_HOME / gpnp / <主机名> / profiles / peer中的一个很小XML文件profile.xml。 它被用来建立一个节点的正确的全局属性。 每个节点都会维护GPNP配置文件的本地副本,并由GPnP Deamon(GPnPD)维护。

GPNP文件包含什么?

    GPnP Profile用于存储启动Oracle Clusterware所需的必要信息,如SPFILE位置,ASM DiskString等。

- 集群名称

- 网络分类(Public/Private)

- 用于ASM的存储:SPFILE位置,ASM DiskString等

- 数字签名信息

什么会更新GPNP文件?

GPNPD守 护进程在以下期 间会同步配置文件的更改,比如 安装或更新 软件 时。

每当使用以下工具对群集进行更改时会更新GPNP文件

• oifcfg(更改网络),

• crsctl(更改voting disk的位置),

• asmcmd(更改ASM_DISKSTRING,SPFILE位置)等

集群软件如何使用GPNP文件?

   在11g R2 RAC中,仲裁盘存储在ASM磁盘组上。但是在ASM 挂着之前,CSSD需要仲裁文件。在其启动时,CSSD将扫描gpnp profile xml文件中指定的所有设备的设备头,并标记出“DiscoveryString”,其中包含asm_diskstring参数的值。

    启动群集件时访问仲裁盘,如果仲裁盘在ASM上,则从GPNP配置文件(<orcl:CSS-Profile id =“css”DiscoveryString =“+asm”LeaseDuration =“400”/>)读取此信息,即使此时ASM未启动,集群使用kfed来读取仲裁盘

    接下来,群集件会检查所有节点是否具有更新的GPNP配置文件,并根据GPNP配置加入群集。当节点启动/添加到群集时,启动节点上的群集件软件会启动GPNP AGENT, GPNP AGENT 会进行以下动作:

•如果已经是群集的一部分,GPNP AGENT将读取该节点上的现有配置文件。

• 如果将节点添加到群集,GPnP代理使用多点传送协议(由MDNS提供)在另一个现有节点上找到AGENT,并从该代理获取配置文件。

    接下来,CRSD需要读取OCR来启动节点上的各种资源。如果OCR 在ASM 上,便需要先找出ASM SPfile的位置,此时会优先搜索GPNP profile。  (cssd 先起来 ,这样asm起来 ocr才能用,那OLR来干啥)

    当从GPNP profile中找到位置时,是从ASM磁盘头中获取相关信息,一下模拟这一过程。

       在这里,以下显示包含spfile 文件所在的磁盘(spfflg 不为空)

1

2

3

4

[grid@rac1]$kfed read /dev/asm-diskb | grep -E 'spf|ausize'

kfdhdb.ausize:                  1048576 ; 0x0bc: 0x00100000 <<<<<1M

kfdhdb.spfile:                      437 ; 0x0f4: 0x000001b5 <<<<offset 437

kfdhdb.spfflg:                        1 ; 0x0f8: 0x00000001 <<<<个数1

从上面可以可以看出:

     设备 /dev/sdb3 包含了一个 ASM spfile (spfflg=1).

    这个ASM spfile 位于磁盘偏移量437位置 (spfile=16)

根据分配单元大小(kfdhdb.ausize = 1M ),可以从设备转储ASM spfile :  不起asm可找到spfile

1

2

3

4

 [grid@rac1]$dd if=/dev/asm-diskb of=/tmp/spfileASM_Copy.ora skip=437  bs=1M count=1

1+0 records in

1+0 records out

1048576 bytes (1.0 MB) copied, 0.406486 s, 2.6 MB/s

修改GPNP文件的一个小 实验

       在这里,我修改了ASM_DISKSTRING的值,使得包含仲裁盘的ASM磁盘不包含在内,并试图在节点上重新启动crs。查看CSSD日志文件,我发现CSSD无法识别其投票文件。

   然后只能在不运行ASM的情况下修改ASM disk_string参数,并且没有可用的CSSD,此时使用gpnptool来编辑gpnp配置文件:

1 .检查仲裁盘位置

2.找其他磁盘组的所有磁盘

3.设置ASM_DISKTRING 的值为DATA/FLASH/TEST磁盘组下所有的盘:

  

4.检查gpnp profile 中discovery string指定的磁盘,此时不包含voting disk。

 DiscoveryString="/dev/asm-diskc,/dev/asm-diskd,/dev/asm-diske"

 5.重启CRS

crsctl stop crs

 crsctl start  crs

6.检查到has已经启动,但其他服务无法启动

1

2

3

4

5

6

7

8

9

10

[root@rac1 peer]# crsctl check has

CRS-4638: Oracle High Availability Services is online

[root@rac1 peer]# crsctl check crs

CRS-4638: Oracle High Availability Services is online

CRS-4535: Cannot communicate with Cluster Ready Services

CRS-4530: Communications failure contacting Cluster Synchronization Services daemon

CRS-4534: Cannot communicate with Event Manager

[root@rac1 peer]# crsctl check css

CRS-4530: Communications failure contacting Cluster Synchronization Services daemon

[root@rac1 peer]#

7.检查ocssd.log 日志

扫描discovery string一部分盘但未找到仲裁盘的。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

2018-02-28 09:24:01.804: [    CSSD][607938304]clssnmvDiskVerify: Successful discovery of 0 disks

2018-02-28 09:24:01.804: [    CSSD][607938304]clssnmCompleteInitVFDiscovery: Completing initial voting file discovery

2018-02-28 09:24:01.804: [    CSSD][607938304]clssnmvFindInitialConfigs: No voting files found

2018-02-28 09:24:01.804: [    CSSD][607938304](:CSSNM00070:)clssnmCompleteInitVFDiscovery: Voting file not found. Retrying discovery in 15 seconds

2018-02-28 09:24:01.844: [    CSSD][610629376]clssscSelect: cookie accept request 0x1747880

2018-02-28 09:24:01.844: [    CSSD][610629376]clssgmAllocProc: (0x7f6e10036470) allocated

2018-02-28 09:24:01.845: [    CSSD][610629376]clssgmClientConnectMsg: properties of cmProc 0x7f6e10036470 - 1,2,3,4,5

2018-02-28 09:24:01.845: [    CSSD][610629376]clssgmClientConnectMsg: Connect from con(0xdeb) proc(0x7f6e10036470) pid(6857) version 11:2:1:4, properties: 1,2,3,4,5

2018-02-28 09:24:01.845: [    CSSD][610629376]clssgmClientConnectMsg: msg flags 0x0000

2018-02-28 09:24:02.364: [    CSSD][610629376]clssgmExecuteClientRequest(): type(37) size(80) only connect and exit messages are allowed before lease acquisition proc(0x7f6e10036470) client((nil))

2018-02-28 09:24:02.366: [    CSSD][610629376]clssgmDeadProc: proc 0x7f6e10036470

2018-02-28 09:24:02.366: [    CSSD][610629376]clssgmDestroyProc: cleaning up proc(0x7f6e10036470) con(0xdeb) skgpid  ospid 6857 with 0 clients, refcount 0

2018-02-28 09:24:02.366: [    CSSD][610629376]clssgmDiscEndpcl: gipcDestroy 0xdeb

2018-02-28 09:24:06.840: [    CSSD][610629376]clssscSelect: cookie accept request 0x1747880

2018-02-28 09:24:06.840: [    CSSD][610629376]clssgmAllocProc: (0x7f6e1001d630) allocated

2018-02-28 09:24:06.843: [    CSSD][610629376]clssgmClientConnectMsg: properties of cmProc 0x7f6e1001d630 - 1,2,3,4,5

2018-02-28 09:24:06.843: [    CSSD][610629376]clssgmClientConnectMsg: Connect from con(0xe4f) proc(0x7f6e1001d630) pid(6857) version 11:2:1:4, properties: 1,2,3,4,5

2018-02-28 09:24:06.843: [    CSSD][610629376]clssgmClientConnectMsg: msg flags 0x0000

2018-02-28 09:24:07.375: [    CSSD][610629376]clssgmExecuteClientRequest(): type(37) size(80) only connect and exit messages are allowed before lease acquisition proc(0x7f6e1001d630) client((nil))

2018-02-28 09:24:07.380: [    CSSD][610629376]clssgmDeadProc: proc 0x7f6e1001d630

2018-02-28 09:24:07.380: [    CSSD][610629376]clssgmDestroyProc: cleaning up proc(0x7f6e1001d630) con(0xe4f) skgpid  ospid 6857 with 0 clients, refcount 0

2018-02-28 09:24:07.380: [    CSSD][610629376]clssgmDiscEndpcl: gipcDestroy 0xe4f

2018-02-28 09:24:11.849: [    CSSD][610629376]clssscSelect: cookie accept request 0x1747880

2018-02-28 09:24:11.849: [    CSSD][610629376]clssgmAllocProc: (0x7f6e1005a090) allocated

2018-02-28 09:24:11.851: [    CSSD][610629376]clssgmClientConnectMsg: properties of cmProc 0x7f6e1005a090 - 1,2,3,4,5

2018-02-28 09:24:11.851: [    CSSD][610629376]clssgmClientConnectMsg: Connect from con(0xeb3) proc(0x7f6e1005a090) pid(6857) version 11:2:1:4, properties: 1,2,3,4,5

2018-02-28 09:24:11.851: [    CSSD][610629376]clssgmClientConnectMsg: msg flags 0x0000

2018-02-28 09:24:12.392: [    CSSD][610629376]clssgmExecuteClientRequest(): type(37) size(80) only connect and exit messages are allowed before lease acquisition proc(0x7f6e1005a090) client((nil))

2018-02-28 09:24:12.396: [    CSSD][610629376]clssgmDeadProc: proc 0x7f6e1005a090

2018-02-28 09:24:12.396: [    CSSD][610629376]clssgmDestroyProc: cleaning up proc(0x7f6e1005a090) con(0xeb3) skgpid  ospid 6857 with 0 clients, refcount 0

2018-02-28 09:24:12.396: [    CSSD][610629376]clssgmDiscEndpcl: gipcDestroy 0xeb3

2018-02-28 09:24:16.807: [    GPNP][607938304]clsgpnp_profileCallUrlInt: [at clsgpnp.c:2104] get-profile call to url "ipc://GPNPD_rac1" disco "" [f=0 claimed- host: cname: seq: auth:]

2018-02-28 09:24:16.833: [    GPNP][607938304]clsgpnp_profileCallUrlInt: [at clsgpnp.c:2234] Result: (0) CLSGPNP_OK. Successful get-profile CALL to remote "ipc://GPNPD_rac1" disco ""

2018-02-28 09:24:16.833: [    CSSD][607938304]clssscGetParameterProfile: buffer passed for parameter ASM discovery (3) is too short, required 45, passed 20

2018-02-28 09:24:16.833: [    CSSD][607938304]clssnmReadDiscoveryProfile: voting file discovery string(/dev/asm-diskc,/dev/asm-diskd,/dev/asm-diske)

2018-02-28 09:24:16.833: [    CSSD][607938304]clssnmvDDiscThread: using discovery string /dev/asm-diskc,/dev/asm-diskd,/dev/asm-diske for initial discovery

2018-02-28 09:24:16.833: [   SKGFD][607938304]Discovery with str:/dev/asm-diskc,/dev/asm-diskd,/dev/asm-diske:

2018-02-28 09:24:16.834: [   SKGFD][607938304]UFS discovery with :/dev/asm-diskc:

2018-02-28 09:24:16.838: [   SKGFD][607938304]Fetching UFS disk :/dev/asm-diskc:

2018-02-28 09:24:16.838: [   SKGFD][607938304]OSS discovery with :/dev/asm-diskc:

2018-02-28 09:24:16.839: [   SKGFD][607938304]Discovery advancing to nxt string :/dev/asm-diskd:

2018-02-28 09:24:16.839: [   SKGFD][607938304]UFS discovery with :/dev/asm-diskd:

2018-02-28 09:24:16.843: [   SKGFD][607938304]Fetching UFS disk :/dev/asm-diskd:

2018-02-28 09:24:16.843: [   SKGFD][607938304]OSS discovery with :/dev/asm-diskd:

2018-02-28 09:24:16.843: [   SKGFD][607938304]Discovery advancing to nxt string :/dev/asm-diske:

2018-02-28 09:24:16.843: [   SKGFD][607938304]UFS discovery with :/dev/asm-diske:

2018-02-28 09:24:16.847: [   SKGFD][607938304]Fetching UFS disk :/dev/asm-diske:

2018-02-28 09:24:16.847: [   SKGFD][607938304]OSS discovery with :/dev/asm-diske:

2018-02-28 09:24:16.847: [   SKGFD][607938304]Handle 0x7f6e14135840 from lib :UFS:: for disk :/dev/asm-diskc:

2018-02-28 09:24:16.848: [   SKGFD][607938304]Handle 0x7f6e14132060 from lib :UFS:: for disk :/dev/asm-diskd:

2018-02-28 09:24:16.849: [   SKGFD][607938304]Handle 0x7f6e14136d00 from lib :UFS:: for disk :/dev/asm-diske:

2018-02-28 09:24:16.850: [   SKGFD][607938304]Lib :UFS:: closing handle 0x7f6e14135840 for disk :/dev/asm-diskc:

2018-02-28 09:24:16.852: [   SKGFD][607938304]Lib :UFS:: closing handle 0x7f6e14132060 for disk :/dev/asm-diskd:

2018-02-28 09:24:16.854: [   SKGFD][607938304]Lib :UFS:: closing handle 0x7f6e14136d00 for disk :/dev/asm-diske:

8.复制一个GPNP PROFILE 文件

1

2

3

[root@rac1 peer]# pwd

/u01/app/11.2.0/grid/gpnp/rac1/profiles/peer

[root@rac1 peer]# cp profile.xml profile.bak

9. 删除文件中的 oracle signature

gpnptool unsign -p=profile.bak

10.修改 DiscoveryString 的值

gpnptool edit -asm_dis='/dev/asm*' -p=profile.bak -o=profile.bak –ovr

11.重新签名profile xml文件

 gpnptool sign -p=profile.bak -w=file:/u01/app/11.2.0/grid/gpnp/rac1/wallets/peer/ -o=profile.new

12.  move 掉原来的profile.xml .

13.查看 discovery string 参数已经调整

[root@host01 peer]# vi profile.xml

DiscoveryString="/dev/asm*"

14. 重启 crs 

可以杀掉所有进程或使用/u01/app/11.2.0/grid/bin/crsctl stop crs -f

 crsctl start crs

 

网格即插即用(Grid Plug and Play,GPnP)是Oracle 11gR2 RAC提供的新组件,该组件的功能由gpnpd.bin守护进程实现。GPnP可以提供一个动态的GI环境,能随着负载的增加而动态改变GI环境。GPnP能非常容易地添加、替换或者移除集群中的节点,就像电源插头一样即插即用。

GPnP主要由GPNPD、mDNS、SCAN和GNS组成。mDNS(Multicast Domain Name Service)负责在节点内部进行IP的解析,在添加节点的时候不需要手动修改每个节点的/etc/hosts文件。GPNPD服务提供的是集群配置信息管理,新的节点添加进来会根据现有的GPnP profile配置信息来配置新的节点,同时更新所有节点的GPnP profile文件。一旦新添加的节点加入到集群,SCAN机制动态地将连接分配给该节点,所有的客户端都不需要进行任何配置的变更,就能实现节点的负载均衡。GNS(Grid Naming Service)能动态地为新添加的节点分配VIP地址,利用DHCP管理公共网络中的IP地址。这些服务共同构成了“网格即插即用”的特性。

GPnP profile存储了整个集群的配置信息,它是一个XML文件,该文件中包括了集群名称、网络类型(public/private)、ASM和CSS的存储信息、数字签名,以及ASM实例的SPFILE文件位置等。在集群中,CSS、GPnP等服务的启动都依赖于GPnP profile文件,该文件引导节点加入集群。如果GPnP profile文件被破坏或丢失,那么集群将无法正常启动。在集群启动期间,CSS守护进程将使用GPnP profile文件中的DiscoveryString参数发现表决磁盘文件,所以,若DiscoveryString参数配置不正确,则CSS守护进程无法启动,进而导致整个CRS无法启动。

GPnP profile文件

在Clusterware中,CSS、GPnP等服务的启动都需要依赖于GPnP profile文件。GPnP profile是一个XML文件,引导节点加入集群,GPnP profile提供了新节点的配置信息。GPnP profile还指定了整个集群的特性。如果该文件被破坏或丢失,Clusterware将无法正常启动。

在Clusterware启动期间,CSS守护进程使用GPnP profile发现表决文件(参数“DiscoveryString”)。一个不正确的Discovery字符串将阻止CSS守护进程启动,导致整个CRS无法启动。

注意   Oracle不支持手动修改profile.xml文件,直接对它的修改可能导致无法修复的问题,最终导致在所有节点重建Clusterware。

GPnP profile文件保存的是集群的配置信息。默认的保存位置是:

$GRID_HOME/gpnp/$HOSTNAME/profile/peer/profile.xml

$GRID_HOME/gpnp/profile/peer/profile.xml(全局备份)

下面是典型的GPnP profile内容(/u01/app/11.2.0/grid/gpnp/profiles/peer/profile.xml):

 
  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <gpnp:GPnP-Profile Version="1.0" xmlns="http://www.grid-pnp.org/2005/11/gpnp-  
  3. profile" xmlns:gpnp="http://www.grid-pnp.org/2005/11/  
  4. gpnp-profile" xmlns:orcl="http://www.oracle.com/gpnp/  
  5. 2005/11/gpnp-profile" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  6. xsi:schemaLocation="http://www.grid-pnp.org/2005/11/gpnp-profile gpnp-  
  7. profile.xsd" ProfileSequence="4" ClusterUId="33b46b234583df41ff600bf1d9904cea" 
  8. ClusterName="rhel-cluster" PALocation=""> 
  9.     <gpnp:Network-Profile> 
  10.         <gpnp:HostNetwork id="gen" HostName="*"> 
  11.     <gpnp:Network id="net1" IP="10.168.4.0" Adapter="eth0" Use="public"/> 
  12.     <gpnp:Network id="net2" IP="192.168.1.0" Adapter="eth1" 
  13.     Use="cluster_interconnect"/> 
  14.     <gpnp:Network id="net3" IP="192.168.1.0" Adapter="eth2" 
  15.     Use="cluster_interconnect"/> 
  16.         </gpnp:HostNetwork> 
  17.     </gpnp:Network-Profile> 
  18.     <orcl:CSS-Profile id="css" DiscoveryString="+asm" LeaseDuration="400"/> 
  19.     <orcl:ASM-Profile id="asm" DiscoveryString="/dev/raw/*,ORCL:*" 
  20.     SPFile="+OCRVDISK/rhel-cluster/asmparameterfile/registry.253.684539075"/> 
  21.     <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
  22.         <ds:SignedInfo> 
  23.             <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-  
  24.         exc-c14n#"/> 
  25.             <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> 
  26.             <ds:Reference URI=""> 
  27.                 <ds:Transforms> 
  28.                     <ds:Transform Algorithm="http://www.w3.org/2000/09/  
  29.                         xmldsig#enveloped-signature"/> 
  30.                     <ds:Transform Algorithm="http://www.w3.org/  
  31.                     2001/10/xml-exc-c14n#"> 
  32.                         <InclusiveNamespaces xmlns="  
  33.     http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="gpnp orcl xsi"/> 
  34.                     </ds:Transform> 
  35.                 </ds:Transforms> 
  36.                 <ds:DigestMethod Algorithm="http://www.  
  37.                 w3.org/2000/09/xmldsig#sha1"/> 
  38.                 <ds:DigestValue>tJwvbopVU0UhRT9K3M6+t9glsbk=</ds:DigestValue> 
  39.             </ds:Reference> 
  40.         </ds:SignedInfo> 
  41.         <ds:SignatureValue>XH4UsWRss5MLcgLnBPYXgf4LK/6/EinZL30y  
  42.         Lqe1oavr1tAQFi63XQjW7qpglukNaR3IZX2roOPnlocf3  
  43.         spcnAXUufDlGyUFN7Tf3zqa25P9Xfs2yvdFB24kN81eZNrlANC5own0LbpKL7  
  44.         yiBW6vMr/rz8OgbIzLkb/zkylBKfQ=</ds:SignatureValue> 
  45.     </ds:Signature> 
  46. </gpnp:GPnP-Profile> 


通过上面的例子可以看出,GPnP profile保存的是RAC的配置信息,包括集群名称、网络类型信息(public/private)、ASM和CSS的存储信息、安全的数字签名,以及ASM实例的SPFILE文件位置。当集群配置发生变化时,所有节点的该文件会被自动更新。在安装、系统引导或者当使用标准的集群工具更新期间,这些活动包括:oifcfg 改变网络信息、crsctl 改变css设备、ASM额外的存储等,会通过gpdpd进程复制GPnP profile到所有的其他节点。

如果GPnP出现问题,可以使用cluvfy comp gpnp组件验证命令检查在集群中所有节点网格即插即用的完整性。

 
  1. cluvfy comp gpnp [-n node_list] [-verbose] 



打开ASM才能读取到SPFILE\只有先读取到了SPFILE才能启动到NOMUT状态
必须读取OCR才能打开ASM\ASM起来了才能读取到OCR---除了OCR 还有OLR

以上都是死循环,所以会起一个虚拟的ASM即图中Oracle ASM,能启动虚拟的ASM因为OCR配置信息都会写一份到本地即OLR(Grid_home/cdata/host_name.olr),以后真正的ASM即图中Oracle ASM Instance起来后就会覆盖掉这个虚拟的ASM

-----

11gR2 RAC ASM启动过程

原创 Oracle 作者:yingyifeng306 时间:2015-05-25 15:05:02  7588  0

11gR2 RAC ASM启动揭秘
今天QQ群里的一群朋友在讨论11gR2 RAC的ASM启动问题,大家对于先启动ASM还是先创建磁盘组问题讨论的异常激烈。记得曾经研究过这个问题,贴出该问题供大家参考
从11gR2开始,RAC的ocr和vote开始通过创建一个磁盘组的形式共同存在于ASM中, 从而很好的控制了10g中仍需要为这2个RAC节点划分相应的设备,  并且相应的ASM的spfile也可以存放到ASM diskgroup中以实现多节点ASM的共享管理了。
 不过这听上去似乎有些不可思议,照常理来说 ASM实例启动并mount diskgroup后才能够访问diskgroup上的文件, 但是ASM实例只有获得ASM spfile后才能够启动实例,这2者形成了死循环。到底是先启动ASM实例还是RAC先管理到OCRVOTE磁盘组呢。下面我们通过一系列的实验及说明来解释这个问题:

从11.2开始Oracle Cluterware标示voting disk files的方法较之前的版本11.1或10.2有所区别,11.2之前voting disk file的位置存放在OCR中, 但是因为从11.2开始ocr和votedisk可以存放在ASM了 , 所以自11.2始voting disk file通过GPNP profile中的CSS voting file discovery string来定位。
CSS voting disk file的discovery string将指向ASM,所以它要使用ASM discovery string的值。我们利用gpnptool get命令获得gpnp profile:
[grid@s1-11g ~]$ gpnptool get
Warning: some command line parameters were defaulted. Resulting command line: 
         /oracle/grid/bin/gpnptool.bin get -o-

jifUhk40NCZKYHu9E2s9wHZpt+M=OxCHW6vbO+hmX6HnEL6KO1t5gJNv2uBP3406XaLPKc3265v+m29znkwTXXo1erFFr/FeP3Da2wit3vkcckGT4UquuLJ1nEfmDBAAkfJIFYfDoWF6RwDLj9VW8jK1fO8lSjlb2DGrkBE9KdB5llz+uFzUSzdgtY0x1bwL9hM9KOg=
Success.
其中重要的2条记录:

==》css voting disk指向+ASM


==》该记录表达了ASM的DiscoveryString=”/dev/asm*”,即ASM实例启动时会去寻找的设备路径,SPFILE记录了ASM Parameter FILE的ALIAS
 
但是请注意虽然GPNP记录了ASM Parameter FILE的ALIAS,但这不代表ASM直接能访问到该SPFILE,在实际Diskgroup被Mount之前光知道一个ASM ALIAS是没有用的。
我们来看一下+OCRVOTE/s1-11g-cluster/asmparameterfile/registry.253.824566899这个SPFILE在ASM中所处的位置:
[grid@s1-11g ~]$ sqlplus "/ as sysasm"
SQL*Plus: Release 11.2.0.3.0 Production on Fri Oct 18 13:38:04 2013
Copyright (c) 1982, 2011, Oracle.  All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Real Application Clusters and Automatic Storage Management options

SQL> set linesize 140 pagesize 1400
SQL> col "FILE NAME" format a40
SQL> set head on
SQL> select NAME         "FILE NAME",
  2             AU_KFFXP     "AU NUMBER",
  3             NUMBER_KFFXP "FILE NUMBER",
  4             DISK_KFFXP   "DISK NUMBER"
  5        from x$kffxp, v$asm_alias
  6       where GROUP_KFFXP = GROUP_NUMBER
  7         and NUMBER_KFFXP = FILE_NUMBER
  8         and name in ('REGISTRY.253.824566899')
  9     order by  DISK_KFFXP,AU_KFFXP;

FILE NAME                                 AU NUMBER FILE NUMBER DISK NUMBER
---------------------------------------- ---------- ----------- -----------
REGISTRY.253.824566899                           59         253           1
REGISTRY.253.824566899                           59         253           2
SQL> col path for a50
SQL> select disk_number,path from v$asm_disk where disk_number in (1,2) and GROUP_NUMBER=2;


DISK_NUMBER PATH
----------- --------------------------------------------------
          1 /dev/asm-nocr2
          2 /dev/asm-nocr1
          可以看到该ASM SPFILE共有2份镜像(redundancy=high),分别保留在 /dev/asm-nocr2的AU=59和/dev/asm-nocr1 AU=59
我们利用kfed命令分别检查这三个ASM DISK的header:  
[grid@s1-11g ~]$  kfed read /dev/asm-nocr2|grep spfile
kfdhdb.spfile:                       59 ; 0x0f4: 0x0000003b 
  
[grid@s1-11g ~]$ kfed read /dev/asm-nocr1|grep spfile
kfdhdb.spfile:                       59 ; 0x0f4: 0x0000003b

可以看到ASM disk header的kfdhdb.spfile指向ASM SPFILE在这个DISK上的AU NUMBER即其位置, ASM实例在启动时只需要通过GPNP PROFILE中的 DiscoveryString找到合适的设备路径,并读取其ASM disk header即可以找到kfdhdb.spfile这个位置属性,从而在没有MOUNT DISKGROUP的情况下读取ASM SPFILE,并成功启动ASM, 这也就解决了鸡生蛋、蛋生鸡的难题。

这也是我们在后台日志中看到的gpnp启动:
2013-08-27 14:22:41.603
[gpnpd(10544)]CRS-2328:GPNPD started on node s1-11g. 
2013-08-27 14:22:44.580
[cssd(10608)]CRS-1713:CSSD daemon is started in clustered mode
2013-08-27 14:22:46.573
[ohasd(9248)]CRS-2767:Resource state recovery not attempted for 'ora.diskmon' as its target state is OFFLINE
2013-08-27 14:24:10.235
[cssd(10608)]CRS-1707:Lease acquisition for node s1-11g number 1 completed
2013-08-27 14:24:11.934
[cssd(10608)]CRS-1605:CSSD voting file is online: /dev/asm-ocr_vote; details in /oracle/grid/log/s1-11g/cssd/ocssd.log.
2013-08-27 14:24:11.962
[cssd(10608)]CRS-1605:CSSD voting file is online: /dev/asm-nocr2; details in /oracle/grid/log/s1-11g/cssd/ocssd.log.
2013-08-27 14:24:11.986
[cssd(10608)]CRS-1605:CSSD voting file is online: /dev/asm-nocr1; details in /oracle/grid/log/s1-11g/cssd/ocssd.log.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值