暂无图片
暂无图片
6
暂无图片
暂无图片
暂无图片

oracle 19c rac的asm磁盘组所在的物理存储彻底歇菜了

原创 jieguo 2023-08-30
1726

oracle19c rac+oracle linux7.9+ibm v7000存储asm

1.故障现象

前端反馈无法连接数据库。
登录数据库服务器,发现数据库集群挂掉,无法启动。
检查共享存储:lsblk无法看到存储磁盘
mutilpath -ll自然也无法正常识别
image.png

image.png

2.处理思路

理想化方案A:解决存储问题–>系统识别共享磁盘–>重启crs集群服务–>一切恢复正常,无数据丢失

由于存储IBM V7000故障后,工程师长时间无法修复(1天),只能启用备选方案B:临时更换新存储–>参照原生产磁盘个数和大小划分lun–>系统识别新共享磁盘,配置/etc/mutilpath.conf的wwid–> 恢复ocr信息启动crs集群服务 -->新建库信息 --> 从备份带库恢复库(恢复到备份的时间点,丢失了asm存储中的归档日志和在线日志包含的数据)

3.如下记录恢复OCR信息启动CRS集群服务的步骤:

检查ocr备份:默认存放在asm磁盘组中,无法恢复。
image.png
搜索一下看看find / -name *ocr 发现在本地目录还有自动备份可用。
96853637098eea78bb3e148aa1bcdf0.png

–独占模式启动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

image.png

image.png

–恢复密码文件

[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>

image.png

–恢复完成,关闭重新启动集群

/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

最后修改时间:2023-09-28 14:41:55
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论