Oracle集群软件管理-OCR和Voting Files管理

Oracle集群软件管理-OCR和Voting Files管理_wjb10000_51CTO博客

wjb100002020-08-18 12:24:08博主文章分类:Oracle专题©著作权

文章标签OCR文章分类Oracle数据库阅读数755

— 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

  1. 使用Oracle ASM 配置助手(ASMCA )在群集中的所有节点上配置和启动Oracle ASM 。

  2. 使用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 磁盘组已装载到群集中的所有节点上。

  1. 要将OCR 添加到Oracle ASM 磁盘组,请确保Oracle Clusterware 堆栈正在运行,并以root 用户身份运行以下命令:

ocrconfig -add +new_disk_group

如果添加多个OCR 位置,则可以多次运行此命令。最多可以有五个OCR 位置。但是,每次连续运行都必须指向不同的磁盘组。

  1. 要删除不再使用的存储配置,请运行以下命令

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

  1. 在共享或群集文件系统中创建具有以下权限的文件:root 、oinstall 、640 。

注:

至少创建两个主存储位置的镜像,以消除 OCR 的单点故障。 OCR 最多支持五个位置。

  1. 确保在挂载分区上至少有500 MB 的空间。

  2. 确保您创建的文件在集群中的所有节点上都是可见的。

  3. 要将文件添加为OCR 位置,请确保Oracle 集群堆栈正在运行,并以root 用户身份运行以下命令:

ocrconfig -add file_location

如果添加多个OCR 位置,可以多次运行此命令。此命令的每次连续运行都必须指向不同的文件位置。

  1. 确保没有在ASM 磁盘组上配置OCR 备份位置。

要将OCR 备份位置迁移到文件系统,可以作为root 用户运行以下命令:

ocrconfig –backuploc file_location

  1. 要删除不再使用的存储配置,请以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 删除过程

  1. 在群集中的任何节点上运行以下命令以从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 位置可以是联机或脱机。

  1. 使用以下命令验证Oracle Clusterware 是否在要执行替换操作的节点上运行:

$ crsctl check crs

  1. 以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 以验证名称为的群集部分是否存在。

  1. 确保最新的OCR 包含最新的OCR 更新。

查看ocrdump 命令的输出并确定它是否有您的最新更新。

  1. 如果无法解决导致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

  1. 根据OCR 是位于Oracle ASM 磁盘组中还是位于网络连接存储(NAS )中,通过在所有节点上以root 用户身份运行以下命令之一来停止Oracle Clusterware :

如果OCR 位于Oracle ASM 磁盘组中,则停止Oracle Clusterware 守护进程:

crsctl stop crs

如果前面的命令返回由于OCR 损坏而导致的任何错误,则通过在所有节点上以root 用户身份运行以下命令来强制停止Oracle Clusterware :

crsctl stop crs –f

  1. 如果要将OCR 还原到群集文件系统或网络文件系统,请以root 用户身份运行以下命令,以使用可以在“Listing Backup Files ”中标识的OCR 备份还原OCR :

ocrconfig -restore file_name

注:

如果 OCR 备份文件位于 Oracle ASM 磁盘组中,请确保该磁盘组存在并已挂载

完成此步骤后,继续执行步骤11 。

如果不将OCR 还原到群集文件系统或网络文件系统,请继续下一步。

  1. 以独占模式启动一个节点上的Oracle Clusterware 堆栈,方法是以root 用户身份运行以下命令:

crsctl start crs -excl –nocrs

nocrs 选项确保CRSD 进程和OCR 不会从Oracle 集群栈的其余部分开始。

忽略显示的任何错误。

  1. 运行以下命令检查CRSD 是否正在运行:

$ crsctl status resource ora.crsd -init

如果CRSD 正在运行,那么通过运行以下命令作为root 来停止它:

crsctl stop resource ora.crsd –init

警告 :

不要在任何其他命令中使用 -init 标志,除非我的 Oracle 支持指示这样做。

  1. 要将OCR 恢复到Oracle ASM 磁盘组,必须首先使用SQL*Plus 创建一个磁盘组,该磁盘组的名称与要恢复的磁盘组相同,并将其挂载到本地节点上。

如果您不能在本地挂载磁盘组,那么运行以下SQL*Plus 命令

SQL> drop diskgroup disk_group_name force including contents;

  1. 使用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 磁盘组中,则确保磁盘组存在并已挂载。

  1. 验证OCR 的完整性:

ocrcheck

  1. 停止Oracle 集群在节点上的独占模式运行:

crsctl stop crs -f

  1. 在集群中没有运行ocrconfig -restore 命令的所有节点上以root 用户身份运行该命令。例如,如果您在一个四节点集群的节点1 上运行了ocrconfig -restore 命令,那么您必须在节点2 、3 和4 上运行ocrconfig -repair -replace 命令。

  2. 在所有节点上以root 用户身份运行以下命令,开始启动Oracle 集群:

crsctl start crs

  1. 运行以下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

  1. 通过在所有节点上作为Administrators 组的成员运行以下命令来停止Oracle 集群:

C:>crsctl stop crs

如果前面的命令返回任何由于OCR 损坏而导致的错误,则通过在所有节点上作为Administrators 组的成员运行以下命令来停止Oracle Clusterware:

C:>crsctl stop crs –f

  1. 以独占模式在一个节点上启动Oracle 集群软件堆栈,方法是作为Administrators 组的成员运行以下命令:

C:>crsctl start crs -excl -nocrs

nocrs 选项确保CRSD 进程和OCR 不会从Oracle Clusterware 堆栈的其余部分开始。

忽略显示的任何错误。

  1. 以Administrators 组的成员身份运行以下命令,使用在“Listing Backup Files ”中标识的OCR 备份文件还原OCR :

C:>ocrconfig -restore file_name

确保在OCR 配置中指定的OCR 设备存在,并且这些OCR 设备有效。

注:

•确保您在OCR 配置中指定的OCR 设备存在,并且这些OCR 设备有效。

•确保指定的Oracle ASM 磁盘组存在并已装载。

  1. 验证OCR 的完整性:

C:>ocrcheck

  1. 在以独占模式运行的节点上停止Oracle Clusterware :

C:>crsctl stop crs –f

  1. 作为Administrators 组的成员在所有节点上运行以下命令,开始启动Oracle Clusterware :

C:>crsctl start crs

  1. 运行以下群集验证实用程序(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]

  1. 运行ocrcheck -config 命令确定OCR 位置,然后在该位置创建一个具有适当权限的空(0 字节)OCR 位置。

通过以root 用户身份运行以下命令来还原OCR :

crsctl pin css -n host_name

注:

确保在 OCR 配置中指定的 OCR 设备存在,并且这些 OCR 设备有效

  1. 运行ocrcheck 命令以验证OCR 的完整性:

  2. 在所有节点上运行以下命令,启动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

  1. 通过在所有节点上以root 用户身份运行以下命令来停止Oracle 集群:

crsctl stop crs

如果前面的命令返回任何由于OCR 损坏而导致的错误,则通过在所有节点上以根用户身份运行以下命令来停止Oracle Clusterware:

crsctl stop crs –f

  1. 以独占模式在一个节点上启动Oracle 集群堆栈,以root 用户身份运行以下命令:

crsctl start crs -excl

忽略显示的任何错误。

检查CRSD 是否正在运行。Root 用户停止它运行以下命令:

crsctl stop resource ora.crsd -init

  1. 以root 用户身份运行以下命令导入OCR:

ocrconfig -import file_name

如果要将OCR 导入集群或网络文件系统,请跳到步骤7 。

注意 :

如果原始的 OCR 位置不存在,那么您必须在运行 ocrconfig -import 命令之前创建一个空的 (0 字节 )OCR 位置。

•确保您在 OCR 配置中指定的 OCR 设备存在,并且这些 OCR 设备是有效的。

•如果您在 Oracle ASM 磁盘组中配置了 OCR ,那么请确保存在并挂载 Oracle ASM 磁盘组。

  1. 验证OCR 的完整性:

ocrcheck

  1. 停止Oracle 集群在节点上的独占模式运行:

crsctl stop crs –f

  1. 在所有节点上以根用户身份运行以下命令,开始启动Oracle 集群:

crsctl start crs

  1. 运行以下CVU 命令,验证作为集群一部分配置的所有集群节点的OCR 完整性:

$ cluvfy comp ocr -n all –verbose

在 Windows 系统上导入 Oracle 集群注册表内容

使用此过程在Windows 系统上导入OCR 。

  1. 在一个节点上运行以下命令,列出集群中的节点:

C: \ > olsnodes

  1. 通过在所有节点上作为Administrators 组的成员运行以下命令来停止Oracle 集群:

C:>crsctl stop crs

如果前面的命令返回任何由于OCR 损坏而导致的错误,则通过在所有节点上作为Administrators 组的成员运行以下命令来停止Oracle Clusterware:

C:>crsctl stop crs -f

  1. 以独占模式在一个节点上启动Oracle 集群软件堆栈,方法是作为Administrators 组的成员运行以下命令:

C:>crsctl 启动crs -excl

忽略显示的任何错误。

检查CRSD 是否正在运行。如果是,请作为Administrators 组的成员运行以下命令来停止它:

C:>crsctl start crs -excl

  1. 通过作为Administrators 组的成员运行以下命令来导入OCR:

C:>ocrconfig -import file_name

确保您在OCR 配置中指定的OCR 设备存在,并且这些OCR 设备是有效的。

  1. 验证OCR 的完整性:

C: \ > ocrcheck

  1. 停止Oracle 集群在节点上的独占模式运行:

C:>crsctl stop crs –f

  1. 在所有节点上作为Administrators 组的成员运行以下命令,开始启动Oracle 集群:

C:>crsctl start crs

  1. 运行以下集群验证实用工具(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 上且磁盘组不再可用),才需要执行此步骤。

  1. 仅从一个节点以root 用户身份运行以下命令,以独占模式启动Oracle Clusterware 堆栈,该模式不要求投票文件存在或可用:

crsctl start crs -excl

  1. 运行crsctl query css votedisk 命令以检索当前定义的投票文件列表,如下所示:

如果所有投票文件都已损坏,则此列表可能为空,或者可能有标记为状态3 或关闭的条目。

  1. 根据您存储投票文件的位置,执行以下操作之一:

•如果投票文件存储在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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值