Oracle 11g OCM考试考点分析 管理Oracle 集群

本文永久链接地址:https://www.askmac.cn/archives/oracle-11g-ocm-manage-clusterware.html

 

 

15 管理Oracle 集群

 

15.1 目标

在完成这个课程后,你应该可以:

  • 熟练的描述集群管理
  • 演示OCR备份和恢复技术

 

15.2 管理Oracle 集群

  • 命令行工具

–crsctl管理集群相关的操作:

-启动和关闭Oracle集群

-启用和禁用Oracle集群后台进程

-注册集群资源

-srvctl 管理Oracle 资源相关操作

-启动和关闭数据库实例和服务

在Oracle Grid安装的home路径下的命令行工具crsctl和srvctl用来管理Oracle集群。使用crsctl可以监控和管理任何集群节点的集群组件和资源。srvctl工具提供了类似的功能,来监控和管理Oracle相关的资源,例如数据库实例和数据库服务。crsctl命令只能是集群管理者来运行,srvctl命令可以是其他用户,例如数据库管理员来使用。

15.3 控制 Oracle 集群

 

crsctl 工具可以被用来控制Oracle集群。

  • 在指定的节点上启动和关闭Oracle 集群:
crsctl start crs
crsctl stop crs
  • 在指定的节点上启用或者禁用Oracle 集群
crsctl enable crs
crsctl disable crs

当一个节点上包含的Oracle 集群被启动,Oracle 集群包含的脚本会自动的通过/etc/init.d/ohasd启动脚本启动。当crsctl工具被用来禁用Cluster Ready Services(crs)自启动时,相关的启动状态信息会被放置到SLCS_SRC控制文件,防止随机器重启而启动。使用下列语法来检查CRS的状态:

crsctl check crs

在应用补丁或者计划内的中断时,你可能需要手动控制Oracle集群的堆栈。你可以使用crsctl stop crs命令停止Oracle集群和使用crsctl start crs命令启动。

 

15.4 验证Oracle 集群的状态

crsctl 工具可以被用来验证Oracle 集群的状态

  • 在每个节点上决定整体的健康:
crsctl check crs

 

  • 检查节点上的Cluster Synchronization Services(CSS)服务
crsctl check cluster

 

crsctl 工具可以被用来在指定的节点和跨节点上验证集群的状态。crsctl相关的控制命令需要root身份,check 命令不需要root身份,并且可以被Oracle集群软件所有者用户执行。在指定的节点上运行crsctl check crs 命令可以检查整体的健康。也可使用单个进程命令来对进程进行检查,crsctl check <daemon> (crsd,evmd和cssd)

 

决定 Oracle 集群控制文件的位置

 

2个Oracle 集群主要的配置文件类型是仲裁盘和 Oracle Cluster Registry(OCR)

  • 使用下列方式决定仲裁盘的位置:
crsctl query css votedisk
  • 决定OCR的位置:
cat /etc/oracle/ocr.loc
ocrconfig_loc=+OCR

local_only=FALSE

 

Oracle 集群使用2种主要文件类型:仲裁盘和OCR。每个可以有多个副本。可以使用crsctl query css votedisk命令在任何节点上来决定仲裁盘的位置。这个不需要CSS后台进程是启动的,并且这个命令可以被Gird的拥有者执行。因为OCR文件总是在共享存储上面,所以可以在任何节点上使用 cat /etc/oracle/ocr.loc来确定OCR的位置。

注意:OCR 也可以使用ocrcheck 工具来放置,其中使用的路径是在PATH环境变量中提供的路径。

 

 

检查Oracle 集群配置文件的完整性

下面的命令可以用来检查Oracle集群配置文件的完整性

  • 检查ocssd.log 中仲裁盘的问题
grep voting <grid_home>/log/<hostname>/cssd/ocssd.log
  • 使用cluvfy工具或者ocrcheck命令来检查OCR的完整性
cluvfy comp ocr –n all -verbose
ocrcheck

 

15.5 备份和恢复仲裁盘

  • 在Oracle 集群 11g R2中,仲裁盘数据是作为任何配置变更的一部分自动的在OCR中备份。
  • 仲裁盘数据在任何仲裁盘增加时自动的重建。
  • 使用dd来备份和重建仲裁盘可能会导致仲裁盘的丢失!
  • 在非ASM存储上增加或移除仲裁盘,使用下列命令:
# crsctl delete css votedisk path_to_voting_disk
# crsctl add css votedisk path_to_voting_disk

 

备份仲裁盘

在之前的版本,使用dd命令进行仲裁盘备份时安装后的必须任务。在Oracle 集群 11gR2,使用dd命令备份和重建仲裁盘将可能导致丢失仲裁盘,所以这个步骤不被支持。

手动备份仲裁盘将不再需要,因为仲裁盘数据会自动的作为任何配置变更在OCR中备份,并且仲裁盘数据在任何增加仲裁盘时自动的重建。

恢复仲裁盘

如果你在非ASM存储上有多个仲裁盘,你可以使用下列命令来移除裁盘,和将其增加会你的环境,path是仲裁盘的绝对路径:

 

# crsctl delete css votedisk path_to_voting_disk

# crsctl add css votedisk path_to_voting_disk

注意:你可以不关闭集群,将仲裁盘从非ASM存储迁移到ASM上。使用ASM磁盘组来管理仲裁盘,你必须设置compatible.asm属性为11.2.0.0

 

增加,删除或迁移仲裁盘

作为root用户使用下列命令来增加一个或多个仲裁盘到非ASM存储:

# crsctl add css votedisk path_to_voting_disk [...]

增加仲裁盘到ASM:

# crsctl replace votedisk +asm_disk_group

在非ASM存储上,使用仲裁盘B替换仲裁盘A,首先增加仲裁盘B,然后删除仲裁盘A:

# crsctl add css votedisk path_to_voting_diskB# crsctl delete css votedisk path_to_voting_diskA

使用crsctl replace votedisk命令可以替换ASM中的仲裁盘。使用这个命令你不需要删除任何仲裁盘。

使用root用户执行下列命令来移除一个仲裁盘,替换voting_disk_GUID变量为一个或多个空格分隔的,你想移除的全局唯一磁盘表示符(GUID):

# crsctl delete css votedisk voting_disk_GUID

 

将仲裁盘从非ASM迁移到ASM或者反过来,需要在下列命令中指定ASM磁盘组名称或到非ASM存储设备的路径:

crsctl replace votedisk {+asm_disk_group | path_to_voting_disk}

你可以在集群中的任意节点上运行这个命令。

 

15 .6 定位OCR自动 备份

  • OCR 是自动的备份的
  • 只有一个节点执行备份
  • 决定节点和备份的位置:
ocrconfig -showbackup auto
  • 由于中断,文件可能会在节点中传播
  • 备份频率和保留策略:

-每4小时:CRS保存至少3个副本

-在每天的最后:CRS保存至少2个副本

-在每周的最后:CRS保存至少2个副本

储存在OCR中的信息比在仲裁盘中的更灵活。Oracle集群自动的对OCR文件执行常规的备份。它们是物理备份。只有一个节点负载执行这些备份,但是这个任务在发生中断的时候,可以传输到集群中任意其他的节点上。每个自动产生的OCR备份文件默认目标位置在<GridHome>/cdata/<cluster name>目录中。

自动的备份是每4小时调度一次,但是只有一定数量的文件被保留。对于4小时间隔备份来说,只保留最近3个备份,最新的备份会覆盖最旧的备份。在每天的最后,一个备份会生成,并且保留最近的2个。在一周的最后,一个备份产生,并且保留最近的2个。总之,需要存储的自动备份不应该超过7个:4小时的,8小时的,12小时的,24小时的,48小时的,7天的,14天的。4小时间隔的备份不是基于天的,是集群启动时间的一个偏移时间。

备份文件的名称不能变更,其名称如下:backup00.ocr,backup01.ocr, backup02.ocr, day.ocr, day_.ocr, week.ocr 和 week_.ocr.

 

15.7 变更自动OCR备份位置

  • 自动备份的位置应该被变更到所有节点共享的位置。
ocrconfig –backuploc <path to shared CFS or NFS>
  • 这个备份位置可以同时被自动备份和手动备份使用。
  • 建议将这些文件包含到日常的备份任务中,备份到一个离线的位置。
  • 如果所有节点的CRS被停止,备份调度会暂挂。
  • 当重启时,一个备份不会立即产生并且备份时间被重置。

因为默认情况下,自动备份只在主节点上被执行到本地文件系统上,建议将OCR自动备份位置变更到集群中所有节点共享的位置,使用ocrconfig -backuploc <newlocation>命令。这个命令需要一个绝对路径参数来指定新位置。这个位置将被自动和手动备份使用。你不能自定义备份的频率,备份保留的份数和备份文件的名称。如果主节点上的CRS关闭,其他的节点变成主节点,备份将在这个节点上恢复。如果备份位置没有被变更到一个普通共享的位置,备份可能会出项跨节点存在。如果在调度备份期间,所有的CRS关闭,在重启时,备份不会立即发生,并且备份时间将被重置。这可能会导致比标准的4小时间隔更长的时间间隔进行自动备份。

由于OCR   信息的重要性,也建议你对自动产生的物理备份创建副本。你可以使用备份软件来备份自动生成的备份文件,建议在不同的设备上每天对自定备份进行备份。

注:不要将自动OCR备份放置到ASM集群文件系统上存储(ACFS)。

 

增加,替换和修复OCR位置

  • 增加一个OCR位置到ASM或其他存储设备:
ocrconfig -add +DATA2ocrconfig -add /dev/sde1

 

  • 替换当前OCR位置:
 ocrconfig -replace /dev/sde1 -replacement +DATA2
  • 为了修复OCR配置,在停止了Oracle集群的节点上运行下列命令:
ocrconfig -repair -add +DATA1

你不能在正在运行Oracle集群的节点上执行这个操作。

# ocrconfig -replace destination_file | +ASM_disk_group -replacementdestination_file | +ASM_disk_group

你可以在完全安装了Oracle Grid和更新之后,增加一个OCR位置。Oracle集群可以管理多达5个OCR位置。作为root,运行下列命令在增加OCR位置到ASM或者其他的存储设备:

# ocrconfig -add +asm_disk_group | file_name

为了替换当前OCR位置,使用下列命令,destination_file或+ASM_disk_group表明当前个目标位置:

# ocrconfig -replace destination_file | +ASM_disk_group -replacementdestination_file | +ASM_disk_group

当一个节点停止时,如果配置变更,那么可能需要修复一个OCR配置。修复一个OCR配置涉及到增加,删除或者替换一个OCR位置。为了修复OCR配置,使用root用户在停止了集群的节点上运行ocrconfig命令:

# ocrconfig -repair -add file_name | -delete file_name | -replacecurrent_file_name -replacement new_file_name

 

这个操作只会变更你运行命令的节点的OCR配置。例如,如果OCR位置是/dev/sde1,使用命令语法 ocrconfig -repair add /dev/sde1在这个节点来修复这其OCR配置。

删除一个OCR位置

移除一个OCR位置,至少有一个其他的OCR必须在线。你可以移除一个OCR位置来减少OCR关联开销,或者在你移动OCR到一个冗余存储例如RAID时关闭OCR镜像。

使用root身份,执行下列步骤从Oracle集群环境中移除一个OCR位置:

1.确保至少有一个不是将要移除的其他OCR位置是在线的。

2.在集群中任意节点上运行下列命令来从ASM中或其他位置移除一个OCR位置:

# ocrconfig -delete +ASM_disk_group | file_name

file_name变量可以是一个设备名或者一个文件名。这个命令在集群运行时会在所有节点上更新OCR配置。

警告:不要在只有一个活动OCR位置在线时视图执行OCR移除命令,否则你会得到一个错误。你不能移除最后一个OCR文件。

 

迁移OCR位置到ASM

在oracle 集群11g R2 中,为了提高Oracle集群存储管理性,默认情况下,OCR配置是使用的ASM。Oracle 集群使用ASM磁盘组,你可以是用EM来管理数据库和集群存储。但是,如果你是从一个低版本的Oracle数据升级而来的,可以将OCR位置迁移到ASM,以提高Oracle 集群存储的管理。使用ocrconfig来将OCR位置迁移到ASM:

1.确保Oracle 集群已经升级到11g R2。运行下列命令来验证当前的版本:

crsctl query crs activeversion

2.在集群中的节点上使用ASMCA来配置和启动ASM,并创建一个磁盘组至少有1GB的空间并至少是普通的冗余。

3.为了增加一个OCR位置到ASM磁盘组,确保集群是运行的,并且使用root用户运行下列命令:

# ocrconfig -add +new_disk_group

4.为了移除不在使用的OCR位置,使用root用户运行下列命令:

# ocrconfig -delete old_storage_location

注意:OCR继承磁盘组的冗余度。如果你想为OCR使用高冗余度,在创建的时候,你必须为高冗余度配置对应的磁盘组。

 

ASM迁移OCR到其他共享存储

1.确保Oracle集群升级到了11g R2版本。运行下列命令来验证当前的版本:

crscrl query crs activeversion

2.创建一个有下列权限的共享文件:root,oinstall,640,确保至少挂载300MB的空间。

3.增加文件作为OCR位置,确保集群stack是运行的,并且使用root运行下列命令:

ocrconfig -add new_file_location

如果你想增加更多的OCR位置,可以多次运行这个命令。

4.为了移除不再使用的OCR位置,使用root身份运行下列命令:

ocrconfig -delete old_storage_location

如果有多个OCR位置,你可以运行这个命令多次。

 

15.8 执行手动OCR 备份

 

当配置发生了重要的变更后,建议按需进行手动的备份。

  • 执行一个物理备份:
ocrconfig -manualback
  • 显示手动备份的列表:
ocrconfig -showback manual
  • 执行一个逻辑备份:
ocrconfig -export /home/oracle/ocr.back

于仲裁不同,OCR文本变化会很快,尤其是高可用框架。如果重要的大量工作被完成,会导致OCR的修改,建议在自动备份发生之前进行手动的备份或者执行导出。这个按需的备份可以在,还没有进行自动备份时出现OCR损坏或丢失后进行信息重建。

不允许在执行手动备份时指定名称。一个文件名称格式为backup_<date>_<time>.ocr的文件将被创建,并且会放置到默认的备份位置。当执行一个手动备份时,其不会影响自动备份间隔。export命令会创建一个二进制的逻辑备份文件来保存OCR的键和值。

大多数的配置变更不仅仅会变更OCR内容,还会创建文件和数据库对象。当你重建OCR是,这些变更通常不会被重建。如果一个配置变更失败了,不要作为修正,执行重建OCR到之前的配置。这可能导致OCR中的内容与系统中其他的部分状态不匹配。

 

15.9 使用物理备份进行OCR的恢复

使用下列步骤在UNIX基础的系统上进行OCR的重建:

1.使用 ocrconfig -showback命令来确认OCR的备份。你可以在任何节点上使用oracle用户执行这个命令。这个输出告诉你哪个节点上可以检索到自动备份和手动备份。使用auto 或manul 参数来选择显示策略

2.在节点上使用crsctl stop cluster -all命令停止Oracle集群stack

3.停止oracle HA服务,使用root用户在所有节点执行crsctl  stop crs。

4.使用步骤1中的文件来进行重建,file_name就是你想重建的OCR文件名:

ocrconfig -restore file_name

确保你指定的的OCR设备在OCR配置文件中(/etc/oracle/ocr.loc)存在并且这个OCR设备有效。

5.使用root用户,在所有节点上使用crsctl start crs 重启Oracle HA服务

6.使用其他用户grid 执行cluvfy comp ocr -n all 命令来验证ocr的完整性。

注:这个步骤其实是有问题的,正确的步骤应该是:

crsctl stop crscrsctl start crs -exclcrsctl stop resource ora.crsd -init
ocrconfig -restore file_name

ocrcheck

crsctl stop crs

crsctl start crs
验证完整性

cluvfy comp ocr -n all

 

 

15.10 使用逻辑备份进行OCR的恢复

使用下列步骤在UNIX基础的系统上进行OCR导入:

1.明确你想导入的OCR导出文件,导入文件是之前使用 ocrconfig -export file_name命令产生的。

2.在每个节点上使用root用户执行crsctl stop crs命令来停止Oracle集群。

3.使用下列命令将步骤1中导入的文件导入,file_name是你想导入的的OCR信息:

ocrconfig -import file_name

4.在每个节点使用crsctl stsart crs命令重启 Oracle HA 服务。

5.运行下列命令来验证OCR 完整性,-n all参数 检索所有节点的配置:

cluvfy comp ocr -n all

–这个和物理重建差不多,只是使用的文件不一样,命令一个是import 一个是restore

 

 

15.11 Oracle 本地注册

  • 每个集群节点由一个本地注册的集群资源,被称作 Oracle Local Registry(OLR)。
  • 当Oracle 集群被安装时,OLR被安装和配置。
  • 其中的一个功能是在集群启动的时候,帮助找到ASM存和OCR,仲裁盘的位置
  • 你可以使用orcheck命令来检查OLR的状态
ocrcheck -local

 

在Oracle 集群11g R2,每个集群中的每个节点为节点指定资源有一个本地注册,成为OLR。每个节点上的多个进程同时读取和写访问特定节点上的OLR,不管Oracle 集群是否正在运行或者完全的工作。

OLR提供了各种Oracle 集群进程来访问关键配置信息,即使Oracle 集群在这个节点并不运行。其中一个功能就是在集群进程启动的时候,帮助找到ASM存储和OCR和仲裁盘。在启动进程过程中,OLR被关联来确定仲裁盘的确切位置。这使得节点可以加入集群,在这个初始节点后,ASM被启动。在ASM启动之后,进程需要完整OCR才能启动,然后集群启动过程完成。

默认情况下,OLR位于 grid_home/cdata/hostname.olr。你可以使用ocrcheck,ocrdump和ocrconfig工具的-local选项 来管理OLR。例如使用ocrcheck工具来检查状态:

ocrcheck -local

你可以使用OCRDUMP工具来显示OLR的内容到文本终端程序,例如:

ocrdump -local -stdout

你可以使用OCRCONFIG工具在OCR上执行管理任务。将OLR导出到一个文件:

ocrconfig -local -exoport file_name

导入指定文件到OLR:

ocrconfig -local -import file_name

在本地节点上修改OLR文件:

ocrconfig -local -repair olr file_name

olr关键字伴随 -repair选项只在使用-local时有效。

 

15.12 总结

在这个课程中,你应该学会如何:

  • 熟练的展示集群管理
  • 验证OCR备份和恢复技术

 

 

 

Comment

*

沪ICP备14014813号-2

沪公网安备 31010802001379号