oracle19c rac+oracle linux7.9+ibm v7000存储asm
1.故障现象
前端反馈无法连接数据库。
登录数据库服务器,发现数据库集群挂掉,无法启动。
检查共享存储:lsblk无法看到存储磁盘
mutilpath -ll自然也无法正常识别


2.处理思路
理想化方案A:解决存储问题–>系统识别共享磁盘–>重启crs集群服务–>一切恢复正常,无数据丢失
由于存储IBM V7000故障后,工程师长时间无法修复(1天),只能启用备选方案B:临时更换新存储–>参照原生产磁盘个数和大小划分lun–>系统识别新共享磁盘,配置/etc/mutilpath.conf的wwid–> 恢复ocr信息启动crs集群服务 -->新建库信息 --> 从备份带库恢复库(恢复到备份的时间点,丢失了asm存储中的归档日志和在线日志包含的数据)
3.如下记录恢复OCR信息启动CRS集群服务的步骤:
检查ocr备份:默认存放在asm磁盘组中,无法恢复。

搜索一下看看find / -name *ocr 发现在本地目录还有自动备份可用。

–独占模式启动crs创建新的DiskGroup组
export PATH=$PATH:/oracle/app/19c/grid/bin
crsctl stop crs -f
crsctl start crs -excl -nocrs
sqlplus / as sysasm
alter system set asm_diskstring='/dev/mapper/asm*';
create diskgroup CRS normal redundancy
disk '/dev/mapper/asmcrs1'
disk '/dev/mapper/asmcrs2'
quorum disk '/dev/mapper/asmcrs3'
attribute 'compatible.asm'='19.0.0.0.0';
–恢复ocr
cd /oracle/app/grid/crsdata/rac1/ocr
/oracle/app/19c/grid/bin/ocrconfig -restore backup00.ocr
/oracle/app/19c/grid/bin/crsctl query css votedisk
/oracle/app/19c/grid/bin/crsctl replace votedisk +CRS
/oracle/app/19c/grid/bin/crsctl query css votedisk
–编辑asm参数文件启动
vi /home/grid/a.txta.txt
*.asm_diskstring='/dev/mapper/asm*'
*.asm_power_limit=1
*.diagnostic_dest='/oracle/app/grid'
*.instance_type='asm'
*.large_pool_size=3072M
*.remote_login_passwordfile='EXCLUSIVE'
sqlplus / as sysasm
create spfile='+CRS' from pfile='/home/grid/a.txt';
–以正常模式启动CRS集群
crsctl stop crs -f
crsctl start crs
ocrcheck


–恢复密码文件
[grid@rac1 ~]$ srvctl config asm
ASM 主目录: <CRS home>
口令文件: +CRS/orapwASM
口令文件备份: +CRS/orapwASM_backup
ASM 监听程序: LISTENER
ASM 实例计数: 3
集群 ASM 监听程序: ASMNET1LSNR_ASM
---12c之后asm的密码文件配置在ocr磁盘组里面,因此需要进行重建,否则集群会出现报错
ORA-01017: invalid username/password; logon denied
ORA-17503: ksfdopn:2 Failed to open file +CRS/orapwASM
ORA-15173: entry 'orapwASM' does not exist in director
---查看当前asm没有配置密码文件,没有用户信息
[grid@rac1 trace]$ asmcmd lspwusr
Username sysdba sysoper sysasm
---创建密码文件,配置sys,asmsnmp用户密码
[grid@rac1 trace]$ asmcmd pwcreate --asm +CRS/orapwASM 'Orates#xK' -f
[grid@rac1 trace]$ asmcmd lspwusr
Username sysdba sysoper sysasm
SYS TRUE TRUE FALSE
[grid@rac1 trace]$ asmcmd orapwusr --grant sysasm SYS
[grid@rac1 trace]$ asmcmd orapwusr --add ASMSNMP
Enter password: ****************** ---->输入asmsnmp密码
[grid@rac1 trace]$ asmcmd lspwusr
Username sysdba sysoper sysasm
SYS TRUE TRUE TRUE
ASMSNMP FALSE FALSE FALSE
密码文件添加crsd连接用户密码
#查找crsd连接用户以及密码
---dump一下OCR的文件路径
$ORACLE_HOME/bin/ocrdump /tmp/ocr.dmp
[grid@rac1 ~]$ $ORACLE_HOME/bin/ocrdump /tmp/ocr.dmp
PROT-310: Not all keys were dumped due to permissions.
---通过/tmp/ocr.dmp查找CRSUSER__ASM_001用户的ORATEXT
[SYSTEM.ASM.CREDENTIALS.USERS.CRSUSER__ASM_001]
ORATEXT : b430a61cb9f55f7cbff5fe7d3b654eda:grid
SECURITY : {USER_PERMISSION : PROCR_ALL_ACCESS, GROUP_PERMISSION : PROCR_READ, OTHER_PERMISSION : PROCR_NONE, USER_NAME : grid, GROUP_NAME : oinstall}
---获取CRSUSER__ASM_001密码
[grid@rac1 ~]$ crsctl get credmaint -path /ASM/Self/b430a61cb9f55f7cbff5fe7d3b654eda -credtype userpass -id 0 -attr passwd -local
ZK0HFXQi6vcFBL9WLcCpR9dRX1ltM
---创建crsd用户密码
[grid@rac1 trace]$ asmcmd orapwusr --add CRSUSER__ASM_001
Enter password: ***************************** 密码输入上面查到的ZK0HFXQi6vcFBL9WLcCpR9dRX1ltM
[grid@rac1 trace]$
---添加sysdba,sysasm组
ASMCMD> lspwusr
Username sysdba sysoper sysasm
SYS TRUE TRUE TRUE
ASMSNMP TRUE FALSE FALSE
CRSUSER__ASM_001 FALSE FALSE FALSE
ASMCMD> orapwusr --grant sysdba CRSUSER__ASM_001
ASMCMD> orapwusr --grant sysasm CRSUSER__ASM_001
ASMCMD> lspwusr
Username sysdba sysoper sysasm
SYS TRUE TRUE TRUE
ASMSNMP FALSE FALSE FALSE
CRSUSER__ASM_001 TRUE FALSE TRUE
ASMCMD>

–恢复完成,关闭重新启动集群
/oracle/app/19c/grid/bin/crsctl stop crs -f
/oracle/app/19c/grid/bin/crsctl start crs
/oracle/app/19c/grid/bin/crsctl check crs
/oracle/app/19c/grid/bin/crsctl stat res -t -init
/oracle/app/19c/grid/bin/crsctl stat res -t
--新窗口观察日志
su - grid
cd $ORACLE_BASE/diag/crs/rac1/crs/trace
tail -f alert.log
–失败后的相关处理:
比如格式化asm磁盘头:
dd if=/dev/zero of=/dev/mapper/asmcrs1 bs=8192 count=128000
dd if=/dev/zero of=/dev/mapper/asmcrs2 bs=8192 count=128000
dd if=/dev/zero of=/dev/mapper/asmcrs3 bs=8192 count=128000
4.相关参考:
https://mp.weixin.qq.com/s/h5WQqUiUs_QKyc17l_UPBQ
https://mp.weixin.qq.com/s/LzLYABgdGf2qBq6O60JGlw
https://mp.weixin.qq.com/s/uj_P9odxS7sQqn6rrC3k_A
http://blog.itpub.net/24500180/viewspace-2071841/
5.小结:
1)关键生产环境,物理rman备份必不可少,最后可能是靠它救命的。
2)一个磁盘阵列也存在很大风险,如果有两个不同的阵列,并且做了adg,那么类似这个情况,再慢也能在1小时内恢复业务,且几乎不丢数据。目前这个情况不仅丢失了数据,还耗费了约两天时间。
3)如果没有ocr备份或者上述方法解决不了,那么需要考虑卸载GI的方式处理。
How to Deconfigure/Reconfigure(Rebuild OCR) or Deinstall Grid Infrastructure (Doc ID 1377349.1)
https://blog.csdn.net/jycjyc/article/details/132559255




