梁铭图,新炬网络首席架构师。具有十余年数据库运维、数据库设计、数据治理以及系统规划建设经验,拥有Oracle OCM和ACE Director、Togaf企业架构师(鉴定级)、IBM CATE等认证,曾获dbaplus年度MVP、华为云MVP等荣誉,并参与数据资产管理国家标准的编写工作。在数据库运维管理和架构设计、运维体系规划、数据资产管理方面有深入研究。
背景
OCR文件是存放在共享存储中的,存储了所有与集群,RAC数据库相关的配置信息的一个文件。它就好比Windows的一个注册表(对于windows来说注册表存储的是所有的软件对应用户和相关的配置信息)。
OCR文件是存放在共享存储中的,所以在整个集群中每个节点都通过本地的OCR进程去访问OCR缓存在其内存中维护着的一个副本。
OCR包含着如下内容:
节点成员信息
数据库实例,节点,以及其他映射关系
资源配置信息
ASM信息
Oracle集群中相关进程的信息
一般的OCR文件,会4小时自动备份一次,可以使用如下方式检查:
[grid@orcl1 bin]$ ./ocrconfig -showbackup
问题描述
某个客户的数据库OCR文件出现损坏,集群重启后出现OCR丢失,导致Oracle集群软件无法正常启动,需要尝试从备份中恢复。
问题处理
1)查看现象
[grid@rac1 ~]$ tail -200f /u01/app/11.2/grid/log/rac1/alertrac1.log
[root@rac1 grid]# crsctl start crs
然后发现日志出现以下报错信息:
说明集群找不到voting盘文件,ocr记录的是集群配置信息
使用ocrcheck检测报错也无法显示信息:
[root@rac1 ~]# ocrcheck
PROT-602: Failed to retrieve data from the cluster registry
PROC-26: Error while accessing the physical storage
2)强制停止CRS
[root@rac1 ~]# crsctl stop crs –f
[root@rac1 ~]# ps -ef|grep crs
[root@rac1 ~]# ps -ef|grep css
[root@rac1 ~]# ps -ef|grep ohas
[root@rac1 ~]# ps -ef|grep evm
确认集群停止成功
3)以独占模式启动crs
crsctl start crs -excl –nocrs
说明:
4)重建ASM spfile
[grid@rac1 ~]$ cat /tmp/asm_pfile.ora
+ASM1.asm_diskgroups='ARCHASMGROUP', 'DATAASMGROUP'#Manual Mount
+ASM2.asm_diskgroups='ARCHASMGROUP', 'DATAASMGROUP'#Manual Mount
*.asm_diskstring='/dev/oracleasm/disks/*'
*.asm_power_limit=1
*.diagnostic_dest='/u01/app/grid'
*.instance_type='asm'
*.large_pool_size=12M
*.remote_login_passwordfile='EXCLUSIVE'
5)启动ASM
[grid@rac1 ~]$ sqlplus / as sysasm
SQL>shutdown immediate
ASM diskgroups dismounted
ASM instance shutdown
SQL> startup pfile='/tmp/asm_pfile.ora';
ASM instance started
SQL> col path for a50
SQL> set linesize 170
SQL> select group_number, disk_number, mount_status, header_status, path from v$asm_disk;
6)创建CRS磁盘组
SQL> create diskgroup CVD normal redundancy disk '/dev/oracleasm/disks/CVD1','/dev/oracleasm/disks/CVD2', '/dev/oracleasm/disks/CVD3' attribute 'au_size'='1M' 'compatible.asm'='11.2.0.0.0', 'compatible.rdbms'='11.2.0.0.0';
create diskgroup CVD normal redundancy disk '/dev/oracleasm/disks/CVD01','/dev/oracleasm/disks/CVD02', '/dev/oracleasm/disks/CVD03'
*
ERROR at line 1:
ORA-15018: diskgroup cannot be created
ORA-15033: disk '/dev/oracleasm/disks/CVD3' belongs to diskgroup "CVD"
这里报错是因为CVD3没清除磁盘头信息
7)清除CVD03磁盘头信息
[root@rac1 dev]# dd if=/dev/zero of=/dev/oracleasm/disks/CVD03 bs=1024 count=1000
SQL> create diskgroup CVD normal redundancy disk '/dev/oracleasm/disks/CVD01','/dev/oracleasm/disks/CVD02', '/dev/oracleasm/disks/CVD03' attribute 'au_size'='1M' 'compatible.asm'='11.2.0.0.0', 'compatible.rdbms'='11.2.0.0.0';
Diskgroup created.
8)创建spfile参数文件
SQL> create spfile='+CVD' from pfile='/tmp/asm_pfile.ora';
File created.
9)利用备份恢复OCR
# ocrconfig -restore /u01/app/11.2/grid/cdata/rac/backup00.ocr
恢复voting disk
[root@rac1 ~]# crsctl replace votedisk +CVD
Successful addition of voting disk 429d9c75-6a804fdf-bfeb8f1d-fa8358e9.
Successful addition of voting disk af38c76f-9d474f1f-bfa5c594-64fb0368.
Successful addition of voting disk 185a41992e3d4f57bf86248889c08561.
Successfully replaced voting disk group with +CVD.
CRS-4266: Voting file(s) successfully replaced
10)Ocr状态检测
ocrcheck
crsctl query css votedisk
11)重启CRS
[root@rac1 ~]# crsctl stop crs
[root@rac1 ~]# crsctl start crs
[root@rac2 ~]# crsctl start crs
[root@rac1 ~]# crsctl stat res -t
小结
OCR文件是CRS的主要配置文件之一,损坏会直接导致数据库集群的故障,因此定期检查备份也应列为数据库日常巡检的项目之一。
如果字段的最大可能长度超过255字节,那么长度值可能…
只能说作者太用心了,优秀
感谢详解
一般干个7-8年(即30岁左右),能做到年入40w-50w;有…
230721