Oracle® Clusterware
Clusterware Administration and Deployment Guide
6 Managing Oracle Cluster Registry and Voting Files
Oracle Clusterware包括两个重要的组件,用于管理配置和节点成员关系:Oracle集群注册中心(OCR),它还包括本地组件Oracle本地注册中心(OLR)和Voting Files投票文件。
•OCR存储Oracle集群和Oracle RAC数据库配置信息
•OLR驻留在集群中的每个节点上,管理每个特定节点的Oracle集群配置信息
•Voting Files投票文件存储关于节点成员资格的信息。要使节点成为集群的成员,集群中的所有节点都必须能够访问每个仲裁文件。
注意:
•Oracle Clusterware 12c不支持使用原始或块设备。要从使用原始设备或块设备的早期Oracle Clusterware版本升级到Oracle Clusterware 12c,必须在升级之前将OCR和投票文件迁移到Oracle自动存储管理(Oracle ASM)或共享文件系统。
•您可以在Oracle ASM上存储OCR和投票文件,或在独立群集上存储共享文件系统。
在Oracle数据库12c版本2(12.2)中,不支持直接在共享文件系统上放置OCR和投票磁盘文件。
从Oracle Database 19c(19.3)开始,对于独立的集群,取消了这个desupport。对于Oracle域服务群集,必须继续将OCR和投票磁盘文件放置在由Oracle ASM管理的磁盘组中。
Oracle建议在安装Oracle Clusterware期间配置多个投票文件,以提高可用性。如果选择将投票文件放入Oracle ASM磁盘组,则如果使用normal或high redundancy高冗余磁盘组,Oracle ASM将确保配置多个投票文件。如果选择将投票文件存储在共享文件系统上,则选择配置多个投票文件的选项,在这种情况下,必须根据不同的磁盘指定三个不同的文件系统。如有必要,可以在完成Oracle Clusterware安装过程后动态添加或替换投票文件,而无需停止群集。
本章包括以下主题:
•管理Oracle群集注册表(OCR)和Oracle本地注册表(OLR)
•管理投票文件(Voting Files)
一 管理Oracle群集注册表和Oracle本地注册表
使用OCRCONFIG、OCRDUMP和OCRCHECK管理OCR和Oracle本地注册表(OLR)。
OCR包含集群中所有Oracle资源的信息。
OLR是一个类似于位于集群中每个节点上的OCR的注册表,但包含特定于每个节点的信息。它包含有关Oracle Clusterware的可管理性信息,包括各种服务之间的依赖关系。Oracle高可用服务使用此信息。OLR位于集群中每个节点的本地存储上。其默认位置位于路径Grid-home/cdatahost-name.olr中,其中Grid-home是Oracle Grid Infrastructure home,host-name是节点的主机名。
管理OCR在以下主题中进行了说明:
•将Oracle群集注册表迁移到Oracle自动存储管理
•添加/替换/修复/删除Oracle群集注册表位置
•备份Oracle群集注册表
•恢复Oracle群集注册表
•诊断Oracle群集注册表问题
•使用导出和导入命令管理Oracle群集注册表
•Oracle本地注册表
•升级和降级Oracle群集注册表配置
相关主题
•关于OCRCONFIG
使用ocrconfig命令管理OCR。使用此实用程序,您可以导入、导出、添加、删除、还原、覆盖、备份、修复、替换、移动、升级或降级OCR。
•Oracle群集注册表故障排除
1.1 将Oracle群集注册表(OCR)迁移到Oracle自动存储管理(ASM)
由于Oracle Clusterware存储位于Oracle ASM磁盘组中,您可以使用Oracle Enterprise Manager管理数据库和Clusterware存储。
为了提高Oracle Clusterware存储的可管理性,默认情况下,在Oracle 12c数据库中OCR配置到Oracle ASM。但是,如果从以前版本的Oracle Clusterware升级,则可以将OCR迁移到Oracle ASM上,并利用在管理Oracle Clusterware存储方面的改进。
注:
如果从Oracle Clusterware的早期版本升级到Oracle Clusterware 12c,并且要将OCR存储在Oracle ASM磁盘组中,则必须将“ASM兼容性”属性设置为11.2.0.2或更高版本。
要使用OCRCONFIG将OCR迁移到Oracle ASM,请执行以下操作:
1.确保已升级到Oracle Clusterware 12c。运行以下命令以验证当前运行的版本:
$ crsctl query crs activeversion
2.使用Oracle ASM配置助手(ASMCA)在群集中的所有节点上配置和启动Oracle ASM。
3.使用ASMCA创建至少与现有OCR大小相同且至少具有正常(normal)冗余的Oracle ASM磁盘组。
注:
•如果OCR存储在具有外部冗余的Oracle ASM磁盘组中,那么Oracle建议您将另一个OCR位置添加到另一个磁盘组中,以避免在磁盘组中的某个磁盘出现故障时丢失OCR。
Oracle不支持在不同的存储类型上同时存储OCR,例如在Oracle ASM和共享文件系统上同时存储OCR,迁移期间除外。
•如果Oracle ASM实例在任何节点上失败,则OCR在该特定节点上不可用。
如果受Oracle ASM实例故障影响的节点上运行的CRSD进程是OCR编写器,则大多数OCR位置存储在Oracle ASM中,并且在Oracle ASM实例在此节点上关闭期间尝试对OCR进行I/O操作,则CRSD将停止并变得不可操作。群集管理现在受此特定节点的影响。
在任何情况下,一个节点上的一个Oracle ASM实例的故障都不会影响整个集群。
•确保您创建的Oracle ASM磁盘组已装载到群集中的所有节点上。
4.要将OCR添加到Oracle ASM磁盘组,请确保Oracle Clusterware堆栈正在运行,并以root用户身份运行以下命令:
# ocrconfig -add +new_disk_group
如果添加多个OCR位置,则可以多次运行此命令。最多可以有五个OCR位置。但是,每次连续运行都必须指向不同的磁盘组。
5.要删除不再使用的存储配置,请运行以下命令
root:
# ocrconfig -delete old_storage_location
对每个配置的OCR运行此命令。
下面的示例演示如何使用OCRCONFIG将两个ocr迁移到Oracle ASM。
# ocrconfig -add +new_disk_group
# ocrconfig -delete /ocrdata/ocr_1
# ocrconfig -delete /ocrdata/ocr_2
注:
•OCR继承磁盘组的冗余。如果您希望OCR具有高冗余,则必须在创建磁盘组时将其配置为具有高冗余。
•Oracle建议您将Oracle ASM的SPFILE放在这个新创建的OCR位置。
将Oracle群集注册表从Oracle ASM迁移到其他类型的存储
要将OCR从Oracle ASM迁移到其他存储类型,请执行以下操作:
1.确保升级到Oracle Clusterware 12c已完成。运行以下命令以验证当前运行的版本:
$ crsctl query crs activeversion
2.在共享或群集文件系统中创建具有以下权限的文件:root、oinstall、640。
注:
至少创建两个主存储位置的镜像,以消除OCR的单点故障。OCR最多支持五个位置。
3. 确保在挂载分区上至少有500 MB的空间。
4. 确保您创建的文件在集群中的所有节点上都是可见的。
5. 要将文件添加为OCR位置,请确保Oracle集群堆栈正在运行,并以root用户身份运行以下命令:
# ocrconfig -add file_location
如果添加多个OCR位置,可以多次运行此命令。此命令的每次连续运行都必须指向不同的文件位置。
6. 确保没有在ASM磁盘组上配置OCR备份位置。
要将OCR备份位置迁移到文件系统,可以作为root用户运行以下命令:
# ocrconfig –backuploc file_location
7.要删除不再使用的存储配置,请以root用户身份运行以下命令:
# ocrconfig -delete +asm_disk_group
如果配置了多个OCR位置,则可以多次运行此命令。
下面的示例演示如何使用OCRCONFIG将OCR从Oracle ASM迁移到NAS。
# ocrconfig -add /nas/ocr
对于未存储在Oracle ASM上的OCR,Oracle建议您在不同的设备上镜像OCR。
1.2 添加、替换、修复和删除Oracle群集注册表位置
使用OCRCONFIG管理OCR位置。
Oracle Clusterware的Oracle安装过程为您提供了自动镜像OCR的选项。您可以手动将镜像的ocr放在共享网络文件系统(NFS)或经Oracle认证的任何群集文件系统上。或者,您可以将OCR放在Oracle ASM上,并允许它根据您选择的冗余选项自动创建镜像。
如果您:
•升级到Oracle Clusterware 12c,但在升级过程中没有选择镜像OCR
•在Oracle Clusterware安装期间仅创建了一个OCR位置Oracle建议您配置:
•如果OCR配置在非镜像或非冗余存储上,则至少有三个OCR位置。如果底层存储不是RAID,Oracle强烈建议您镜像OCR。镜像可以帮助防止OCR成为单一故障点。
•如果在Oracle ASM磁盘组上配置了OCR,则至少有两个OCR位置。您应该在两个独立的磁盘组中配置OCR。通常这是工作区和恢复区。
•如果OCR配置在镜像硬件或第三方镜像卷上,则至少有两个OCR位置。
注:
•如果原始OCR位置不存在,则在运行ocrconfig-add或ocrconfig-replace命令之前,必须使用适当的权限创建一个空的(0字节)OCR位置。
•确保您在OCR配置中指定的OCR设备存在,并且这些OCR设备有效。
•确保指定的Oracle ASM磁盘组存在并已装载。
•新的OCR文件、设备或磁盘组必须可从群集中的所有活动节点访问。
除了镜像OCR位置外,管理OCR位置还包括:
•添加Oracle群集注册表位置
•删除Oracle群集注册表位置
•替换Oracle群集注册表位置
•修复本地节点上的Oracle群集注册表配置
•重写Oracle群集注册表数据丢失保护机制
注:
本节中的操作会影响整个集群中的OCR:这些操作会更改Linux和UNIX系统上OCR.loc文件中的OCR配置信息以及Windows系统上的注册表项。
但是,ocrconfig命令无法修改已关闭节点或未运行Oracle Clusterware的节点的OCR配置信息。
1.2.1 添加Oracle群集注册表位置
使用本节中的过程添加OCR位置。Oracle Clusterware最多可以管理五个冗余的OCR位置。
注:
如果OCR位于群集文件系统文件或网络文件系统上,请在执行本节中的过程之前创建一个空的(0字节)OCR位置文件。
作为root用户,运行以下命令将OCR位置添加到Oracle ASM或其他存储设备:
# ocrconfig -add +asm_disk_group | file_name
注:
在Linux和UNIX系统上,必须是root才能运行ocrconfig命令。在Windows系统上,用户必须是管理员组的成员。
1.2.2 删除Oracle群集注册表位置
若要删除OCR位置或失败的OCR位置,必须至少有一个其他OCR处于联机状态。您可以删除OCR位置以减少与OCR相关的开销,或者停止镜像OCR,因为您已将OCR移动到冗余存储(如RAID)。
以root用户身份执行以下过程以从Oracle Clusterware环境中删除OCR位置:
1.确保除要删除的OCR位置外,至少有一个OCR位置处于联机状态。
注意:
除非联机至少有一个其他活动的OCR位置,否则不要执行此OCR删除过程
2.在群集中的任何节点上运行以下命令以从Oracle ASM或其他位置删除OCR位置:
# ocrconfig -delete +ASM_disk_group | file_name
file_name变量可以是设备名,也可以是文件名。该命令更新运行Oracle集群的所有节点上的OCR配置。
注:
无法删除唯一配置的Oracle ASM OCR位置,该位置位于与Oracle ASM OCR备份位置不同的Oracle ASM磁盘组中。
1.2.3 替换Oracle群集注册表位置
如果必须更改现有的OCR位置,或将失败的OCR位置更改为工作位置,则如果所有剩余的OCR位置保持联机,则可以使用以下过程。ocrconfig-replace命令要求至少配置两个OCR位置。
要更改Oracle群集注册表位置,请执行以下操作:
完成以下步骤:
1.使用OCRCHECK实用程序,使用以下命令验证要替换的OCR以外的OCR副本是否联机:
$ ocrcheck
OCRCHECK显示所有已注册的OCR位置以及它们是否可用(联机)。如果OCR位置突然变得不可用,那么Oracle Clusterware可能需要很短的时间来显示状态的更改。
注:
要替换的OCR位置可以是联机或脱机。
2.使用以下命令验证Oracle Clusterware是否在要执行替换操作的节点上运行:
$ crsctl check crs
3.以root用户身份运行以下命令,使用目标文件或+ASM磁盘组替换当前OCR位置,以指示当前和目标OCR位置:
# ocrconfig -replace current_OCR_location -replacement new_OCR_location
如果联机配置的OCR位置少于两个,则前面的命令将失败。
如果只配置了一个OCR位置并联机,则必须首先添加新位置,然后删除失败的位置,如下所示:
# ocrconfig -add new_OCR_location
# ocrconfig -delete current_OCR_location
注:
如果您的群集配置在OCR所在的节点停止时发生更改,而Oracle Clusterware堆栈正在其他节点上运行,则OCR会检测配置更改,并通过更改OCR.loc文件的内容自行更正配置。
1.2.4 修复本地节点上的Oracle群集注册表配置
如果群集配置在该节点停止时发生更改,并且该节点是群集中唯一的成员,则可能需要修复OCR。
修复OCR涉及添加、删除或替换OCR位置。例如,如果作为当前Oracle RAC群集一部分的任何节点关闭,则必须更新已停止节点上的OCR配置,以便该节点在重新启动后重新加入群集。在重新启动的节点上已root用户使用以下命令,在该节点上,可以使用destination_file或+ASM_disk_group来指示当前和目标OCR位置:
# ocrconfig -repair -replace current_OCR_location -replacement target_OCR_location
注:
•无法修复运行Oracle群集就绪服务守护程序的节点上的OCR配置。
•使用ocrconfig-repair修复已停止节点上的OCR时,必须提供与其他节点上的OCR文件名相同的OCR文件名(应区分大小写)。
•如果运行ocrconfig-add |-repair |-replace命令,则必须可以访问要添加的设备、文件或Oracle ASM磁盘组。这意味着设备必须存在。必须创建空的(0字节)OCR位置,或者必须存在并装载Oracle ASM磁盘组。
1.2.5 重写Oracle群集注册表数据丢失保护机制
OCR有一种防止意外覆盖导致数据丢失的机制。如果配置了镜像OCR,并且Oracle Clusterware无法访问镜像OCR位置,并且也无法验证可用OCR位置是否包含最新配置,则Oracle Clusterware将阻止对可用OCR位置进行进一步修改。此外,该过程通过禁止Oracle Clusterware在只有一个OCR可用的节点上启动来防止覆盖。在这种情况下,Oracle数据库在Oracle企业管理器、Oracle Clusterware警报日志文件或两者中显示警报消息。如果此问题仅存在于一个节点,则可以使用其他节点启动群集数据库。
但是,如果无法启动环境中的任何群集节点,并且既不能修复OCR,也不能恢复对所有OCR位置的访问,则可以重写保护机制。以下列表中描述的过程使您能够使用可用的OCR位置启动群集。但是,重写保护机制可能会导致丢失在创建上一个已知良好状态时不可用的数据。
注意:
使用以下过程重写OCR可能会导致从上次对当前可访问的OCR进行已知良好的OCR更新到执行重写之间的OCR更新丢失。换句话说,如果用于执行覆盖的OCR位置不包含群集环境的最新配置更新,则运行ocrconfig-overwrite命令可能会导致数据丢失。
如果节点无法启动并且警报日志包含CLSD-1009和CLSD-1011消息,请执行以下过程覆盖OCR。
1.试图解决CLSD-1009和CLSD-1011消息的原因。
将节点的OCR配置(Linux和UNIX系统上的OCR.loc以及Windows系统上的注册表)与运行Oracle Clusterware的其他节点进行比较。
•如果配置不匹配,请运行ocrconfig-repair。
•如果配置匹配,请确保节点可以通过在Linux和UNIX系统上运行ls命令来访问所有配置的OCR。在Windows上,如果OCR位置是一个文件,请使用dir命令,并运行GuiOracleObjectManager.exe以验证名称为的群集部分是否存在。
2.确保最新的OCR包含最新的OCR更新。
查看ocrdump命令的输出并确定它是否有您的最新更新。
3.如果无法解决导致CLSD消息的问题,请运行命令ocrconfig-overwrite启动节点。
1.3 备份Oracle群集注册表
本节介绍如何备份OCR内容并将其用于恢复。第一种方法使用自动生成的OCR副本,第二种方法允许您手动发出备份命令:
•自动备份:Oracle Clusterware每四小时自动创建一次OCR备份。在任何时候,Oracle数据库都会保留OCR的最后三个备份副本。创建备份的CRSD过程还为每一整天和每周之后创建并保留一个OCR备份。不能自定义备份频率或Oracle数据库保留的文件数。
•手动备份:在Oracle Clusterware堆栈所在的节点上运行ocrconfig-Manual backup命令,以强制Oracle Clusterware在任何时候执行OCR备份,而不是等待自动备份。必须以具有管理权限的用户身份运行该命令。当您想要按需获取二进制备份(例如在更改OCR之前)时,-manualbackup选项特别有用。OLR只支持手动备份。
当集群中的所有节点上的clusterware堆栈都关闭时,ocrconfig-showbackup命令列出的备份可能因节点而异。
注:
在节点上安装或升级Oracle Clusterware或将节点添加到群集后,当root.sh脚本完成时,它将备份OLR。
本节包括以下主题:
•列出备份文件
•更改备份位置
列出备份文件
运行以下命令列出备份文件:
ocrconfig -showbackup
ocrconfig -showbackup命令显示Oracle Clusterware创建的备份文件的备份位置、时间戳和原始节点名。默认情况下,-showbackup选项同时显示自动备份和手动备份的信息,但您可以包括auto或manual标志,以便分别仅显示自动备份信息或手动备份信息。
运行以下命令检查内容并验证备份文件的完整性:
ocrdump -backupfile backup_file_name
您可以使用任何备份软件将自动生成的备份文件每天至少复制一次到主OCR所在的其他设备。
从Oracle Clusterware 12c release 2(12.2)起,生成备份的默认位置是Oracle ASM磁盘组,可以在Oracle ASM磁盘组之间进行更改,但不能更改为本地文件系统。Oracle建议将使用OCRCONFIG实用程序创建的备份文件作为使用标准操作系统或第三方工具的操作系统备份的一部分。
更改备份位置
运行以下命令以更改OCR创建备份的位置:
# ocrconfig -backuploc file_name
前面命令中的file_name变量可以是所有节点都可以访问的完整目录路径名,也可以是装载在所有节点上的Oracle ASM磁盘组。在将OCR备份位置更改为Oracle ASM磁盘组之前,必须将OCR迁移到Oracle ASM。只有在单独的磁盘组中至少有一个Oracle ASM OCR位置时,才能将OCR备份位置更改为Oracle ASM磁盘组。
例如,要在目录中指定OCR备份位置,请执行以下操作:
# ocrconfig -backuploc Grid_home/cdata/cluster3
要在Oracle ASM磁盘组中指定OCR备份位置,请执行以下操作:
# ocrconfig –backuploc +bkupdg
注:
在Linux和UNIX系统上,您必须是root用户才能运行大多数但不是所有ocrconfig命令选项。在Windows系统上,用户必须是管理员组的成员。
1.4 还原Oracle群集注册表
为您的平台恢复OCR的过程。
如果资源失败,则在尝试还原OCR之前,请重新启动该资源。作为确定OCR失败的验证,运行ocrcheck,如果命令返回失败消息,则主OCR和OCR镜像都失败。
注意:
•您不能使用-import选项从OCR备份文件恢复配置,这在“使用导出和导入命令管理Oracle集群注册表”中有解释。相反,您必须使用- restore选项,如下面的部分所述。
•如果您将OCR存储在ASM磁盘组中,而磁盘组不可用,那么您必须恢复并挂载ASM磁盘组。
•在Linux或UNIX系统上恢复Oracle集群注册表
•在Windows系统上恢复Oracle集群注册表
•在Oracle重启环境中恢复Oracle集群注册表
在Linux或UNIX系统上恢复Oracle集群注册表
使用此过程可在Linux或UNIX系统上还原OCR。
如果您将OCR存储在Oracle ASM磁盘组上,而该磁盘组已损坏,则必须使用Oracle ASM实用程序恢复Oracle ASM磁盘组,然后在恢复OCR之前重新挂载磁盘组。通过运行ocrconfig -restore命令来恢复OCR,如下面的过程中所指示的那样。
注意:
如果原始OCR位置不存在,那么在运行ocrconfig -restore命令之前,必须创建一个与原始OCR位置同名的空(0字节)OCR位置。
使用以下过程在Linux或UNIX系统上还原OCR:
1.在一个节点上运行以下命令,列出集群中的节点:
$ olsnodes
2.根据OCR是位于Oracle ASM磁盘组中还是位于网络连接存储(NAS)中,通过在所有节点上以root用户身份运行以下命令之一来停止Oracle Clusterware:
如果OCR位于Oracle ASM磁盘组中,则停止Oracle Clusterware守护进程:
# crsctl stop crs
如果前面的命令返回由于OCR损坏而导致的任何错误,则通过在所有节点上以root用户身份运行以下命令来强制停止Oracle Clusterware:
# crsctl stop crs –f
3.如果要将OCR还原到群集文件系统或网络文件系统,请以root用户身份运行以下命令,以使用可以在“Listing Backup Files”中标识的OCR备份还原OCR:
# ocrconfig -restore file_name
注:
如果OCR备份文件位于Oracle ASM磁盘组中,请确保该磁盘组存在并已挂载
完成此步骤后,继续执行步骤11。
如果不将OCR还原到群集文件系统或网络文件系统,请继续下一步。
4.以独占模式启动一个节点上的Oracle Clusterware堆栈,方法是以root用户身份运行以下命令:
# crsctl start crs -excl –nocrs
nocrs选项确保CRSD进程和OCR不会从Oracle集群栈的其余部分开始。
忽略显示的任何错误。
5. 运行以下命令检查CRSD是否正在运行:
$ crsctl status resource ora.crsd -init
如果CRSD正在运行,那么通过运行以下命令作为root来停止它:
# crsctl stop resource ora.crsd –init
警告:
不要在任何其他命令中使用-init标志,除非我的Oracle支持指示这样做。
6. 要将OCR恢复到Oracle ASM磁盘组,必须首先使用SQL*Plus创建一个磁盘组,该磁盘组的名称与要恢复的磁盘组相同,并将其挂载到本地节点上。
如果您不能在本地挂载磁盘组,那么运行以下SQL*Plus命令
SQL> drop diskgroup disk_group_name force including contents;
7. 使用OCR备份来恢复OCR,您可以在“Listing Backup Files”中识别该OCR备份,方法是作为root用户运行以下命令:
# ocrconfig -restore file_name
注意:
如果原始的OCR位置不存在,那么您必须在运行ocrconfig - restore命令之前创建一个空的(0字节)OCR位置。
•确保您在OCR配置中指定的OCR设备存在,并且这些OCR设备是有效的。
•如果您在Oracle ASM磁盘组中配置了OCR,那么请确保存在并挂载Oracle ASM磁盘组。
•如果OCR备份文件位于Oracle ASM磁盘组中,则确保磁盘组存在并已挂载。
8. 验证OCR的完整性:
# ocrcheck
9. 停止Oracle集群在节点上的独占模式运行:
# crsctl stop crs -f
10. 在集群中没有运行ocrconfig -restore命令的所有节点上以root用户身份运行该命令。例如,如果您在一个四节点集群的节点1上运行了ocrconfig -restore命令,那么您必须在节点2、3和4上运行ocrconfig -repair -replace命令。
11. 在所有节点上以root用户身份运行以下命令,开始启动Oracle集群:
# crsctl start crs
12. 运行以下CVU命令,验证作为集群一部分配置的所有集群节点的OCR完整性:
$ cluvfy comp ocr -n all -verbose
在Windows系统上恢复Oracle集群注册表
使用此过程在Windows系统上恢复OCR。
如果您将OCR存储在Oracle ASM磁盘组上,而该磁盘组已损坏,则必须使用Oracle ASM实用程序恢复Oracle ASM磁盘组,然后在恢复OCR之前重新挂载磁盘组。通过运行ocrconfig -restore命令恢复OCR。
注意:
如果原始OCR位置不存在,那么在运行ocrconfig -restore命令之前,必须创建一个与原始OCR位置同名的空(0字节)OCR位置。
使用以下程序在Windows系统上恢复OCR:
1. 在一个节点上运行以下命令,列出集群中的节点:
C:\>olsnodes
2. 通过在所有节点上作为Administrators组的成员运行以下命令来停止Oracle集群:
C:\>crsctl stop crs
如果前面的命令返回任何由于OCR损坏而导致的错误,则通过在所有节点上作为Administrators组的成员运行以下命令来停止Oracle Clusterware:
C:\>crsctl stop crs –f
3. 以独占模式在一个节点上启动Oracle集群软件堆栈,方法是作为Administrators组的成员运行以下命令:
C:\>crsctl start crs -excl -nocrs
nocrs选项确保CRSD进程和OCR不会从Oracle Clusterware堆栈的其余部分开始。
忽略显示的任何错误。
4.以Administrators组的成员身份运行以下命令,使用在“Listing Backup Files”中标识的OCR备份文件还原OCR:
C:\>ocrconfig -restore file_name
确保在OCR配置中指定的OCR设备存在,并且这些OCR设备有效。
注:
•确保您在OCR配置中指定的OCR设备存在,并且这些OCR设备有效。
•确保指定的Oracle ASM磁盘组存在并已装载。
5.验证OCR的完整性:
C:\>ocrcheck
6.在以独占模式运行的节点上停止Oracle Clusterware:
C:\>crsctl stop crs –f
7.作为Administrators组的成员在所有节点上运行以下命令,开始启动Oracle Clusterware:
C:\>crsctl start crs
8.运行以下群集验证实用程序(CVU)命令以验证群集数据库中所有节点的OCR完整性:
C:\>cluvfy comp ocr -n all –verbose
在Oracle重新启动环境中还原Oracle群集注册表
使用以下过程可以在Oracle重新启动环境中还原OCR。
注:
•OCR用于向后兼容。
•一旦创建了OCR位置,它就不会在Oracle重启环境中得到更新。
•如果已备份Oracle Restart home,并且出现故障,则恢复Oracle Restart home将恢复OCR。
1.在所有节点上以root用户身份运行以下命令,以停止Oracle高可用服务:
# crsctl stop has [-f]
2.运行ocrcheck -config命令确定OCR位置,然后在该位置创建一个具有适当权限的空(0字节)OCR位置。
通过以root用户身份运行以下命令来还原OCR:
# crsctl pin css -n host_name
注:
确保在OCR配置中指定的OCR设备存在,并且这些OCR设备有效
4.运行ocrcheck命令以验证OCR的完整性:
5.在所有节点上运行以下命令,启动Oracle高可用服务:
$ crsctl start has
1.5 诊断Oracle群集注册表问题
使用OCRDUMP和OCRCHECK实用程序诊断OCR问题。
相关主题
•OCRDUMP实用程序语法和选项
•使用OCRCHECK实用程序
OCRCHECK实用程序显示OCR块格式的版本、可用和使用的总空间、OCRID以及您配置的OCR位置。
1.6 使用导出和导入命令管理Oracle群集注册表
除了使用自动创建的OCR备份文件外,还应在进行重大配置更改之前和之后导出OCR内容,例如从环境中添加或删除节点、修改Oracle Clusterware资源以及升级、降级或创建数据库。通过使用ocrconfig-export命令执行此操作,该命令将OCR内容导出为文件格式。
注意:
请注意以下恢复OCR的限制:
•ocrconfig-restore生成的文件格式与ocrconfig-export生成的文件格式不兼容。ocrconfig-export和ocrconfig-import命令是兼容的。ocrconfig-manualbackup和ocrconfig-restore命令是兼容的。这两种文件格式不兼容,不能互换使用。
•导出OCR时,Oracle建议在名称字符串中包含“OCR”、群集名称和时间戳。例如:
ocr_mycluster1_20090521_2130_export
注:
您所做的大多数配置更改不仅会更改OCR内容,配置更改还会导致文件和数据库对象的创建。
在恢复OCR时,这些更改中的一些通常不会恢复。如果某些配置更改应失败,请不要将OCR还原为还原到以前配置的更正。这可能会导致OCR位置的内容与系统其他部分的状态不匹配。
在Linux或UNIX系统上导入Oracle群集注册表内容
使用以下过程可以在Linux或UNIX系统上导入OCR。
注意:
此过程假设集群中的所有节点都默认安装了Oracle集群软件,其中启用了Oracle集群软件自动启动。
1. 在一个节点上运行以下命令,列出集群中的节点:
$ olsnodes
2. 通过在所有节点上以root用户身份运行以下命令来停止Oracle集群:
# crsctl stop crs
如果前面的命令返回任何由于OCR损坏而导致的错误,则通过在所有节点上以根用户身份运行以下命令来停止Oracle Clusterware:
# crsctl stop crs –f
3. 以独占模式在一个节点上启动Oracle集群堆栈,以root用户身份运行以下命令:
# crsctl start crs -excl
忽略显示的任何错误。
检查CRSD是否正在运行。Root用户停止它运行以下命令:
# crsctl stop resource ora.crsd -init
4. 以root用户身份运行以下命令导入OCR:
# ocrconfig -import file_name
如果要将OCR导入集群或网络文件系统,请跳到步骤7。
注意:
如果原始的OCR位置不存在,那么您必须在运行ocrconfig -import命令之前创建一个空的(0字节)OCR位置。
•确保您在OCR配置中指定的OCR设备存在,并且这些OCR设备是有效的。
•如果您在Oracle ASM磁盘组中配置了OCR,那么请确保存在并挂载Oracle ASM磁盘组。
5. 验证OCR的完整性:
# ocrcheck
6. 停止Oracle集群在节点上的独占模式运行:
# crsctl stop crs –f
7. 在所有节点上以根用户身份运行以下命令,开始启动Oracle集群:
# crsctl start crs
8. 运行以下CVU命令,验证作为集群一部分配置的所有集群节点的OCR完整性:
$ cluvfy comp ocr -n all –verbose
在Windows系统上导入Oracle集群注册表内容
使用此过程在Windows系统上导入OCR。
1. 在一个节点上运行以下命令,列出集群中的节点:
C: \ > olsnodes
2. 通过在所有节点上作为Administrators组的成员运行以下命令来停止Oracle集群:
C:\>crsctl stop crs
如果前面的命令返回任何由于OCR损坏而导致的错误,则通过在所有节点上作为Administrators组的成员运行以下命令来停止Oracle Clusterware:
C:\>crsctl stop crs -f
3. 以独占模式在一个节点上启动Oracle集群软件堆栈,方法是作为Administrators组的成员运行以下命令:
C:\>crsctl启动crs -excl
忽略显示的任何错误。
检查CRSD是否正在运行。如果是,请作为Administrators组的成员运行以下命令来停止它:
C:\>crsctl start crs -excl
4. 通过作为Administrators组的成员运行以下命令来导入OCR:
C:\>ocrconfig -import file_name
确保您在OCR配置中指定的OCR设备存在,并且这些OCR设备是有效的。
5. 验证OCR的完整性:
C: \ > ocrcheck
6. 停止Oracle集群在节点上的独占模式运行:
C:\>crsctl stop crs –f
7. 在所有节点上作为Administrators组的成员运行以下命令,开始启动Oracle集群:
C:\>crsctl start crs
8. 运行以下集群验证实用工具(CVU)命令,以验证集群数据库中所有节点的OCR完整性:
C:\>cluvfy comp ocr -n all –verbose
1.7 Oracle本地注册表
在Oracle Clusterware 12c中,集群中的每个节点都有一个用于节点特定资源的本地注册表,称为Oracle本地注册表(OLR),在Oracle Clusterware安装OCR时安装并配置该注册表。每个节点上的多个进程对它们所驻留的节点特定的OLR具有同时读写访问权,而不管Oracle Clusterware是在运行还是完全正常工作。
默认情况下,OLR位于每个节点上的Grid_home/cdata/host_name.OLR。使用OCRCHECK、OCRDUMP和OCRCONFIG实用程序作为根目录管理OLR使用-local选项。
•您可以使用OCRCHECK实用程序检查本地节点上OLR的状态,如下所示:
•您可以使用OCRDUMP实用程序将本地节点上OLR的内容显示到启动程序的文本终端,如下所示:
# ocrdump -local -stdout
•您可以使用OCRCONFIG实用程序在本地节点上的OLR上执行管理任务。
-导出OLR到一个文件:
注:
*Oracle建议您使用-manualbackup和-restore命令,而不是-import和-export命令。
*导出OLR时,Oracle建议在名称字符串中包含“OLR”、主机名和时间戳。例如:
olr_myhost1_20090603_0130_export
-导入指定的文件到OLR:
# ocrconfig –local –import file_name
-手动备份OLR:
# ocrconfig –local –manualbackup
注意:
Oracle集群在安装或升级后备份OLR,默认情况下,此后定期备份OLR。在初始备份之后的任何时候,您都可以手动备份OLR。
Oracle还建议,当您将OCR从Oracle ASM迁移到其他存储时,或者当您将OCR从其他存储迁移到Oracle ASM时,创建一个新的备份。
OLR的默认备份位置位于Grid_home/cdata/host_name路径中。
-查看OLR备份文件的内容:
ocrdump -local -backupfile olr_backup_file_name
-更改OLR备份位置:
ocrconfig -local -backuploc new_olr_backup_path
-恢复OLR
# crsctl stop crs
# ocrconfig -local -restore file_name
# ocrcheck -local
# crsctl start crs
$ cluvfy comp olr
1.8 升级和降级Oracle群集注册表配置
升级Oracle Clusterware时,它会自动运行ocrconfig-upgrade命令。要降级,请遵循每个组件的降级说明,并使用ocrconfig-degrade命令降级OCR。如果要升级OCR,则可以使用OCRCHECK实用程序验证OCR的完整性。
二:管理投票文件(Voting Files)
本节包括以下主题,用于管理群集中的投票文件:
•在Oracle ASM上存储投票文件
•备份投票文件
•恢复投票文件
•添加/删除或迁移投票文件
警告:
用于备份和恢复以前版本的Oracle Clusterware中的投票文件的dd命令在Oracle Clusterware 12c中不受支持。恢复使用dd或cp命令复制的投票文件可以防止Oracle Clusterware 12c堆栈出现。使用本章中描述的备份和恢复过程来确保正确的投票文件功能。
注意:
•投票文件管理需要一个有效的和工作的OCR。在添加、删除、替换或恢复投票文件之前,以root用户身份运行这个命令。如果OCR不可用或已损坏,则必须按照“恢复Oracle集群注册表”中的描述恢复OCR。
如果你从以前的Oracle Clusterware升级到Oracle Clusterware 12c,并且你想在一个ASM磁盘组中存储投票文件,那么你必须将ASM兼容性属性设置为12.1.0.0。
2.1 在Oracle ASM上存储投票文件
如果选择将投票文件存储在Oracle ASM中,则Oracle ASM会将群集的所有投票文件存储在您选择的磁盘组中。
Oracle ASM管理投票文件的方式与其存储的其他文件不同。不能使用存储在Oracle ASM中的投票文件和不存储在同一群集的Oracle ASM中的投票文件。
在Oracle ASM上配置投票文件后,只能使用crsctl replace votedisk命令更改投票文件的配置。即使没有有效的投票文件,情况也是如此。尽管crsctl query css votedisk报告使用中的零票磁盘,Oracle Clusterware仍然记得Oracle ASM正在使用并且需要replace动词这一事实。只有在使用replace谓词将投票文件移回非Oracle ASM存储之后,这些谓词才能再次使用add css votedisk和delete css votedisk。
可以存储在特定Oracle ASM磁盘组中的投票文件数取决于磁盘组的冗余度。
默认情况下,Oracle ASM会将每个投票文件放在磁盘组中其自己的故障组中。故障组是磁盘组中磁盘的子集。故障组定义共享组件的磁盘,这样,如果其中一个失败,则共享组件的其他磁盘也可能失败。可以将一组共享同一SCSI控制器的SCSI磁盘定义为故障组。故障组用于确定用于存储冗余数据的Oracle ASM磁盘。例如,如果为文件指定了双向镜像,则文件扩展数据块的冗余副本必须存储在单独的故障组中。
为Oracle ASM磁盘组选择的冗余级别决定了Oracle ASM如何镜像磁盘组中的文件,并决定了所需的磁盘数量和磁盘空间量。如果投票文件位于磁盘组中,则包含Oracle Clusterware文件(OCR和投票文件)的磁盘组的最小故障组数高于其他磁盘组,因为投票文件存储在仲裁故障组中。
仲裁失败组是一种特殊类型的失败组,用于存储Oracle Clusterware投票文件。仲裁失败组用于确保指定失败组的仲裁可用。当Oracle ASM装载包含Oracle Clusterware文件的磁盘组时,仲裁故障组用于确定如果丢失一个或多个故障组,是否可以装载磁盘组。仲裁失败组中的磁盘不包含用户数据,因此在确定存储用户数据的冗余要求时,不考虑仲裁失败组。
Oracle ASM flex disk group是支持Oracle ASM文件组和配额组的磁盘组类型。一般来说,除了在磁盘组级别之外,flex磁盘组还允许用户在数据库的粒度上管理存储。
冗余级别包括:
•外部冗余:外部冗余磁盘组至少需要一个磁盘设备。外部冗余磁盘组中的有效磁盘空间是其所有设备中磁盘空间的总和。
由于Oracle ASM不镜像外部冗余磁盘组中的数据,因此Oracle建议您对存储设备(如RAID)或提供自己的数据保护机制的其他类似设备使用外部冗余。
•正常冗余:正常冗余磁盘组至少需要两个磁盘设备(或两个故障组)。正常冗余磁盘组中的有效磁盘空间是其所有设备中磁盘空间总和的一半。
对于Oracle Clusterware文件,正常冗余磁盘组至少需要三个磁盘设备(故障组使用三个磁盘中的两个,仲裁故障组使用所有三个磁盘),并提供三个投票文件和一个OCR和OCR镜像。当使用普通冗余磁盘组时,群集可以在丢失一个故障组的情况下生存。
•高冗余:在高冗余磁盘组中,Oracle ASM使用三向镜像来提高性能并提供最高级别的可靠性。高冗余磁盘组至少需要三个磁盘设备(或三个故障组)。高冗余磁盘组中的有效磁盘空间是其所有设备中磁盘空间总和的三分之一。
对于Oracle Clusterware文件,高冗余磁盘组至少需要五个磁盘设备(故障组使用五个磁盘中的三个,仲裁故障组使用所有五个磁盘),并提供五个投票文件、一个OCR和两个OCR镜像。由于具有高冗余度,集群可以在两个故障组丢失的情况下生存。
使用crsctl replace votedisk命令,可以将给定的投票文件集从一个Oracle ASM磁盘组移动到另一个磁盘组,或移动到经过认证的文件系统上。如果将投票文件从一个Oracle ASM磁盘组移动到另一个,则可以通过将投票文件放置在与前一个磁盘组具有不同冗余级别的磁盘组中来更改投票文件的数量。
注意:
•不能直接影响一个磁盘组中投票文件的数量。
•不能使用crsctl添加|删除votedisk命令对存储在ASM磁盘组中的投票文件,因为ASM根据磁盘组的冗余级别管理投票文件的数量。
•如果投票文件存储在ASM磁盘组中,则无法将投票文件添加到集群文件系统。Oracle不支持在ASM中同时在同一集群的集群文件系统上直接设置投票文件。
2.2 备份投票文件
Oracle Clusterware会在任何配置更改过程中自动备份OCR中的投票文件数据,并自动将数据还原到您添加的任何投票文件中。
但是,如果所有投票文件都已损坏,则可以按照“还原投票文件”中的说明还原它们。
相关主题
•恢复投票文件
2.3 还原投票文件
如果所有投票文件都已损坏,则可以还原它们,如下所示:
1.如有必要,按照“还原Oracle群集注册表”中的说明还原OCR。
只有当OCR也已损坏或不可用时(例如OCR位于Oracle ASM上且磁盘组不再可用),才需要执行此步骤。
2.仅从一个节点以root用户身份运行以下命令,以独占模式启动Oracle Clusterware堆栈,该模式不要求投票文件存在或可用:
# crsctl start crs -excl
3.运行crsctl query css votedisk命令以检索当前定义的投票文件列表,如下所示:
如果所有投票文件都已损坏,则此列表可能为空,或者可能有标记为状态3或关闭的条目。
4.根据您存储投票文件的位置,执行以下操作之一:
•如果投票文件存储在Oracle ASM中,则运行以下命令将投票文件迁移到指定的Oracle ASM磁盘组:
crsctl replace votedisk +asm_disk_group
将投票文件迁移到的Oracle ASM磁盘组必须存在于Oracle ASM中。无论投票文件存储在Oracle ASM或其他存储设备中,都可以使用此命令。
•如果您没有在Oracle ASM中存储投票文件,则使用在上一步中获得的文件通用标识符(FUID)运行以下命令:
$ crsctl delete css votedisk FUID
添加投票文件,如下所示:
$ crsctl add css votedisk path_to_voting_disk
5.root用户停止crs
# crsctl stop crs
注:
如果Oracle Clusterware堆栈以独占模式运行,则使用-f选项强制关闭堆栈。
6.root用户启动crs
# crsctl start crs
2.4 添加、删除或迁移投票文件
安装Oracle Clusterware后,可以添加、删除和迁移投票文件。请注意,用于执行此操作的命令不同,具体取决于您的投票文件是位于Oracle ASM中,还是位于其他存储选项中。
修改存储在Oracle ASM中的投票文件
•要显示投票文件FUID和每个当前投票文件的文件路径,请运行
crsctl query css votedisk命令显示类似于以下内容的输出:
此命令返回磁盘序列号、磁盘状态、FUID、磁盘路径以及存储磁盘的Oracle ASM磁盘组的名称。
•要将投票文件从Oracle ASM迁移到备用存储设备,请使用以下命令指定要用其替换Oracle ASM磁盘组的非Oracle ASM存储设备的路径:
$ crsctl replace votedisk path_to_voting_disk
您可以在群集中的任何节点上运行此命令。
•要将未存储在Oracle ASM中的所有投票文件替换为Oracle ASM磁盘组中由Oracle ASM管理的投票文件,请运行以下命令:
$ crsctl replace votedisk +asm_disk_group
修改未存储在Oracle ASM上的投票文件
•要显示投票文件FUID和每个当前投票文件的文件路径,请运行以下命令:
该命令返回磁盘序列号、磁盘状态、FUID和磁盘路径,没有ASM磁盘组的名称。
•要添加一个或多个投票文件,运行以下命令,将path_to_voting_disk变量替换为一个或多个以空格分隔的完整投票文件路径:
$ crsctl add css votedisk path_to_voting_disk [...]
•若要将投票文件A替换为投票文件B,必须先添加投票文件B,然后删除投票文件A。若要添加新磁盘并删除现有磁盘,请运行以下命令,将path_To_voting_disk B变量替换为投票文件B的完全限定路径名:
$ crsctl add css votedisk path_to_voting_diskB -purge
-purge选项删除现有投票文件。
•要删除投票文件,请运行以下命令,指定要删除的投票文件的一个或多个空格分隔的投票文件fuid或逗号分隔的目录路径:
$ crsctl delete css votedisk {FUID | path_to_voting_disk[...]}
注:
如果群集已关闭,并且由于丢失投票文件而无法重新启动,则必须以根用户身份运行以下命令以独占模式启动CSS:
# crsctl start crs –excl
以独占模式启动CSS后,可以替换投票文件,如下所示:
# crsctl replace votedisk path_to_voting_disk
将投票文件迁移到Oracle ASM
要将投票文件迁移到Oracle ASM,请在以下命令中指定Oracle ASM磁盘组名称:
$ crsctl replace votedisk +asm_disk_group
您可以在群集中的任何节点上运行此命令。
验证投票文件位置
修改投票文件后,验证投票文件位置,如下所示:
$ crsctl query css votedisk
更多数据库相关学习资料,可以查看我的ITPUB博客,网名chenoracle:
http://blog.itpub.net/29785807/