Oracle RAC ocr进行备份和恢复的一次错误操作(没关闭所有节点)

本文主要是介绍Oracle RAC ocr进行备份和恢复的一次错误操作(没关闭所有节点),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        在看张晓明大师的《大话RAC》OCR命令部分的时候,由于自己眼拙,不细心的缘故,所有两个节点中,我只关闭了其中一个,就进行export,还有dd裸设备,所以备份恢复出现了错误!!深刻教训,后来成功恢复了,所以记录之。此记录不是规范的OCR备份恢复操作,规范的请详见张大师的《大话RAC》著作。

redhat 5.5 +oracle 10.2.0.1.0 

错误如下提示:

[root@rac1 ~]# /oracle/clusterware/cluvfy/runcluvfy.sh comp ocr -n all

验证 OCR 完整性 

ERROR: 
等同用户在所有节点上都不可用。
验证无法继续。

在所有节点上验证 OCR 完整性 失败。


      ORACLE推荐在对集群作调整时,比如增加、删除节点之前,应该对OCR做一个备份,可以使用export备份到指定文件。如果做了replace或restore等操作,Oracle建议使用“cluvfy comp ocr -n all"命令做一次全面的检查。

       (1)首先关闭所有节点的CRS

          ......

         .......

                                                                                                                                                                                                                       -----引自张晓明 《大话RAC》


        原因:由于只关闭一节点进行导出备份,两个节点不同步致错。

错误重现:

1、停止节点1的CRS资源

[root@rac1 ~]# /oracle/product/crs/bin/crsctl stop crs
Stopping resources.
Successfully stopped CRS resources 
Stopping CSSD.
Shutting down CSS daemon.
Shutdown request successfully issued.

2、导出OCR内容

[root@rac1 ~]# /oracle/product/crs/bin/ocrconfig -export /oracle/ocr.exp
[root@rac1 ~]# /oracle/product/crs/bin/crsctl start crs
Attempting to start CRS stack 
The CRS stack will be started shortly

一定要root用户

3、启动节点1的CRS资源

[root@rac1 ~]# /oracle/product/crs/bin/crsctl start crs
Attempting to start CRS stack 
The CRS stack will be started shortly

4、检查CRS状态

[root@rac1 ~]# /oracle/product/crs/bin/crsctl check crs
CSS appears healthy
CRS appears healthy
EVM appears healthy

(耐心稍等片刻 CRS进程才会起来)

5、破坏OCR内容

[root@rac1 ~]# dd if=/dev/zero of=/dev/raw/raw1 bs=1024 count=102400
102400+0 records in
102400+0 records out
104857600 bytes (105 MB) copied, 10.2297 seconds, 10.3 MB/s

6、检查OCR一致性

[root@rac1 ~]# /oracle/product/crs/bin/ocrcheck
PROT-601: Failed to initialize ocrcheck

显示失败

7、使用cluvfy工具检查一致性

[root@rac1 ~]# /oracle/clusterware/cluvfy/runcluvfy.sh comp ocr -n all
验证 OCR 完整性 
无法从 Oracle 集群件中检索节点列表。
验证无法继续。

8、使用import恢复OCR内容

[root@rac1 ~]# /oracle/product/crs/bin/ocrconfig -import /oracle/ocr.exp

9、再次检查OCR

[root@rac1 ~]# /oracle/product/crs/bin/ocrcheck
Status of Oracle Cluster Registry is as follows :
         Version                  :          2
         Total space (kbytes)     :     497928
         Used space (kbytes)      :       3800
         Available space (kbytes) :     494128
         ID                       : 1324903426
         Device/File Name         : /dev/raw/raw1
                                    Device/File integrity check succeeded


                                    Device/File not configured


         Cluster registry integrity check succeeded

检查通过

10、用cluvfy工具检查

[root@rac1 ~]# /oracle/clusterware/cluvfy/runcluvfy.sh comp ocr -n all
验证 OCR 完整性 
ERROR: 
等同用户在所有节点上都不可用。
验证无法继续。
在所有节点上验证 OCR 完整性 失败。

问题出现,原因如上,因为节点2的CRS服务正在启动,所以导出恢复一定要停止所有节点。

解决办法:

1、检查节点1、节点2的CRS资源

[root@rac1 bin]# /oracle/product/crs/bin/crsctl check crs
CSS appears healthy
CRS appears healthy
EVM appears healthy

[root@rac2 ~]# /oracle/product/crs/bin/crsctl check crs
CSS appears healthy
CRS appears healthy
EVM appears healthy
2、停止1、2正在运行的CRS资源

[root@rac2 ~]# /oracle/product/crs/bin/crsctl stop crs
Stopping resources.
Successfully stopped CRS resources 
Stopping CSSD.
Shutting down CSS daemon.
Shutdown request successfully issued.

3、用dd命令清除掉存放OCR信息的裸设备

[root@rac2 ~]#dd if=/dev/zero of=/dev/raw/raw1 bs=1024 count=102400

102400+0 records in
102400+0 records out
104857600 bytes (105 MB) copied, 9.76807 seconds, 10.7 MB/s

4、检查OCR内容

[root@rac2 ~]# /oracle/product/crs/bin/ocrcheck
PROT-601: Failed to initialize ocrcheck

初始化失败

3、先停止CRS资源,然后用import命令执行导入操作

由于上步已停止CRS,所以直接import

[root@rac1 bin]# /oracle/product/crs/bin/ocrconfig -import /oracle/ocr.exp

如果不停止资源就import的话就出现如下错误

[root@rac1 bin]# /oracle/product/crs/bin/ocrconfig -import /oracle/ocr.exp
PROT-19: Cannot proceed while clusterware is running. Shutdown clusterware first
4、检查1、2节点的ocr内容

[root@rac1 bin]# /oracle/product/crs/bin/ocrcheck
Status of Oracle Cluster Registry is as follows :
         Version                  :          2
         Total space (kbytes)     :     497928
         Used space (kbytes)      :       3800
         Available space (kbytes) :     494128
         ID                       :  774037276
         Device/File Name         : /dev/raw/raw1
                                    Device/File integrity check succeeded
                                    Device/File not configured
         Cluster registry integrity check succeeded

[root@rac2 ~]# /oracle/product/crs/bin/ocrcheck
Status of Oracle Cluster Registry is as follows :
         Version                  :          2
         Total space (kbytes)     :     497928
         Used space (kbytes)      :       3800
         Available space (kbytes) :     494128
         ID                       : 1472647163
         Device/File Name         : /dev/raw/raw1
                                    Device/File integrity check succeeded


                                    Device/File not configured


         Cluster registry integrity check succeeded

5、节点2下的oracle用户运行cluvfy工具检查

[root@rac2 ~]# su - oracle

[oracle@rac2 cluvfy]$ /oracle/clusterware/cluvfy/runcluvfy.sh comp ocr -n all

验证 OCR 完整性 
正在检查 OCR 完整性...
正在检查是否缺少非集群配置...
所有节点都没有非集群的, 仅限本地的配置。
OCR 设备的唯一性检查已通过。
正在检查 OCR 的版本...
正确版本 "2" 的 OCR 存在。
正在检查 OCR 数据完整性...
OCR 数据完整性检查已通过。

OCR 完整性检查已通过。
OCR 完整性 的验证成功。

6、切回节点一启动CRS资源,并检查资源状态

[root@rac1 ~]# /oracle/product/crs/bin/crsctl start crs
Attempting to start CRS stack 
The CRS stack will be started shortly
[root@rac1 ~]# /oracle/product/crs/bin/crsctl check crs
CSS appears healthy
CRS appears healthy
EVM appears healthy

7、在节点1重复第五步

[root@rac1 ~]# su - oracle

[oracle@rac1 cluvfy]$ /oracle/clusterware/cluvfy/runcluvfy.sh comp ocr -n all

验证 OCR 完整性 
正在检查 OCR 完整性...
正在检查是否缺少非集群配置...
所有节点都没有非集群的, 仅限本地的配置。
OCR 设备的唯一性检查已通过。
正在检查 OCR 的版本...
正确版本 "2" 的 OCR 存在。
正在检查 OCR 数据完整性...
OCR 数据完整性检查已通过。

OCR 完整性检查已通过。
OCR 完整性 的验证成功。

8、启动节点2的CRS资源,并检查状态

[root@rac2 ~]# /oracle/product/crs/bin/crsctl start crs

Attempting to start CRS stack 
The CRS stack will be started shortly

[root@rac2 ~]# /oracle/product/crs/bin/crsctl check crs
CSS appears healthy
CRS appears healthy
EVM appears healthy
Attempting to start CRS stack 
The CRS stack will be started shortly

个人观点总结:

至此,OCR内容成功恢复,主要是做了replace和restore操作,就要停止所有节点来使用cluvfy工具进行全面检查才能使所有节点进行信息同步,才能成功启动CRS资源。(两个节点一关一闭执行dd raw操作也可能会有错,所以看书得仔细点了!!)

疑问一:节点一第一次在CRS资源启动的时候执行import不报错,而再第二次之后再在CRS资源启动的时候执行import就会出错,

此时Oracle会提示PROT-19: Cannot proceed while clusterware is running. Shutdown clusterware first,有时不必过分纠结原理,根据提示灵活应变即可。

疑问二:如出现以下错误 (背景:使用绝对路径方式停止CRS报错,真是莫名其妙,不知道这两种命令方式有何区别,幸好试了另一种就能停止掉CRS资源,真是坑得一逼)

[root@rac1 ~]# /oracle/product/crs/bin/crsctl stop crs
OCR initialization failed with invalid format: PROC-22: The OCR backend has an invalid format

1、先用工具检查

[oracle@rac1 ~]$ /oracle/clusterware/cluvfy/runcluvfy.sh comp ocr -n all

2、进入到ORACLE_HOME下 在该目录下使用命令停止

[root@rac1 oracle]# su - oracle
[oracle@rac1 ~]$ su
口令:
[root@rac1 oracle]# pwd
/home/oracle
[root@rac1 oracle]# crsctl stop crs
Stopping resources.
Successfully stopped CRS resources 
Stopping CSSD.
Shutting down CSS daemon.
Shutdown request successfully issued.

----------------------------------------------------------------------------------------------

版权所有,如需转载,请注明出处,否则追加法律责任!

blog:http://blog.csdn.net/waycomecome

mail:waycomecome@gmail.com

这篇关于Oracle RAC ocr进行备份和恢复的一次错误操作(没关闭所有节点)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1096803

相关文章

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

linux解压缩 xxx.jar文件进行内部操作过程

《linux解压缩xxx.jar文件进行内部操作过程》:本文主要介绍linux解压缩xxx.jar文件进行内部操作,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、解压文件二、压缩文件总结一、解压文件1、把 xxx.jar 文件放在服务器上,并进入当前目录#

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

C++链表的虚拟头节点实现细节及注意事项

《C++链表的虚拟头节点实现细节及注意事项》虚拟头节点是链表操作中极为实用的设计技巧,它通过在链表真实头部前添加一个特殊节点,有效简化边界条件处理,:本文主要介绍C++链表的虚拟头节点实现细节及注... 目录C++链表虚拟头节点(Dummy Head)一、虚拟头节点的本质与核心作用1. 定义2. 核心价值二

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Oracle 数据库数据操作如何精通 INSERT, UPDATE, DELETE

《Oracle数据库数据操作如何精通INSERT,UPDATE,DELETE》在Oracle数据库中,对表内数据进行增加、修改和删除操作是通过数据操作语言来完成的,下面给大家介绍Oracle数... 目录思维导图一、插入数据 (INSERT)1.1 插入单行数据,指定所有列的值语法:1.2 插入单行数据,指

k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)

《k8s上运行的mysql、mariadb数据库的备份记录(支持x86和arm两种架构)》本文记录在K8s上运行的MySQL/MariaDB备份方案,通过工具容器执行mysqldump,结合定时任务实... 目录前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作(X86)1.准备工作(arm)2.手

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O