RAC重建OCR/Voting disk总结

2023-11-18

author:skate
time:2010/05/10


 

我的测试环境:

 

母系统:win2003
虚拟软件:vmware3.2.1
guest系统:centos4.7
oracle db:oracle10.2.1

 

前两天由于意外原因,同事从新插拔下电源,使我的rac测试环境意外断电,致使表决(votingdisk)虚拟磁盘
故障,致使系统都起不来。怎么办呢?我当时想法是,不到最后一刻,坚决不重装。恢复的过程也是熟悉的过程。

 

由于是votingdisk磁盘故障,系统无法启动,报votingdisk磁盘无法识别,为了让系统能启动,我把votingdisk磁盘
在vmware里重新添加了一遍,才让系统可以重新启动。系统起来之后,节点rac1又遇到gnome的bug,还好不影响rac的
正常工作。

 

因为我的votedisk损坏,而且有没有备份,所以只能重建votedisk

 

votedisk损坏只能重建,重建votedisk有两种方法


1.如果有votedisk备份的话,就用备份恢复


 eg:
 备份votedisk:dd if=/dev/raw/raw2 of=/tmp/votedisk.bak
 恢复votedisk:dd if=/tmp/votedisk.bak of=/dev/raw/raw2


2.没有votedisk备份的话,那就只能重新安装clusterware了(votedisk中信息是在安装clusterware或添加删除节点
  时把节点的信息添加进去的,并有ocssd进程维护)

 

根据我描述的故障现象,现在只能重新安装clusterware来重新初始化votedisk,已达到恢复的目的

这也是最快的方法

 

步骤:

 

1.停止所有节点的clusterware stack

 

[root@rac2 ~]# su - oracle
[oracle@rac2 ~]$ su
Password:
[root@rac2 oracle]# crsctl stop crs

 

2.备份每个节点的clusterware的目录

 

[root@rac1 oracle]# mv /u01/crs /u01/crsbak

 

3.为了避免新配置和旧的配置信息冲突,最好清除就得clusterware配置信息

清理旧配置信息(在各节点运行)


3.1 删除crs自启动信息


修改 /etc/inittab, 删除以下三行.


h1:2:respawn:/etc/init.evmd run >/dev/null 2>&1 </dev/null
h2:2:respawn:/etc/init.cssd fatal >/dev/null 2>&1 </dev/null
h3:2:respawn:/etc/init.crsd run >/dev/null 2>&1 </dev/null

 

linux:


rm /etc/oracle/*
rm -f /etc/init.d/init.cssd
rm -f /etc/init.d/init.crs
rm -f /etc/init.d/init.crsd
rm -f /etc/init.d/init.evmd
rm -f /etc/rc2.d/K96init.crs
rm -f /etc/rc2.d/S96init.crs
rm -f /etc/rc3.d/K96init.crs
rm -f /etc/rc3.d/S96init.crs
rm -f /etc/rc5.d/K96init.crs
rm -f /etc/rc5.d/S96init.crs
rm -Rf /etc/oracle/scls_scr
rm -f /etc/inittab.crs
cp /etc/inittab.orig /etc/inittab

 

ps -ef|grep init.d

 

/etc/init.d/init.crsd
/etc/init.d/init.evmd
/etc/init.d/init.cssd

 

3.2 清理旧配置信息

 

rm -rf /etc/oracle/* (删除ocr.loc)
rm -rf /var/tmp/.oracle或/tmp/.oracle

 

3.3使用dd清除vote disk和ocr(裸设备)

dd if=/dev/zero f=/dev/votedisk_device bs=8192 count=2560
dd if=/dev/zero f=/dev/ocr_device bs=8192 count=12800

 

参考:

清除10g RAC CRS的方法
http://6month.itpub.net/post/37672/470422

 


4.分别在每个节点上执行$CRS_HOME/install/rootdelete.sh

 

5.在任何一个节点上执行脚本$CRS_HOME/install/rootdeinstall.sh,只需要在一个节点上执行即可

 

以上就是删除crs的配置,下面就是重新安装crs ,执行如下的命令检查,如果没有返回值,那就可以继续安装了

 

 ps -e | grep -i ‘ocs[s]d’
 ps -e | grep -i ‘cr[s]d.bin’
 ps -e | grep -i ‘ev[m]d.bin’

 


6.和在步骤5同一个节点上执行脚本$CRS_HOME/root.sh

 

7.在其他节点执行$CRS_HOME/root.sh,然后注意下最后一个节点的输出,最后还要运行"./VIPCA"
 
8.用netca重新配置监听器,确认注册到ocr中

 

这个时候用crs_stat -t -v 可以看到listener,ONS,GSD,VIP注册到ocr中,还需要把asm,数据库也注册到ocr中

 

9.向ocr中注册ASM

 

srvctl add asm -n rac1 -i +ASM1 -o $ORACLE_HOME
srvctl add asm -n rac2 -i +ASM2 -o $ORACLE_HOME

 

10.启动ASM

 

srvctl start asm -n rac1
srvctl start asm -n rac2

 

一般在启动最后一个asm实例的时候会报错,一般是因为rac无法确认用哪个网络作为 private interconnect
所以可以通过向两个ASM实例的pfile中添加下面两个参数

 

在文件里添加两个参数/u01/app/oracle/product/10.2.0/db_1/dbs/init+ASM2.ora


+ASM1.cluster_interconnects='192.168.0.31'
+ASM2.cluster_interconnects='192.168.0.22'


ip一定要写对,否则会出现问题,然后在重启asm实例,问题即可解决

 

11. 手工注册database对象(数据库的名字要和db_name大小写一样)

 

srvctl add database -d RAC -o $ORACLE_HOME

 

12. 手工注册两个实例对象(实例名要和isntance_name大小写一样)

 

srvctl add instance -d RAC -i rac1 -n rac1
srvctl add instance -d RAC -i rac2 -n rac2

 

13.修改实例和asm实例的对应关系

 

srvctl modify instance -d RAC -i RAC1 -s +ASM1
srvctl modify instance -d RAC -i RAC2 -s +ASM2

 

14.启动数据库(在这过程一般也会报错,所以要向asm实例那样手工指定private interconnect)

 

sql> alter system set cluster_interconnects='192.168.0.31' scope=spfile sid='*'
sql> alter system set cluster_interconnects='192.168.0.22' scope=spfile sid='*'

 

然后启动数据库


srvctl start database -d RAC

 

15.检查ons是否正常

 

[root@rac2 oracle]# ps -ef |grep ons
root      4008 10066  0 08:39 pts/0    00:00:00 grep ons
root      5660     1  0 06:42 ?        00:00:00 sendmail: accepting connections
oracle   16107     1  0 07:21 ?        00:00:00 /u01/crs/oracle/product/10.2.0/crs/opmn/bin/ons -d
oracle   16108 16107  0 07:21 ?        00:00:00 /u01/crs/oracle/product/10.2.0/crs/opmn/bin/ons -d


[root@rac2 oracle]# onsctl ping
Number of onsconfiguration retrieved, numcfg = 0
ons is not running ...
[root@rac2 oracle]# onsctl start
Number of onsconfiguration retrieved, numcfg = 0
Number of onsconfiguration retrieved, numcfg = 0
onsctl: ons started
[root@rac2 oracle]# onsctl ping
Number of onsconfiguration retrieved, numcfg = 0
ons is running ...
[root@rac2 oracle]#

 

如果ons无法启动,可以用如下命令,也可以直接编辑文件$CRS_HOME/opmn/conf/ons.config

 

racgons  add_config hostname1:port hostname2:port
racgons  remove_config hostname1:port hostname2:port


16.检查网络是否正常用命令oifcfg

 

eg:添加接口配置


oifcfg setif -global eth0/192.168.2.0:public
oifcfg setif -global eth1/192.168.0.0:cluster_interconnect

 

17.用下面的两个命令核查配置的正确性

 

1. [oracle@rac1 ~]$ /tmp/10201_clusterware_linux32/clusterware/cluvfy/runcluvfy.sh  stage -post crsinst -n rac1,rac2

2. crs_stat -t -v

 

 

到此votingdisk就已经重新配置成功了,但是在这过程中也遇到很不少问题,下面就是对问题
总结,其中第三个问题走了很多弯路,用了小半天的时间,其他的问题很快就都解决了。

 

1. 由于votingdisk磁盘故障,所以在vmware里重新添加删除磁盘
2. crs的启动问题(节点时间同步)
3. asm2实例无法启动的问题(把点写成逗号)
4. 无法启动数据库的问题
5. onsctl启动的问题
6. 更改/dev/raw属主的问题
7. oifcfg注册网络的问题

 

具体的问题及解决方法,请参考另一篇文章:http://blog.csdn.net/wyzxg/archive/2010/05/09/5572418.aspx

 

 

 

参考文档:

重建votedisk/ocr
http://www.laoxiong.net/10g_rebuild_crs_rac.html
http://www.dbasoul.com/2010/700.html

 

 

 

 ------end------

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RAC重建OCR/Voting disk总结 的相关文章

  • 可以使用两个独立的 SQLite 数据库吗?

    我有一个 sqlite 数据库 其中存储用户定义的信息和用户只读的信息 我觉得将来可能需要修改只读信息 并且我不想进行整个数据迁移 有没有一种方法可以使用单独的 sqlite 数据库来存储只读信息 该数据库可以轻松替换 如果是这样 您能否就
  • 数据库的创建日期

    这是一个问题 起源于this https stackoverflow com questions 2522626 check how old an oracle database is 2523227 2523227杰米提出的问题 我想我会
  • 如何通过单个mysql查询更新多个表?

    我有两个表 tb1 和 tb2 我必须在用户级别更新两个表的公共列 我对两个表都有一个共同的标准 例如用户名 所以我想这样更新 UPDATE tb1 tb2 SET user level 1 WHERE username Mr X 但不知何
  • 使用 LIKE 和撇号的 Mysql 查询问题

    所以我有一个有趣的问题 我从未遇到过 并且似乎找不到太多有关纠正该问题的信息 我有一个庞大的数据库 里面有大量的数据 相当于 10 年的数据 并试图对其进行搜索 现在搜索功能运行良好 但最近有人让我注意到一个 错误 如果你愿意的话 我尝试对
  • 如何使用 Java 创建多个模式连接?

    我必须使用两个数据库 DB2 Oracle 我在 DB2 数据库中有一个名为NAVID 我想使用 Java 为 Oracle 中的所有表创建相同的架构 public class automateExport static String va
  • 我应该保留远程数据库的本地副本吗?

    我正在开发一个应用程序 基本上允许人们创建 加入和管理其他人的群组 群组内的人也可以互相发送消息 我一直在想哪条路会更好 保留包含所有信息的远程数据库 包括发送给用户和从用户发送的消息 并让应用程序在每次需要信息时查询服务器 甚至是它以前见
  • 使用 Spring Boot 的 Flyway Core 给出错误 'delayedFlywayInitializer' 和 'entityManagerFactory' 之间的循环依赖关系

    我想在 SQL Server 数据库上导入一些数据 我使用的是 Spring Boot 2 3 4 我还使用 Hibernate 来生成表 我在pom中添加了flyway核心
  • 多个数据库连接

    我有三张桌子 categories content info and content The categories表包含类别的id及其 IDparent类别 The content info包含两列 entry id帖子的 ID 和cat
  • Python Twisted 和数据库连接

    我们的工作项目包括同步应用程序 短期 和异步 Twisted 应用程序 长期 我们正在重构我们的数据库 并将构建一个 API 模块来解耦该模块中的所有 SQL 我想创建该 API 以便同步和异步应用程序都可以使用它 对于同步应用程序 我希望
  • 无法更改 MS Access 2007 上的数据类型

    我有一个巨大的数据库 800MB 其中包含一个名为 上次修改日期 的字段 目前该字段作为文本数据类型输入 但需要将其更改为日期 时间字段以执行一些查询 我有另一个完全相同的数据库 但其中只有 35MB 的数据 当我更改数据类型时 它工作正常
  • 使用 SYS_CONNECT_BY_PATH 的 Oracle 累积计数

    当我尝试对实际数据执行以下查询时 它返回了更多记录数 请帮助解决这个问题 下面是表 DM TEMP SUMMING DVC BY FW 中的实际数据 device count dmc id firmware version cg id im
  • 有很多数据库视图可以吗?

    我很少 每月 每季度 使用 Microsoft SQL Server 2005 数据库视图生成数百份 Crystal Reports 报告 在我不读取这些视图的所有时间里 这些视图是否会浪费 CPU 周期和 RAM 因为我很少从视图中读取数
  • 在Oracle中查找不包含数字数据的行

    我试图在一个非常大的 Oracle 表中找到一些有问题的记录 即使该列是 varchar2 列 也应包含所有数值数据 我需要找到不包含数字数据的记录 当我尝试在此列上调用 to number col name 函数时 它会抛出错误 我想你可
  • 将 Access 数据库转换为 SQL Microsoft DTS - 数据类型“130”不在映射文件中

    我正在尝试将大型 Access mdb 数据库导出到 SQL Server 数据库 但遇到了 Microsoft DTS 无法识别 Access 数据库中特定类型字段的数据类型的问题 我查看了相关的访问表 它们被设置为长度为 1 的 文本
  • 使用 ActiveAndroid 库存储 HashMap

    我有一堂课 Table name Control public class Control extends Model Column private String name Column private Map
  • 如何在Oracle中从表中选择列,*?

    我正在创建很多脚本 有时为了检查表是否根据我的需要进行更新 我会即时编写几个 SELECT 语句 在 SQL SERVER 中你可以这样写 SELECT Column1 FROM MY TABLE 出于可见性原因 这很有用 但是这似乎在 O
  • Hibernate 本机查询 - char(3) 列

    我在 Oracle 中有一个表 其中列 SC CUR CODE 是 CHAR 3 当我做 Query q2 em createNativeQuery select sc cur code sc amount from sector cost
  • 每个数据库多个/单个 *.edmx 文件

    我有一个通过 ADO net 数据服务与数据库交互的项目 数据库很大 近 150 个具有依赖关系的表 该项目几年前开始 当时使用的是数据集 现在我们正在转向实体模型关系 由于我们添加了更多需要使用的表 该模型正在不断增长 这是管理这一切的正
  • SQL Server 大小写/排序规则问题

    今天我在客户数据库中遇到了一个奇怪的情况 SQL Server 2005 数据库排序规则不区分大小写 因此我可以使用任何大小写编写 SQL 查询 没有任何问题 除了一个 一张特定表中的一个特定列称为 DeadZone 如果我这样查询 从表名
  • 打印表数据mysql php

    我在尝试打印表格的一些数据时遇到问题 我是 php mysql 的新手 但我认为我的代码是正确的 这里是 h1 Lista de usu rios h1

随机推荐

  • 记一次wwwscan目录扫描后获取敏感目录登录后台

    1 开启wwwscan工具 2 配置信息 目标域名不要带协议头 直接www xxx com或者192 168 67 xxx 3 点击 扫描 等待扫描之后会在wwwscan的同级目录下生成结果文件 4 打开第三个文件 5 点击访问 说明 tx
  • [机器学习与scikit-learn-31]:算法-回归-线性模拟拟合拟合非线性数据-概述

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 123555129 目录 第1章 什么是
  • 进程和线程的详解和区别

    1 进程和线程概述 我们都知道计算机的核心是CPU 它承担了所有的计算任务 而操作系统是计算机的管理者 它负责任务的调度 资源的分配和管理 统领整个计算机硬件 应用程序是具有某种功能的程序 程序是运行于操作系统之上的 2 进程 我们编写的代
  • 交直流双电源无缝切换

    使用ATmega32编写交直流双电源无缝切换 输入过欠压保护 输出过流保护 主要使用了单片机自带的比较器功能 比较器的一端使用了LT431制作的2 5V基准源 include iom32v h define WDR asm WDR defi
  • 尚硅谷nodejs操作mongodb报错,MongoNotConnectedError: Client must be connected before running operations【已解决】

    1 准备好第一步的静态案例 2 启动mongodb服务 在cmd运行mongod Waiting for connections attr port 27017 ssl off 3 准备mongoose数据库模块化 4 新建AccountM
  • this.$el.querySelectorAll is not a function报错解决

    问题描述 使用el tree时 报错this el querySelectorAll is not a function 导致树无法渲染 问题解析 参考如下代码片段
  • [激光原理与应用-66]:激光器-器件 - 二极管

    第1章 二级管的基本原理 1 1 原理 现在的电子产品中 元件应用最多的是半导体材料 在集成电路中 也是应用的半导体单晶硅作为基底 通过离子注入技术而添加了硼和磷元素从而构成数以亿计的半导体晶体管 对于半导体元件来说 发挥作用的是PN结 在
  • 5G/NR 随机接入过程之Msg2

    21 6 Msg2 UE发送了preamble之后 将在RAR时间窗 RA Response window 内监听PDCCH 以接收对应RA RNTI的RAR 此时不考虑可能出现的测量gap 如果在RAR时间窗内没有接收到gNB回复的RAR
  • RPA经验分享--离线识别普通验证码

    了解RPA www i search com cn 学习RPA https support i search com cn 下载RPA https www i search com cn from csdn 前言 以下方法适用于简易的验证码
  • 【Linux】进程控制2-进程等待

    文章目录 进程等待 进程等待的必要性 wait函数 waitpid函数 进程等待 进程等待的必要性 我们之前提到过僵尸进程 僵尸进程就是子进程先于父进程退出 子进程的退出状态信息发送给父进程但是父进程忽略处理 子进程就变成了僵尸进程 解决僵
  • programming massively parrellel processors(1)

    I have to say this is a very good book to learn more about cuda especially for a novice like me who take interest in par
  • 入职字节两个月,实在卷不动,还是离职了

    对自己收入不满意 就看下自己每天做了什么 把每天记录下来 看下自己的时间都用在哪里了 对自己的时间分配搞清楚了 就可以着手去改进 如果一直糊涂的过 时间到了报复就来了 时间管理很简单 不过大多数人是不会重视的 别总抱怨自己赚钱少 关键你做了
  • Asgard King(埃氏筛法)

    Description Thor had great power but his arrogant and reckless behavior set off an ancient war and he was demoted into t
  • Mock介绍

    mock的定义 what mock是在测试过程中 对于一些不容易构造 获取的对象 创建一个mock对象来模拟对象的行为 为什么要使用mock why 在做单元测试过程中 经常会有以下的场景 class A 依赖 class B class
  • 14.C++之对象的初始化和清理

    学习目标 学习内容 1 对象的初始化和清理 在C 中 每个对象也都会有初始设置以及 对象销毁前的清理数据的设置 今天介绍两种函数 构造函数和析构函数 来完成对象的初始化和清理 构造函数 主要用于为对象的成员属性赋值 又编译器自动完成 无须手
  • 报错:SyntaxError: (unicode error) ‘unicodeescape‘ codec can‘t decode bytes in position xx: truncated

    我给出的错误代码 错误原因 文件路径输入问题 解决方法 1 在前面加r 2 将 变为 3 将 变为
  • C++学习日志

    小白C 从入门到放弃 1 黑马通讯录管理系统 点运算符 和箭头运算符 gt 的区别 2 Essential C 中练习2 1 3 Essential C 中练习2 2 4 Essential C 中练习2 3 5 Essential C 中
  • C++中变量声明和定义

    1 声明和定义都规定了变量的名字和类型 但是定义会申请内存空间 也可能为变量赋一个初始值 2 同一个变量声明可以有多处 但定义只能有一处 extern int i 声明i而非定义i int j 声明并定义j extern关键字就是告诉编译器
  • 机器智能学科

    机器智能学科简介 机器智能 Machine Intelligence MI 是指由机器 计算机以及其它计算设备 实现的人的智能 也被称为人工智能 Artificial Intelligence AI 专指计算机科学中与智能行为自动化有关的一
  • RAC重建OCR/Voting disk总结

    author skatetime 2010 05 10 我的测试环境 母系统 win2003虚拟软件 vmware3 2 1guest系统 centos4 7oracle db oracle10 2 1 前两天由于意外原因 同事从新插拔下电