有客户的数据库由于不当操作导致asm磁盘头损坏,进行的操作命令类似
dd if=/dev/zero of=/dev/dm-29 bs=1024K count=10 |
asm磁盘组无法mount,提示ORA-15042
SQL> ALTER DISKGROUP DATA MOUNT /* asm agent *//* {1:1712:2} */ 2026-05-19T21:57:16.517284-04:00NOTE: cache registered group DATA 5/0xAE103296NOTE: cache began mount (first) of group DATA 5/0xAE103296NOTE: Assigning number (5,10) to disk (/dev/dm-29)…………NOTE: Assigning number (5,18) to disk (/dev/dm-15)NOTE: Assigning number (5,0) to disk (/dev/dm-7)NOTE: Assigning number (5,15) to disk (/dev/dm-5)2026-05-19T21:57:16.650481-04:00cluster guid (b216d47e2bf86f6aff34a36119b0c161) generated for PST Hbeat for instance 12026-05-19T21:57:22.659262-04:00NOTE: GMON heartbeating for grp 5 (DATA)GMON querying group 5 at 28 for pid 42, osid 129962026-05-19T21:57:22.661447-04:00NOTE: Assigning number (5,14) to disk ()2026-05-19T21:57:22.662476-04:00GMON querying group 5 at 29 for pid 42, osid 129962026-05-19T21:57:22.663144-04:00NOTE: cache dismounting (clean) group 5/0xAE103296 (DATA)NOTE: messaging CKPT to quiesce pins Unix process pid: 12996, image: oracle@dlycdb1 (TNS V1-V3)NOTE: dbwr not being msg'd to dismountNOTE: LGWR not being messaged to dismountNOTE: cache dismounted group 5/0xAE103296 (DATA)NOTE: cache ending mount (fail) of group DATA number=5 incarn=0xae103296NOTE: cache deleting context for group DATA 5/0xae1032962026-05-19T21:57:22.720673-04:00GMON dismounting group 5 at 30 for pid 42, osid 129962026-05-19T21:57:22.721055-04:00NOTE: Disk DATA_0000 in mode 0x7f marked for de-assignmentNOTE: Disk DATA_0001 in mode 0x7f marked for de-assignment…………NOTE: Disk DATA_0013 in mode 0x7f marked for de-assignmentNOTE: Disk DATA_0015 in mode 0x7f marked for de-assignmentNOTE: Disk DATA_0016 in mode 0x7f marked for de-assignmentNOTE: Disk DATA_0017 in mode 0x7f marked for de-assignmentNOTE: Disk DATA_0018 in mode 0x7f marked for de-assignmentERROR: diskgroup DATA was not mountedORA-15032: not all alterations performedORA-15040: diskgroup is incompleteORA-15042: ASM disk "14" is missing from group number "5"2026-05-19T21:57:22.745140-04:00ERROR: ALTER DISKGROUP DATA MOUNT /* asm agent *//* {1:1712:2} */ |
由于客户这个是19c版本,直接使用备份au还原,然后mount磁盘组成功
SQL> alter diskgroup data mount2026-05-19T22:40:59.137657+08:00NOTE: cache registered group DATA 2/0xB126DA41NOTE: cache began mount (first) of group DATA 2/0xB126DA41NOTE: Assigning number (2,14) to disk (/dev/dm-29)NOTE: Assigning number (2,8) to disk (/dev/dm-28)…………NOTE: Assigning number (2,2) to disk (/dev/dm-7)NOTE: Assigning number (2,0) to disk (/dev/dm-6)NOTE: Assigning number (2,1) to disk (/dev/dm-3)2026-05-19T22:40:59.303908+08:00cluster guid (b216d47e2bf86f6aff34a36119b0c161) generated for PST Hbeat for instance 22026-05-19T22:41:05.312792+08:00NOTE: GMON heartbeating for grp 2 (DATA)GMON querying group 2 at 80 for pid 35, osid 530512026-05-19T22:41:05.314925+08:00NOTE: cache is mounting group DATA created on 2024/11/28 17:55:45NOTE: cache opening disk 0 of grp 2: DATA_0000 path:/dev/dm-6NOTE: 05/20/26 16:41:04 DATA.F1X0 found on disk 0 au 10 fcn 0.0 datfmt 1NOTE: cache opening disk 1 of grp 2: DATA_0001 path:/dev/dm-3…………NOTE: cache opening disk 13 of grp 2: DATA_0013 path:/dev/dm-18NOTE: cache opening disk 14 of grp 2: DATA_0014 path:/dev/dm-29NOTE: cache opening disk 15 of grp 2: DATA_0015 path:/dev/dm-16NOTE: cache opening disk 16 of grp 2: DATA_0016 path:/dev/dm-17NOTE: cache opening disk 17 of grp 2: DATA_0017 path:/dev/dm-20NOTE: cache opening disk 18 of grp 2: DATA_0018 path:/dev/dm-212026-05-19T22:41:05.317307+08:00NOTE: cache mounting (first) external redundancy group 2/0xB126DA41 (DATA)2026-05-19T22:41:05.522191+08:00NOTE: attached to recovery domain 22026-05-19T22:41:05.558136+08:00validate pdb 2, flags x4, valid 0, pdb flags x204 * validated domain 2, flags = 0x200NOTE: cache recovered group 2 to fcn 0.46336611NOTE: redo buffer size is 512 blocks (2105344 bytes)2026-05-19T22:41:05.569479+08:00NOTE: LGWR attempting to mount thread 1 for diskgroup 2 (DATA)NOTE: LGWR found thread 1 closed at ABA 110.6507 lock domain=0 inc#=0 instnum=1NOTE: LGWR mounted thread 1 for diskgroup 2 (DATA)2026-05-19T22:41:05.574499+08:00mntstmp=2026/05/20 16:41:05.5720002026-05-19T22:41:05.574854+08:00NOTE: cache mounting group 2/0xB126DA41 (DATA) succeededNOTE: cache ending mount (success) of group DATA number=2 incarn=0xb126da412026-05-19T22:41:05.616227+08:00NOTE: Instance updated compatible.asm to 19.0.0.0.0 for grp 2 (DATA).2026-05-19T22:41:05.616754+08:00NOTE: Instance updated compatible.asm to 19.0.0.0.0 for grp 2 (DATA).2026-05-19T22:41:05.617932+08:00NOTE: Instance updated compatible.rdbms to 19.0.0.0.0 for grp 2 (DATA).2026-05-19T22:41:05.618303+08:00NOTE: Instance updated compatible.rdbms to 19.0.0.0.0 for grp 2 (DATA).2026-05-19T22:41:05.643844+08:00SUCCESS: diskgroup DATA was mounted |
虽然磁盘组mount成功,但是asm依旧在报错
这个客户胆子也真够大的,这样mount起来的磁盘组,还往里面加入磁盘出发Rebalance操作12026-05-20T09:18:34.292103-04:00Errors in file /u01/app/grid/diag/asm/+asm/+ASM1/trace/+ASM1_arb0_60220.trc:ORA-15196: invalid ASM block header [kfc.c:30747] [endian_kfbh] [2147483662] [1014] [0 != 1]ORA-15196: invalid ASM block header [kfc.c:30747] [endian_kfbh] [2147483662] [1014] [0 != 1]NOTE: cache repaired a corrupt block: group=2(DATA) dsk=14 blk=1014 on disk 14 from disk=14 (DATA_0014) incarn=4042690154 au=11 blk=1014 count=12026-05-20T09:18:36.721669-04:00WARNING: cache read a corrupt block: group=2(DATA) dsk=14 blk=1015 disk=14 (DATA_0014) incarn=4042690154 au=0 blk=1015 count=12026-05-20T09:18:36.721982-04:00Errors in file /u01/app/grid/diag/asm/+asm/+ASM1/trace/+ASM1_arb0_60220.trc:ORA-15196: invalid ASM block header [kfc.c:30747] [endian_kfbh] [2147483662] [1015] [0 != 1]NOTE: a corrupted block from group DATA was dumped to /u01/app/grid/diag/asm/+asm/+ASM1/trace/+ASM1_arb0_60220.trcWARNING: cache read (retry) a corrupt block: group=2(DATA) dsk=14 blk=1015 disk=14 (DATA_0014) incarn=4042690154 au=0 blk=1015 count=12026-05-20T09:18:36.724279-04:00Errors in file /u01/app/grid/diag/asm/+asm/+ASM1/trace/+ASM1_arb0_60220.trc:ORA-15196: invalid ASM block header [kfc.c:30747] [endian_kfbh] [2147483662] [1015] [0 != 1]ORA-15196: invalid ASM block header [kfc.c:30747] [endian_kfbh] [2147483662] [1015] [0 != 1]NOTE: cache repaired a corrupt block: group=2(DATA) dsk=14 blk=1015 on disk 14 from disk=14 (DATA_0014) incarn=4042690154 au=11 blk=1015 count=12026-05-20T09:44:20.469792-04:00NOTE: Starting expel slave for group 2/0xcd67eb4 (DATA)2026-05-20T09:44:20.473880-04:00NOTE: GroupBlock outside rolling migration privileged regionNOTE: requesting all-instance membership refresh for group=22026-05-20T09:44:20.530101-04:00NOTE: membership refresh pending for group 2/0xcd67eb4 (DATA)2026-05-20T09:44:20.534097-04:00GMON querying group 2 at 178 for pid 27, osid 701302026-05-20T09:44:20.557651-04:00SUCCESS: refreshed membership for 2/0xcd67eb4 (DATA)2026-05-20T09:44:23.489304-04:00NOTE: Attempting voting file refresh on diskgroup DATANOTE: Refresh completed on diskgroup DATA. No voting file found.2026-05-20T11:20:49.804413-04:00NOTE: stopping process ARB0NOTE: stopping process ARBA2026-05-20T11:20:51.538777-04:00SUCCESS: rebalance completed for group 2/0xcd67eb4 (DATA)2026-05-20T23:20:51.541462+08:00SUCCESS: ALTER DISKGROUP DATA ADD DISK '/dev/dm-20' SIZE 4194304M REBALANCE WAIT |
算幸运,由于ORA-15196: invalid ASM block header [kfc.c:30747] [endian_kfbh] 错误导致rebalance没有真正运行起来,从而该磁盘组没有dismount(19c这个方面确实增强不少,如果以前版本大概率会直接dismount掉)
客户在这样mount的磁盘组上尝试启动库,报ORA-01578错误,无法启动成功
2026-05-20T17:46:07.060794+08:00Error attempting to elevate LMHB's priority: no further priority changes will be attempted for this process2026-05-20T17:46:07.647114+08:00Undo initialization recovery: Parallel FPTR complete: start:26091908 end:26096229 diff:4321 ms (4.3 seconds)Undo initialization recovery: err:0 start: 26091907 end: 26096229 diff: 4322 ms (4.3 seconds)[50880] Successfully onlined Undo Tablespace 5.Undo initialization online undo segments: err:0 start: 26096229 end: 26096576 diff: 347 ms (0.3 seconds)Undo initialization finished serial:0 start:26091907 end:26096591 diff:4684 ms (4.7 seconds)Database Characterset is AL32UTF8No Resource Manager plan active2026-05-20T17:46:08.734113+08:00Corrupt block relative dba: 0x004030ee (file 1, block 12526)Completely zero block found during buffer readReread (file 1, block 12526) found same corrupt data (no logical check)2026-05-20T17:46:08.811455+08:00Corrupt Block Found TIME STAMP (GMT) = 05/20/2026 17:46:07 CONT = 0, TSN = 0, TSNAME = SYSTEM RFN = 1, BLK = 12526, RDBA = 4206830 OBJN = 37, OBJD = 37, OBJECT = I_OBJ2, SUBOBJECT = SEGMENT OWNER = SYS, SEGMENT TYPE = Index SegmentErrors in file /u01/app/oracle/diag/rdbms/xff/xff2/trace/xff2_ora_50880.trc (incident=800708):ORA-01578: ORACLE data block corrupted (file # 1, block # 12526)ORA-01110: data file 1: '+DATA/xff/DATAFILE/system.257.1186720165'2026-05-20T05:46:09.047772-04:00ALTER SYSTEM SET remote_listener=' xff-scan:11521' SCOPE=MEMORY SID='xff2';2026-05-20T05:46:09.049615-04:00ALTER SYSTEM SET listener_networks='' SCOPE=MEMORY SID='xff2';2026-05-20T17:46:09.812271+08:00*****************************************************************An internal routine has requested a dump of selected redo.This usually happens following a specific internal error, whenanalysis of the redo logs will help Oracle Support with thediagnosis.It is recommended that you retain all the redo logs generated (byall the instances) during the past 12 hours, in case additionalredo dumps are required to help with the diagnosis.*****************************************************************Corrupt block relative dba: 0x004030de (file 1, block 12510)Completely zero block found during buffer readReread (file 1, block 12510) found same corrupt data (no logical check)2026-05-20T17:46:10.350573+08:00Corrupt Block Found TIME STAMP (GMT) = 05/20/2026 17:46:09 CONT = 0, TSN = 0, TSNAME = SYSTEM RFN = 1, BLK = 12510, RDBA = 4206814 OBJN = 83, OBJD = 83, OBJECT = DEPENDENCY$, SUBOBJECT = SEGMENT OWNER = SYS, SEGMENT TYPE = Table SegmentErrors in file /u01/app/oracle/diag/rdbms/xff/xff2/trace/xff2_ora_50880.trc (incident=800709):ORA-01578: ORACLE data block corrupted (file # 1, block # 12510)ORA-01110: data file 1: '+DATA/xff/DATAFILE/system.257.1186720165'2026-05-20T17:46:10.694365+08:00Corrupt block relative dba: 0x00403000 (file 1, block 12288)Completely zero block found during validationReread of blocknum=12288, file=+DATA/xff/DATAFILE/system.257.1186720165. found same corrupt dataReread of blocknum=12288, file=+DATA/xff/DATAFILE/system.257.1186720165. found same corrupt dataReread of blocknum=12288, file=+DATA/xff/DATAFILE/system.257.1186720165. found same corrupt dataReread of blocknum=12288, file=+DATA/xff/DATAFILE/system.257.1186720165. found same corrupt dataReread of blocknum=12288, file=+DATA/xff/DATAFILE/system.257.1186720165. found same corrupt dataCorrupt block relative dba: 0x00403001 (file 1, block 12289)Completely zero block found during validationReread of blocknum=12289, file=+DATA/xff/DATAFILE/system.257.1186720165. found same corrupt dataReread of blocknum=12289, file=+DATA/xff/DATAFILE/system.257.1186720165. found same corrupt dataReread of blocknum=12289, file=+DATA/xff/DATAFILE/system.257.1186720165. found same corrupt dataReread of blocknum=12289, file=+DATA/xff/DATAFILE/system.257.1186720165. found same corrupt dataReread of blocknum=12289, file=+DATA/xff/DATAFILE/system.257.1186720165. found same corrupt data………………Corrupt block relative dba: 0x004030ff (file 1, block 12543)Completely zero block found during validationReread of blocknum=12543, file=+DATA/xff/DATAFILE/system.257.1186720165. found same corrupt dataReread of blocknum=12543, file=+DATA/xff/DATAFILE/system.257.1186720165. found same corrupt dataReread of blocknum=12543, file=+DATA/xff/DATAFILE/system.257.1186720165. found same corrupt dataReread of blocknum=12543, file=+DATA/xff/DATAFILE/system.257.1186720165. found same corrupt dataReread of blocknum=12543, file=+DATA/xff/DATAFILE/system.257.1186720165. found same corrupt dataCorrupt block relative dba: 0x0040301d (file 1, block 12317)Completely zero block found during buffer readReread (file 1, block 12317) found same corrupt data (no logical check)2026-05-20T17:46:12.183545+08:00Corrupt Block Found TIME STAMP (GMT) = 05/20/2026 17:46:11 CONT = 0, TSN = 0, TSNAME = SYSTEM RFN = 1, BLK = 12317, RDBA = 4206621 OBJN = 37, OBJD = 37, OBJECT = I_OBJ2, SUBOBJECT = SEGMENT OWNER = SYS, SEGMENT TYPE = Index SegmentErrors in file /u01/app/oracle/diag/rdbms/xff/xff2/trace/xff2_ora_50880.trc (incident=800710):ORA-01578: ORACLE data block corrupted (file # 1, block # 12317)ORA-01110: data file 1: '+DATA/xff/DATAFILE/system.257.1186720165'Incident details in: /u01/app/oracle/diag/rdbms/xff/xff2/incident/incdir_800710/xff2_ora_50880_i800710.trc2026-05-20T05:46:12.371040-04:00ALTER SYSTEM SET remote_listener=' xff-scan:11521' SCOPE=MEMORY SID='xff2';2026-05-20T05:46:12.372924-04:00ALTER SYSTEM SET listener_networks='' SCOPE=MEMORY SID='xff2';2026-05-20T17:46:13.814346+08:00Errors in file /u01/app/oracle/diag/rdbms/xff/xff2/trace/xff2_ora_50880.trc:ORA-00604: error occurred at recursive SQL level 1ORA-01578: ORACLE data block corrupted (file # 1, block # 12317)ORA-01110: data file 1: '+DATA/xff/DATAFILE/system.257.1186720165'2026-05-20T17:46:13.814407+08:00Errors in file /u01/app/oracle/diag/rdbms/xff/xff2/trace/xff2_ora_50880.trc:ORA-00604: error occurred at recursive SQL level 1ORA-01578: ORACLE data block corrupted (file # 1, block # 12317)ORA-01110: data file 1: '+DATA/xff/DATAFILE/system.257.1186720165'2026-05-20T17:46:13.814442+08:00Error 604 happened during db open, shutting down databaseErrors in file /u01/app/oracle/diag/rdbms/xff/xff2/trace/xff2_ora_50880.trc (incident=800711):ORA-00603: ORACLE server session terminated by fatal errorORA-01092: ORACLE instance terminated. Disconnection forcedORA-00604: error occurred at recursive SQL level 1ORA-01578: ORACLE data block corrupted (file # 1, block # 12317)ORA-01110: data file 1: '+DATA/xff/DATAFILE/system.257.1186720165'Corrupt block relative dba: 0x00403097 (file 1, block 12439)Completely zero block found during buffer readReread (file 1, block 12439) found same corrupt data (no logical check)2026-05-20T17:46:14.259044+08:00Corrupt Block Found TIME STAMP (GMT) = 05/20/2026 17:46:13 CONT = 0, TSN = 0, TSNAME = SYSTEM RFN = 1, BLK = 12439, RDBA = 4206743 OBJN = 18, OBJD = 18, OBJECT = OBJ$, SUBOBJECT = SEGMENT OWNER = SYS, SEGMENT TYPE = Table SegmentErrors in file /u01/app/oracle/diag/rdbms/xff/xff2/trace/xff2_gen0_48604.trc (incident=798852):ORA-01578: ORACLE data block corrupted (file # 1, block # 12439)ORA-01110: data file 1: '+DATA/xff/DATAFILE/system.257.1186720165'2026-05-20T17:46:13.814346+08:00Errors in file /u01/app/oracle/diag/rdbms/xff/xff2/trace/xff2_ora_50880.trc:ORA-00604: error occurred at recursive SQL level 1ORA-01578: ORACLE data block corrupted (file # 1, block # 12317)ORA-01110: data file 1: '+DATA/xff/DATAFILE/system.257.1186720165'2026-05-20T17:46:13.814407+08:00Errors in file /u01/app/oracle/diag/rdbms/xff/xff2/trace/xff2_ora_50880.trc:ORA-00604: error occurred at recursive SQL level 1ORA-01578: ORACLE data block corrupted (file # 1, block # 12317)ORA-01110: data file 1: '+DATA/xff/DATAFILE/system.257.1186720165'2026-05-20T17:46:13.814442+08:00Error 604 happened during db open, shutting down databaseErrors in file /u01/app/oracle/diag/rdbms/xff/xff2/trace/xff2_ora_50880.trc (incident=800711):ORA-00603: ORACLE server session terminated by fatal errorORA-01092: ORACLE instance terminated. Disconnection forcedORA-00604: error occurred at recursive SQL level 1ORA-01578: ORACLE data block corrupted (file # 1, block # 12317)ORA-01110: data file 1: '+DATA/xff/DATAFILE/system.257.1186720165'Corrupt block relative dba: 0x00403097 (file 1, block 12439)Completely zero block found during buffer readReread (file 1, block 12439) found same corrupt data (no logical check)2026-05-20T17:46:14.259044+08:00Corrupt Block Found TIME STAMP (GMT) = 05/20/2026 17:46:13 CONT = 0, TSN = 0, TSNAME = SYSTEM RFN = 1, BLK = 12439, RDBA = 4206743 OBJN = 18, OBJD = 18, OBJECT = OBJ$, SUBOBJECT = SEGMENT OWNER = SYS, SEGMENT TYPE = Table SegmentErrors in file /u01/app/oracle/diag/rdbms/xff/xff2/trace/xff2_gen0_48604.trc (incident=798852):ORA-01578: ORACLE data block corrupted (file # 1, block # 12439)ORA-01110: data file 1: '+DATA/xff/DATAFILE/system.257.1186720165'2026-05-20T05:46:14.436597-04:00ALTER SYSTEM SET remote_listener=' xff-scan:11521' SCOPE=MEMORY SID='xff2';2026-05-20T05:46:14.438492-04:00ALTER SYSTEM SET listener_networks='' SCOPE=MEMORY SID='xff2';2026-05-20T17:46:15.486758+08:00opiodr aborting process unknown ospid (50880) as a result of ORA-6032026-05-20T17:46:15.498707+08:00ORA-603 : opitsk aborting processLicense high water mark = 423USER(prelim) (ospid: 50880): terminating the instance due to ORA error 6042026-05-20T17:46:15.536740+08:00opiodr aborting process unknown ospid (69547) as a result of ORA-10922026-05-20T05:46:16.321597-04:00ORA-1092 : opitsk aborting process |
这里基本上可以看出来是由于在数据库启动过程中递归调用一些sql,但是由于遭遇到坏块导致启动失败,通过dbv检查system数据文件发现256个坏块

这里可以确认system的第24个au(从0开始)在14号盘au 2 上面,也就是数据块起始损坏为block:12288-12543(24M*4/8K[有block 0 需要考虑]),对于这种彻底损坏而且比较靠前的system中block,通过人工构造出来这些block的方式进行修复,在自研的Oracle Recovery Tools和obet工具都有该功能.运气不错,通过这个修复之后,直接expdp导出数据没有大问题,比较完美的恢复了这个故障.
浙公网安备 33010602011771号