Oracle OCR的备份与恢复

0    146    1

Tags:

👉 本文共约41827个字,系统预计阅读时间或需158分钟。

前言部分

导读和注意事项

各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~:

① rac中OCR的简介及其作用

② rac中OCR的备份和恢复

③ rac的健忘与脑裂

④ grid用户下的日志文件:$ORACLE_HOME/log文件夹内容被删除导致集群不能启动如何恢复?(重点)

⑤ 如何修复11.2 Grid权限误操作【(How to check and fix file permissions on Grid Infrastructure environment (文档 ID 1931142.1)】

⑥ 如何修复ASM实例名和节点名不一致的情况【How to Change 11.2 ASM Configuration to Match ASM Instance Name to the Node Where It Runs? (example, +ASM2 on Node2, etc) (文档 ID 1419424.1)】

⑦ permission.pl脚本的使用

本文简介

写这篇blog的情况是这样的,rac启动有问题,但是$GRID_HOME/log下的文件太多了,我就把下边的内容清空了,结果是集群更加不能启动就连基本的日志也没有了,重启OS无效,最后在仔细的想了想查看了一下运行正常的库的$GRID_HOME/log下的文件结构,发现有的文件夹最后有个T或t的权限,由此联想到可能是权限的缘故导致的,于是上MOS搜了搜文章果然搜到几篇文章,11.2.0.3.6以上比较好解决,但是小于这个版本的就不好弄了,自己总结的方法是重新跑root.sh脚本,而跑完后集群中注册的很多资源不存在了,于是这个又涉及到OCR的备份与恢复。另外执行root.sh若是顺序不对,或者其他的原因可能导致asm实例号和主机号不一致,就是rac1上的实例名是+ASM2,这个虽然没有啥影响,但是看着着实不爽,因此更改它们直接的对应关系也比较重要,所以总体而言就引出了文章开头提出的6个问题。

相关知识点扫盲

Clusterware 在运行期间需要两个文件: OCR 和 Voting Disk. 这 2 个文件必须存放在共享存储上。 OCR 用于解决健忘问题, Voting Disk 用于解决脑裂问题。

OCR Disk

Oracle Clusterware把整个集群的配置信息放在共享存储上,这个存储就是OCR Disk. 在整个集群中,只有一个节点能对OCR Disk 进行读写操作,这个节点叫作Master Node,所有节点都会在内存中保留一份OCR的拷贝,同时有一个OCR Process 从这个内存中读取内容。 OCR 内容发生改变时,由Master Node的OCR Process负责同步到其他节点的OCR Process。

健忘问题是由于每个节点都有配置信息的拷贝,修改节点的配置信息不同步引起的。Oracle 采用的解决方法就是把这个配置文件放在共享的存储上, 这个文件就是 OCR Disk。OCR 中保存整个集群的配置信息,配置信息以"Key-Value" 的形式保存其中。 在 Oracle10g 以前, 这个文件叫作 Server Manageability Repository(SRVM). 在 Oracle 10g, 这部分内容被重新设计,并重名为 OCR.。在 Oracle Clusterware 安装的过程中, 安装程序会提示用户指定 OCR 位置。并且用户指定的这个位置会被记录在/etc/oracle/ocr.loc(Linux System、AIX) 或者/var/opt/oracle/ocr.loc(Solaris System)文件中。 而在 Oracle 9i RAC 中,对等的是 srvConfig.Loc文件。 Oracle Clusterware在启动时会根据这里面的内容从指定位置读入 OCR 内容。

zfzhlhrdb3:root:/>cd /etc/oracle

zfzhlhrdb3:root:/etc/oracle>ls -l

total 3160

drwxrwx--- 2 root dba 256 Dec 29 14:16 lastgasp

-rw-r--r-- 1 root dba 37 Dec 29 14:10 ocr.loc

-rw-r--r-- 1 root system 0 Dec 29 14:10 ocr.loc.orig

-rw-r--r-- 1 root dba 92 Dec 29 14:10 olr.loc

-rw-r--r-- 1 root system 0 Dec 29 14:10 olr.loc.orig

drwxrwxr-x 5 root dba 256 Dec 29 14:09 oprocd

drwxr-xr-x 3 root dba 256 Dec 29 14:09 scls_scr

-rws--x--- 1 root dba 1606037 Dec 29 14:09 setasmgid

zfzhlhrdb3:root:/etc/oracle>more /etc/oracle/ocr.loc

ocrconfig_loc=+DATA

local_only=FALSE

OCR key

整个 OCR 的信息是树形结构,有 3 个大分支。分别是 SYSTEM,DATABASE 和 CRS。每个分支下面又有许多小分支。这些记录的信息只能由 root 用户修改。

OCR包含的内容

OCR中通常包含下列内容:

  • 节点成员信息
  • 数据库实例,节点,以及其他的映射关系
  • ASM
  • 资源配置信息(vip,services等等)
  • 服务特性(Service characteristics)
  • Oracle集群中相关进程的信息
  • CRS控制的第三方应用程序信息

zfzhlhrdb1:root:/>ocrdump -local -stdout -xml|more|grep -i \\<name\>|sed -e 's/\\<NAME\>//g' -e 's/\\<\/NAME\>//g'|awk -F . '{print $1,$2,$3}'|uniq

SYSTEM

SYSTEM crs

SYSTEM crs usersecurity

SYSTEM crs deny

SYSTEM crs user_default_dir

SYSTEM ORA_CRS_HOME

SYSTEM WALLET

SYSTEM GNS

SYSTEM version

SYSTEM version localhost

SYSTEM version activeversion

SYSTEM GPnP

SYSTEM GPnP profiles

SYSTEM css

SYSTEM css nodenum_hint

SYSTEM network

SYSTEM network haip

SYSTEM OHASD

SYSTEM OHASD DM

SYSTEM OHASD SERVERPOOLS

SYSTEM OHASD SERVERS

SYSTEM OHASD TYPES

SYSTEM OHASD RESOURCES

SYSTEM CRS

SYSTEM CRS JOIN_SIGNATURE

SYSTEM OLR

SYSTEM OLR MANUALBACKUP

SYSTEM OCR

SYSTEM OCR BACKUP

DATABASE

DATABASE NODEAPPS

DATABASE VIP_RANGE

DATABASE LOG

DATABASE ASM

DATABASE DATABASES

CRS

zfzhlhrdb1:root:/>ocrdump -stdout -xml|more|grep -i \\<name\>|sed -e 's/\\<NAME\>//g' -e 's/\\<\/NAME\>//g'|awk -F . '{print $1,$2,$3}'|uniq

SYSTEM

SYSTEM version

SYSTEM version activeversion

SYSTEM version hostnames

SYSTEM versionstring

SYSTEM WALLET

SYSTEM WALLET APPQOSADMIN

SYSTEM GNS

SYSTEM css

SYSTEM css interfaces

SYSTEM crs

SYSTEM crs versions

SYSTEM crs usersecurity

SYSTEM crs deny

SYSTEM crs user_default_dir

SYSTEM crs e2eport

SYSTEM crs uiport

SYSTEM crs 11

SYSTEM ACFS

SYSTEM ORA_CRS_HOME

SYSTEM evm

SYSTEM evm debug

SYSTEM evm cevmkey

SYSTEM evm rmport

SYSTEM evm cevmport

SYSTEM DIAG

SYSTEM DIAG status

SYSTEM local_only

SYSTEM WLM

SYSTEM GPnP

SYSTEM GPnP profiles

SYSTEM JAZNFILE

\jazn com\

\qosadmin\

\oc4jadmin\

\JtaAdmin\

\ascontrol_appadmin\

\oc4j-administrators\

\qosadmin\

\oc4jadmin\

\JtaAdmin

\qos_admin\

\qosadmin\

\oc4j-app-administrators\

\users\

\ascontrol_monitor\

\

\qosadmin\

\oc4jadmin\

\qos_admin\

\jazn com/oc4j-administrators\

\login\

\subject propagation\

\oracle security jazn

\jazn com/*\

\administration\

\jazn com\

\jazn com/ascontrol_admin\

\login\

\subject propagation\

\oracle security jazn

\oracl

\oracle security jazn

\jazn com/*\

\administration\

\jazn com\

\jazn com/oc4j-app-administrators\

\login\

\jazn com/users\

\login\

\oracle security jazn

\coreid password header\

\coreid resource operation\

\addAllRoles\

\coreid password attribute\

\coreid resource type\

\coreid name attribute\

\coreid resource name\

\core

\oracle security jazn

\addAllRoles\

\oracle security wss

\addAllRoles\

\oracle security jazn

\addAllRoles\

\oracle security jazn

\addAllRoles\

\oracle security jazn

\addAllRoles\

\oracle security wss

\addAllRoles\

\issuer name 1\

SYSTEM JAZNFILE STATE

SYSTEM CRSADMIN

SYSTEM CRSUSER

SYSTEM CRSD

SYSTEM CRSD DM

SYSTEM CRSD SERVERPOOLS

SYSTEM CRSD SERVERS

SYSTEM CRSD TYPES

SYSTEM CRSD RESOURCES

SYSTEM OCR

SYSTEM OCR BACKUP

DATABASE

DATABASE NODEAPPS

DATABASE NODEAPPS zfzhlhrdb1

DATABASE NODEAPPS zfzhlhrdb2

DATABASE VIP_RANGE

DATABASE LOG

DATABASE ASM

DATABASE ASM zfzhlhrdb1

DATABASE ASM zfzhlhrdb2

DATABASE DATABASES

CRS

CRS CUR

CRS HIS

CRS SEC

CRS STAGE

CRS STAGE node1

CRS STAGE node2

OCR存储内容的表现形式

  1. 同样地与Windows注册表来类比,OCR其存储内容的表现形式与其相同,是采用键值对的方式来展现。
  2. 整个OCR 的信息是树形结构,有3个大分支。分别是SYSTEM,DATABASE 和CRS。
  3. 每个分支下面又有许多小分支。这些记录的信息只能由root用户修改。
  4. 可以使用ocrdump命令将其内容全部导出或者按分支进行导出。

Voting Disk

Voting Disk 这个文件主要用于记录节点成员状态,在出现脑裂时,决定那个 Partion 获得控制权,其他的 Partion 必须从集群中剔除。在安装 Clusterware 时也会提示指定这个位置。安装完成后可以通过如下命令来查看 Voting Disk 位置。

健忘症(Amnesia)

集群环境配置文件不是集中存放的,而是每个节点都有一个本地副本,在集群正常运行时,用户可以在任何节点更改集群的配置,并且这种更改会自动同步到其他节点。有一种特殊情况: 节点 A 正常关闭, 在节点 B 上修改配置, 关闭结点 A,启动结点B。 这种情况下,修改的配置文件是丢失的, 就是所谓的健忘症。OCR 用于解决健忘问题。

健忘是由于某个节点更新了OCR中的内容,而集群中的另外一些节点此时处于关闭,维护或重启阶段,OCR Master进程来不及将其信息更新到这些异常节点缓存而导致的不一致。譬如,在A节点发出了添加ocr镜像的命令,在这个时候B节点处于重启阶段。重启后A已经更新完毕,而此时B并不知道已经为ocr增加了一个新的镜像磁盘,健忘由此而生。

如下例,节点bo2dbp添加了新的ocr之后,配置文件发生了变化,此时节点bo2dbs的ocr.loc会被更新,如果bo2dbs处于关闭或重启阶段,则该文件得不到该更新,此即位健忘一例。

脑裂(Split Brain)

在集群中,节点间通过某种机制(心跳)了解彼此的健康状态,以确保各节点协调工作。假设只有"心跳"出现问题, 各个节点还在正常运行, 这时,每个节点都认为其他的节点宕机了, 自己是整个集群环境中的"唯一建在者",自己应该获得整个集群的"控制权"。 在集群环境中,存储设备都是共享的, 这就意味着数据灾难, 这种情况就是"脑裂"解决这个问题的通常办法是使用投票算法(Quorum Algorithm). 它的算法机理如下:集群中各个节点需要心跳机制来通报彼此的"健康状态",假设每收到一个节点的"通报"代表一票。对于三个节点的集群,正常运行时,每个节点都会有 3 票。 当结点 A 心跳出现故障但节点 A 还在运行,这时整个集群就会分裂成 2 个小的 partition。 节点 A 是一个,剩下的 2 个是一个。 这是必须剔除一个 partition 才能保障集群的健康运行。对于有 3 个节点的集群, A 心跳出现问题后, B 和 C 是一个 partion,有 2 票, A只有 1 票。 按照投票算法, B 和 C 组成的集群获得控制权, A 被剔除。如果只有 2 个节点,投票算法就失效了。 因为每个节点上都只有 1 票。 这时就需要引入第三个设备: Quorum Device. Quorum Device 通常采用饿是共享磁盘,这个磁盘也叫作Quorum disk。 这个 Quorum Disk 也代表一票。 当 2 个结点的心跳出现问题时, 2 个节点同时去争取 Quorum Disk 这一票, 最早到达的请求被最先满足。 故最先获得 Quorum Disk的节点就获得 2 票。另一个节点就会被剔除。

OCR命令系列

ocrdump

该命令能以ASCII的方式打印出OCR的内容,但是这个命令不能用作OCR的备份恢复,也就是说产生的文件只能用作阅读,而不能用于恢复。

命令格式: ocrdump [-stdout] [filename] [-keyname name] [-xml]

参数说明:

-stdout: 把内容打印输出到屏幕上

Filename:内容输出到文件中

-keyname:只打印某个键及其子健内容

-xml:以xml格式打印输出

示例:把system.css键的内容以.xml格式打印输出到屏幕

[root@raw1 bin]# ./ocrdump -stdout -keyname system.css -xml|more

\

\03/08/2010 04:28:41\

\/dev/raw/raw1\

\./ocrdump.bin -stdout -keyname system.css -xml \

......

这个命令在执行过程中,会在$CRS_HOME/log/\/client 目录下产生日志文件,文件名ocrdump_\.log,如果命令执行出现问题,可以从这个日志查看问题原因。

ocrcheck

Ocrcheck 命令用于检查OCR内容的一致性,命令执行过程会在$CRS_HOME/log/nodename/client 目录下产生ocrcheck_pid.log 日志文件。 这个命令不需要参数。

Status of Oracle Cluster Registry is as follows :

Version : 3

Total space (kbytes) : 262120

Used space (kbytes) : 3176

Available space (kbytes) : 258944

ID : 362503260

Device/File Name : +DATA

Device/File integrity check succeeded

Device/File not configured

Device/File not configured

Device/File not configured

Device/File not configured

Cluster registry integrity check succeeded

Logical corruption check succeeded

ocrconfig

该命令用于维护OCR 磁盘,安装clusterware过程中,如果选择External Redundancy冗余方式,则只能输入一个OCR磁盘位置。 但是Oracle允许配置两个OCR 磁盘互为镜像,以防止OCR 磁盘的单点故障。 OCR 磁盘和Votedisk磁盘不一样,OCR磁盘最多只能有两个,一个Primary OCR 和一个Mirror OCR。

[root@raw1 bin]# ./ocrconfig --help

Name:

ocrconfig - Configuration tool for Oracle Cluster Registry.

Synopsis:

ocrconfig [option]

option:

-export \ [-s online]

- Export cluster register contents to a file

-import \ - Import cluster registry contents from a file

-upgrade [\ [\]]

- Upgrade cluster registry from previous version

-downgrade [-version \]

- Downgrade cluster registry to the specified version

-backuploc \ - Configure periodic backup location

-showbackup - Show backup information

-restore \ - Restore from physical backup

-replace ocr|ocrmirror [\] - Add/replace/remove a OCR device/file

-overwrite - Overwrite OCR configuration on disk

-repair ocr|ocrmirror \ - Repair local OCR configuration

-help - Print out this help information

Note:

A log file will be created in

$ORACLEHOME/log/\/client/ocrconfig\.log. Please ensure

you have file creation privileges in the above directory before

running this tool.

Oracle RAC OCR 的备份与恢复

Oracle Clusterware把整个集群的配置信息放在共享存储上,这些信息包括了集群节点的列表、集群数据库实例到节点的映射以及CRS应用程序资源信息。也即是存放在ocr 磁盘(或者ocfs文件)上。因此对于这个配置文件的重要性是不言而喻的。任意使得ocr配置发生变化的操作在操作之间或之后都建议立即备份ocr。

因为OCR的内容如此重要,Oracle 每4个小时对其做一次备份,并且保留最后的3个备份,以及前一天,前一周的最后一个备份。 这个备份由Master Node CRSD进程完成,备份的默认位置是$CRS_HOME/crs/cdata/\目录下。 每次备份后,备份文件名自动更改,以反应备份时间顺序,最近一次的备份叫作backup00.ocr。这些备份文件除了保存在本地,DBA还应该在其他存储设备上保留一份,以防止意外的存储故障。

与Oracle数据库备份恢复相似,OCR的备份也有物理备份或逻辑备份的概念,因此有两种备份方式,两种恢复方式。

常用命令:

crsctl query css votedisk

lquerypv -h /dev/rhdisk2

crsctl stop has -f

crsctl start has

crsctl stat res -t

dd备份恢复

备份表决磁盘:

dd if=/dev/raw/raw3 of=/tmp/votedisk_lhr.bak bs=1024k count=4

恢复表决磁盘:

dd if=/tmp/votedisk_lhr.bak of=/dev/raw/raw3 bs=1024k count=4

注:11g不推荐使用dd来进行备份恢复,盘头一般是前4K

kfed恢复磁盘头

dd if=/dev/rhdisk2 of=/asm_rhdisk2_dd.bak bs=1024 count=4

dd if=/dev/zero of=/dev/rhdisk2 bs=1024 count=4

kfed repair /dev/rhdisk2

关于kfed、kfod、amdu的更多内容可以参考:http://blog.itpub.net/26736162/viewspace-1694198/

http://blog.itpub.net/26736162/viewspace-1694199/

md_backup和md_restore恢复磁盘头

asmcmd md_backup /oracle/app/11.2.0/grid/cdata/ZFTPCCDB-crs/asm_md_backup.bak

asmcmd md_restore /oracle/app/11.2.0/grid/cdata/ZFTPCCDB-crs/asm_md_backup.bak

dd if=/dev/rhdisk2 of=/asm_rhdisk2_dd.bak bs=1024k count=4

dd if=/dev/zero of=/dev/rhdisk2 bs=1024k count=4

crsctl stop has -f

crsctl start has

ASMCMD [+] > startup force nomount;

ASMCMD [+] > md_restore /asm_rhdisk2_dd.bak

ASMCMD [+] > md_backup /rman/asm_md.bak

dd if=/dev/zero of=/dev/rhdisk2 bs=1024 count=4

crsctl stop has -f

crsctl start has

ASMCMD [+] > startup force nomount;

ASMCMD [+] > md_restore /rman/asm_md.bak

关于md_backup和md_restore更多内容可以参考:http://blog.itpub.net/26736162/viewspace-2121309/

物理备份与恢复(自动备份)

缺省情况下,Oracle 每4个小时对其做一次备份,并且保留最后的3个副本,以及前一天,前一周的最后一个备份副本。用户不能自定义备份频率以及备份文件的副本数。

对于OCR的备份由是由Master Node CRSD进程完成,因此备份的默认位置是$CRS_HOME/crs/cdata/\目录下。

备份的文件会自动更名,以反应备份时间顺序,最近一次的备份叫作backup00.ocr。

由于是在Master Node的节点之上进行备份,因此备份文件仅存在于Master Node节点。

对于Master Node的节点crash之后则由剩余节点接管。

备份目录可以通过ocrconfig -backuploc \ 命令修改。

OCR磁盘最多只能有两个,一个Primary OCR 和一个Mirror OCR。两者互为镜像以避免单点故障。

对于物理备份恢复,不能简单的使用操作系统级别的复制命令(使用ocr文件时)来完成,该操作将导致ocr不可用。

对于物理备份,仅仅只能使用restore方式来进行恢复,而不支持import方式

1,查看备份磁盘

zfzhlhrdb2:grid:/home/grid>ocrconfig -showbackup

zfzhlhrdb1 2016/06/30 15:13:46 /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup00.ocr

zfzhlhrdb1 2016/06/30 11:13:45 /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup01.ocr

zfzhlhrdb1 2016/06/30 07:13:45 /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup02.ocr

zfzhlhrdb1 2016/06/29 03:13:41 /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/day.ocr

zfzhlhrdb1 2016/06/20 03:13:08 /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/week.ocr

PROT-25: Manual backups for the Oracle Cluster Registry are not available

zfzhlhrdb2:grid:/home/grid>oerr prot 25

00025, 0, "Manual backups for the Oracle Cluster Registry are not available"

// *Cause: Manual backups for the Oracle Cluster Registry were not yet created.

// *Action: Manual backups can be created using 'ocrconfig -manualbackup'

// command.

zfzhlhrdb2:grid:/home/grid>ocrconfig -manualbackup

PROT-20: Insufficient permission to proceed. Require privileged user

zfzhlhrdb2:root:/>ocrconfig -manualbackup

zfzhlhrdb1 2016/06/30 16:21:34 /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup_20160630_162134.ocr

zfzhlhrdb2:root:/>ocrconfig -showbackup

zfzhlhrdb1 2016/06/30 15:13:46 /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup00.ocr

zfzhlhrdb1 2016/06/30 11:13:45 /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup01.ocr

zfzhlhrdb1 2016/06/30 07:13:45 /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup02.ocr

zfzhlhrdb1 2016/06/29 03:13:41 /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/day.ocr

zfzhlhrdb1 2016/06/20 03:13:08 /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/week.ocr

zfzhlhrdb1 2016/06/30 16:21:34 /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup_20160630_162134.ocr

在节点一执行,可以看到2个节点得到的内容一致:

zfzhlhrdb1:root:/>ocrconfig -showbackup

zfzhlhrdb1 2016/06/30 15:13:46 /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup00.ocr

zfzhlhrdb1 2016/06/30 11:13:45 /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup01.ocr

zfzhlhrdb1 2016/06/30 07:13:45 /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup02.ocr

zfzhlhrdb1 2016/06/29 03:13:41 /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/day.ocr

zfzhlhrdb1 2016/06/20 03:13:08 /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/week.ocr

zfzhlhrdb1 2016/06/30 16:21:34 /oracle/app/11.2.0/grid/cdata/zfzhlhrdb-crs/backup_20160630_162134.ocr

2,恢复

ocrconfig -restore /app/crs/product/11.0.6/crs/cdata/racluster/backup01.ocr

3,查看配置

[grid@rac1 ~]$ more /etc/oracle/ocr.loc

ocrconfig_loc=+DATA

local_only=FALSE

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
Oracle OCR的备份与恢复后续精彩内容已被小麦苗无情隐藏,请输入验证码解锁本站所有文章!
验证码:
请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“DB宝”或者“www_xmmup_com”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦。
  • 18509239930
  • 个人微信

  • DB宝
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部