修改私网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 |
|
从上面可以可以看出:
设备 /dev/sdb3 包含了一个 ASM spfile (spfflg=1).
这个ASM spfile 位于磁盘偏移量437位置 (spfile=16)
根据分配单元大小(kfdhdb.ausize = 1M ),可以从设备转储ASM spfile : 不起asm可找到spfile
1 2 3 4 |
|
修改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 |
|
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 |
|
8.复制一个GPNP PROFILE 文件
1 2 3 |
|
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):
- <?xml version="1.0" encoding="UTF-8"?>
- <gpnp:GPnP-Profile Version="1.0" xmlns="http://www.grid-pnp.org/2005/11/gpnp-
- profile" xmlns:gpnp="http://www.grid-pnp.org/2005/11/
- gpnp-profile" xmlns:orcl="http://www.oracle.com/gpnp/
- 2005/11/gpnp-profile" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.grid-pnp.org/2005/11/gpnp-profile gpnp-
- profile.xsd" ProfileSequence="4" ClusterUId="33b46b234583df41ff600bf1d9904cea"
- ClusterName="rhel-cluster" PALocation="">
- <gpnp:Network-Profile>
- <gpnp:HostNetwork id="gen" HostName="*">
- <gpnp:Network id="net1" IP="10.168.4.0" Adapter="eth0" Use="public"/>
- <gpnp:Network id="net2" IP="192.168.1.0" Adapter="eth1"
- Use="cluster_interconnect"/>
- <gpnp:Network id="net3" IP="192.168.1.0" Adapter="eth2"
- Use="cluster_interconnect"/>
- </gpnp:HostNetwork>
- </gpnp:Network-Profile>
- <orcl:CSS-Profile id="css" DiscoveryString="+asm" LeaseDuration="400"/>
- <orcl:ASM-Profile id="asm" DiscoveryString="/dev/raw/*,ORCL:*"
- SPFile="+OCRVDISK/rhel-cluster/asmparameterfile/registry.253.684539075"/>
- <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
- <ds:SignedInfo>
- <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-
- exc-c14n#"/>
- <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
- <ds:Reference URI="">
- <ds:Transforms>
- <ds:Transform Algorithm="http://www.w3.org/2000/09/
- xmldsig#enveloped-signature"/>
- <ds:Transform Algorithm="http://www.w3.org/
- 2001/10/xml-exc-c14n#">
- <InclusiveNamespaces xmlns="
- http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="gpnp orcl xsi"/>
- </ds:Transform>
- </ds:Transforms>
- <ds:DigestMethod Algorithm="http://www.
- w3.org/2000/09/xmldsig#sha1"/>
- <ds:DigestValue>tJwvbopVU0UhRT9K3M6+t9glsbk=</ds:DigestValue>
- </ds:Reference>
- </ds:SignedInfo>
- <ds:SignatureValue>XH4UsWRss5MLcgLnBPYXgf4LK/6/EinZL30y
- Lqe1oavr1tAQFi63XQjW7qpglukNaR3IZX2roOPnlocf3
- spcnAXUufDlGyUFN7Tf3zqa25P9Xfs2yvdFB24kN81eZNrlANC5own0LbpKL7
- yiBW6vMr/rz8OgbIzLkb/zkylBKfQ=</ds:SignatureValue>
- </ds:Signature>
- </gpnp:GPnP-Profile>
通过上面的例子可以看出,GPnP profile保存的是RAC的配置信息,包括集群名称、网络类型信息(public/private)、ASM和CSS的存储信息、安全的数字签名,以及ASM实例的SPFILE文件位置。当集群配置发生变化时,所有节点的该文件会被自动更新。在安装、系统引导或者当使用标准的集群工具更新期间,这些活动包括:oifcfg 改变网络信息、crsctl 改变css设备、ASM额外的存储等,会通过gpdpd进程复制GPnP profile到所有的其他节点。
如果GPnP出现问题,可以使用cluvfy comp gpnp组件验证命令检查在集群中所有节点网格即插即用的完整性。
- 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.