asm 磁盘分区丢失恢复----惜分飞

有朋友反馈,他们做了xx存储的双活之后,重启主机发现gi无法正常启动,分析发现所有该存储的磁盘分区信息丢失,导致asmlib无法发现磁盘(使用分区做asm disk)
类似如下错误(磁盘分区丢失)

--fdisk -l 显示部分结果

Disk /dev/mapper/datahds1: 1099.5 GB, 1099511627776 bytes

255 heads, 63 sectors/track, 133674 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000000

--ls -l /dev/mapper/   显示结果无分区信息

lrwxrwxrwx 1 root root      7 May  6 03:44 datahds1 -> ../dm-1

lrwxrwxrwx 1 root root      7 May  6 03:26 datahds2 -> ../dm-3

lrwxrwxrwx 1 root root      7 May  6 03:26 datahds3 -> ../dm-8

lrwxrwxrwx 1 root root      7 May  6 03:26 ocrhds1 -> ../dm-0

lrwxrwxrwx 1 root root      7 May  6 03:26 ocrhds2 -> ../dm-2

lrwxrwxrwx 1 root root      7 May  6 03:26 ocrhds3 -> ../dm-4

asm日志显示

SUCCESS: diskgroup DATADG was mounted

NOTE: Instance updated compatible.asm to 11.2.0.0.0 for grp 3

SUCCESS: diskgroup OCRHDS was mounted

ORA-15032: not all alterations performed

ORA-15017: diskgroup "DATA" cannot be mounted

ORA-15063: ASM discovered an insufficient number of disks for diskgroup "DATA"

分析系统日志

May  6 02:23:27 db2 kernel: sdb: unknown partition table

May  6 02:23:27 db2 kernel: sde: unknown partition table

May  6 02:23:27 db2 kernel: sdc: unknown partition table

May  6 02:23:27 db2 kernel: sdf: unknown partition table

May  6 02:23:27 db2 kernel: sdd: unknown partition table

May  6 02:23:27 db2 kernel: sdj:Dev sdj: unable to read RDB block 0

May  6 02:23:27 db2 kernel: unable to read partition table

May  6 02:23:27 db2 kernel: sdi: sdi1

May  6 02:23:27 db2 kernel: sdk: sdk1

May  6 02:23:27 db2 kernel: sdg: unknown partition table

May  6 02:23:27 db2 kernel: sdl: sdl1

May  6 02:23:27 db2 kernel: sdm:Dev sdm: unable to read RDB block 0

May  6 02:23:27 db2 kernel: unable to read partition table

May  6 02:23:27 db2 kernel: sdo:Dev sdo: unable to read RDB block 0

May  6 02:23:27 db2 kernel: unable to read partition table

May  6 02:23:27 db2 kernel: sdn:Dev sdn: unable to read RDB block 0

May  6 02:23:27 db2 kernel: unable to read partition table

May  6 02:23:27 db2 kernel: sdp:Dev sdp: unable to read RDB block 0

May  6 02:23:27 db2 kernel: unable to read partition table

May  6 02:23:27 db2 kernel: sds:Dev sds: unable to read RDB block 0

May  6 02:23:27 db2 kernel: unable to read partition table

May  6 02:23:27 db2 kernel: sdh:

May  6 02:23:27 db2 kernel: sdt: sdt1

May  6 02:23:27 db2 kernel: sdv:Dev sdv: unable to read RDB block 0

May  6 02:23:27 db2 kernel: unable to read partition table

May  6 02:23:27 db2 kernel: sdq:Dev sdq: unable to read RDB block 0

May  6 02:23:27 db2 kernel: unable to read partition table

May  6 02:23:27 db2 kernel: sd 1:0:1:9: [sdr] Very big device. Trying to use READ CAPACITY(16).

May  6 02:23:27 db2 kernel: sdr:Dev sdr: unable to read RDB block 0

May  6 02:23:27 db2 kernel: unable to read partition table

May  6 02:23:27 db2 kernel: sd 2:0:0:9: [sdab] Very big device. Trying to use READ CAPACITY(16).

May  6 02:23:27 db2 kernel: sdab: unknown partition table

May  6 02:23:27 db2 kernel: sdac: unknown partition table

May  6 02:23:27 db2 kernel: sdw: sdw1

May  6 02:23:27 db2 kernel: sdu:Dev sdu: unable to read RDB block 0

May  6 02:23:27 db2 kernel: unable to read partition table

May  6 02:23:27 db2 kernel: sdx: sdx1

May  6 02:23:27 db2 kernel: sdy: sdy1

May  6 02:23:27 db2 kernel: sdaa: sdaa1

May  6 02:23:27 db2 kernel: sdz: sdz1

May  6 02:23:27 db2 kernel: sdae: unknown partition table

May  6 02:23:27 db2 kernel: sdaf: unknown partition table

May  6 02:23:27 db2 kernel: sdag: unknown partition table

May  6 02:23:27 db2 kernel: sdai:

May  6 02:23:27 db2 kernel: sdah: unknown partition table

May  6 02:23:27 db2 kernel: sdad: unknown partition table

May  6 02:23:28 db2 mcelog: failed to prefill DIMM database from DMI data

这里错误比较明显unknown partition table,磁盘的分区信息损坏.使用fdisk无法发现分区

partprobe也无效

[[email protected] oracle]# partprobe /dev/mapper/ocrhds3

[[email protected] oracle]#

[[email protected] oracle]# ls -l /dev/mapper/ocrhds3*

lrwxrwxrwx 1 root root 7 May  6 07:30 /dev/mapper/ocrhds3 -> ../dm-4

从尚需信息看,磁盘的分区表信息应该已经损坏,现在能够做的,就是希望运气好,磁盘的分区的实际数据没有损坏

分析磁盘实际分区数据

[[email protected] ~]$ dd if=/dev/mapper/datahds1 of=/tmp/datahds1.dd bs=1024k count=50

[[email protected] ~]$ dd if=/tmp/datahds1.dd of=/tmp/xff01.dd  bs=3225 skip=1

[[email protected] ~]$ kfed read /tmp/xff01.dd |more

kfbh.endian:                          1 ; 0x000: 0x01

kfbh.hard:                          130 ; 0x001: 0x82

kfbh.type:                            1 ; 0x002: KFBTYP_DISKHEAD

kfbh.datfmt:                          1 ; 0x003: 0x01

kfbh.block.blk:                       0 ; 0x004: blk=0

kfbh.block.obj:              2147483648 ; 0x008: disk=0

kfbh.check:                  3110278718 ; 0x00c: 0xb963163e

kfbh.fcn.base:                        0 ; 0x010: 0x00000000

kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000

kfbh.spare1:                          0 ; 0x018: 0x00000000

kfbh.spare2:                          0 ; 0x01c: 0x00000000

kfdhdb.driver.provstr: ORCLDISKHDSDATA1 ; 0x000: length=16

kfdhdb.driver.reserved[0]:   1146307656 ; 0x008: 0x44534448

kfdhdb.driver.reserved[1]:    826364993 ; 0x00c: 0x31415441

kfdhdb.driver.reserved[2]:            0 ; 0x010: 0x00000000

kfdhdb.driver.reserved[3]:            0 ; 0x014: 0x00000000

kfdhdb.driver.reserved[4]:            0 ; 0x018: 0x00000000

kfdhdb.driver.reserved[5]:            0 ; 0x01c: 0x00000000

kfdhdb.compat:                186646528 ; 0x020: 0x0b200000

kfdhdb.dsknum:                        0 ; 0x024: 0x0000

kfdhdb.grptyp:                        1 ; 0x026: KFDGTP_EXTERNAL

kfdhdb.hdrsts:                        3 ; 0x027: KFDHDR_MEMBER

kfdhdb.dskname:             DATADG_0000 ; 0x028: length=11

kfdhdb.grpname:                  DATADG ; 0x048: length=6

kfdhdb.fgname:              DATADG_0000 ; 0x068: length=11

kfdhdb.capname:                         ; 0x088: length=0

kfdhdb.crestmp.hi:             33050696 ; 0x0a8: HOUR=0x8 DAYS=0x2 MNTH=0x4 YEAR=0x7e1

kfdhdb.crestmp.lo:           3813740544 ; 0x0ac: USEC=0x0 MSEC=0x44 SECS=0x35 MINS=0x38

kfdhdb.mntstmp.hi:             33050701 ; 0x0b0: HOUR=0xd DAYS=0x2 MNTH=0x4 YEAR=0x7e1

kfdhdb.mntstmp.lo:            411385856 ; 0x0b4: USEC=0x0 MSEC=0x150 SECS=0x8 MINS=0x6

通过上述分析,我们可以初步判断,分区磁盘的信息很可能是好的(因为asm disk header是好的,根据一般的规则从前往后覆盖,既然header是好的,后面的block被覆盖的概率非常小)

通过准备新磁盘直接把磁盘分区dd到新设备上

dd if=/dev/mapper/ocrhds1 of=/dev/mapper/ocrhdsnew1 skip=1 bs=3225

dd if=/dev/mapper/ocrhds2 of=/dev/mapper/ocrhdsnew2 skip=1 bs=3225

dd if=/dev/mapper/ocrhds3 of=/dev/mapper/ocrhdsnew3 skip=1 bs=3225

dd if=/dev/mapper/datahds1 of=/dev/mapper/datahdsnew1 skip=1 bs=3225

dd if=/dev/mapper/datahds2 of=/dev/mapper/datahdsnew2 skip=1 bs=3225

dd if=/dev/mapper/datahds3 of=/dev/mapper/datahdsnew3 skip=1 bs=3225

asmlib重新扫描磁盘

[[email protected] disks]# oracleasm scandisks

Reloading disk partitions: done

Cleaning any stale ASM disks...

Scanning system for ASM disks...

Instantiating disk "HDSOCR3"

Instantiating disk "HDSDATA2"

Instantiating disk "HDSDATA1"

Instantiating disk "HDSDATA3"

Instantiating disk "HDSOCR1"

Instantiating disk "HDSOCR2"

[[email protected] disks]# ls -ltr

total 0

brw-rw---- 1 grid asmadmin  8, 160 May  6 13:49 HDSOCR3

brw-rw---- 1 grid asmadmin  8, 192 May  6 13:49 HDSDATA2

brw-rw---- 1 grid asmadmin  8, 176 May  6 13:49 HDSDATA1

brw-rw---- 1 grid asmadmin  8, 208 May  6 13:49 HDSDATA3

brw-rw---- 1 grid asmadmin  8, 128 May  6 13:49 HDSOCR1

brw-rw---- 1 grid asmadmin  8, 144 May  6 13:49 HDSOCR2

kfed验证拷贝的分区

[[email protected] tmp]# /oracle/app/11.2.0/grid_1/bin/kfed read /dev/oracleasm/disks/HDSDATA1

kfbh.endian:                          1 ; 0x000: 0x01

kfbh.hard:                          130 ; 0x001: 0x82

kfbh.type:                            1 ; 0x002: KFBTYP_DISKHEAD

kfbh.datfmt:                          1 ; 0x003: 0x01

kfbh.block.blk:                       0 ; 0x004: blk=0

kfbh.block.obj:              2147483648 ; 0x008: disk=0

kfbh.check:                  3110278718 ; 0x00c: 0xb963163e

kfbh.fcn.base:                        0 ; 0x010: 0x00000000

kfbh.fcn.wrap:                        0 ; 0x014: 0x00000000

kfbh.spare1:                          0 ; 0x018: 0x00000000

kfbh.spare2:                          0 ; 0x01c: 0x00000000

kfdhdb.driver.provstr: ORCLDISKHDSDATA1 ; 0x000: length=16

kfdhdb.driver.reserved[0]:   1146307656 ; 0x008: 0x44534448

kfdhdb.driver.reserved[1]:    826364993 ; 0x00c: 0x31415441

kfdhdb.driver.reserved[2]:            0 ; 0x010: 0x00000000

kfdhdb.driver.reserved[3]:            0 ; 0x014: 0x00000000

kfdhdb.driver.reserved[4]:            0 ; 0x018: 0x00000000

kfdhdb.driver.reserved[5]:            0 ; 0x01c: 0x00000000

kfdhdb.compat:                186646528 ; 0x020: 0x0b200000

kfdhdb.dsknum:                        0 ; 0x024: 0x0000

kfdhdb.grptyp:                        1 ; 0x026: KFDGTP_EXTERNAL

kfdhdb.hdrsts:                        3 ; 0x027: KFDHDR_MEMBER

kfdhdb.dskname:             DATADG_0000 ; 0x028: length=11

kfdhdb.grpname:                  DATADG ; 0x048: length=6

kfdhdb.fgname:              DATADG_0000 ; 0x068: length=11

kfdhdb.capname:                         ; 0x088: length=0

asm和数据库启动正常

[[email protected] ~]$ asmcmd

ASMCMD> lsdg

State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  Name

MOUNTED  EXTERN  N         512   4096  1048576   3145710  2378034                0         2378034              0             N  DATADG/

MOUNTED  NORMAL  N         512   4096  1048576     15342    14416             5114            4651              0             Y  OCRHDS/

ASMCMD>

[[email protected] ~]$ sqlplus  / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Sat May 6 13:54:21 2017

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

Connected to an idle instance.

SQL> startup

ORACLE instance started.

Total System Global Area 3.6077E+10 bytes

Fixed Size                  2260648 bytes

Variable Size            7247757656 bytes

Database Buffers         2.8723E+10 bytes

Redo Buffers              104382464 bytes

Database mounted.

Database opened.

SQL>



通过上述恢复,实现asm磁盘分区丢失数据0丢失
如果您遇到此类情况,无法解决请联系我们,提供专业ORACLE数据库恢复技术支持
Phone:13429648788    Q Q:107644445    E-Mail:[email protected]

原文地址:https://www.cnblogs.com/xifenfei/p/10023465.html

时间: 2024-08-01 15:14:53

asm 磁盘分区丢失恢复----惜分飞的相关文章

针对ESXI5.5 本地磁盘分区丢失的解决方法,

1.通过ssh进入ESXI shell,使用fdisk -l命令查看当前系统的各个分区情况 2.使用esxcli storage vmfs extent list命令,查看卷名,设备名 3.使用esxcli storage filesystem list命令,查看各分区的挂载情况,对于丢失的分区会提示相应错误 4.使用partedUtil getptbl /vmfs/devices/disks/device_name 查看相应磁盘的分区表 如: ~#partedUtil getptbl /vmf

asm 磁盘头丢失,损坏

BUG 14693394 – ORA-15196: INVALID ASM BLOCK HEADER [KFC.C:26076] [ENDIAN_KFBH] BUG 14758001 – ORA-15196: INVALID ASM BLOCK HEADER [KFC.C:23924] [ENDIAN_KFBH] [2147483654] BUG 14827224 – PS:WIN64:ORA-15196:INVALID ASM BLOCK HEADER[KFC.C:28261] ON DB C

Linux系统下常见的数据盘分区丢失的问题以及对应的处理方法

在修复数据前,您必须先对分区丢失的数据盘创建快照,在快照创建完成后再尝试修复.如果在修复过程中出现问题,您可以通过快照回滚将数据盘还原到修复之前的状态. 前提条件 在修复数据前,您必须先对分区丢失的数据盘创建快照,在快照创建完成后再尝试修复.如果在修复过程中出现问题,您可以通过快照回滚将数据盘还原到修复之前的状态. 工具说明 在Linux实例里,您可以选择以下任一种工具修复磁盘分区并恢复数据: fdisk:Linux系统默认安装的分区工具. testdisk:主要用恢复Linux系统的磁盘分区或

一体机扩容C盘分区丢失找到文件的办法

调整分区后分区不见是比较常见的数据恢复案例,需要注意,调整分区后分区不见后不要再重建新的分区.保护好数据丢失现场,可以最大程度的恢复出数据.具体的恢复方法看正文了解. 工具/软件:星空数据恢复软件 步骤1:先百度搜索并下载软件打开后,直接双击需要恢复的分区,接着解压再右击软件图标选择<以管理员身份运行>软件(如果是xp系统可以直接双击打开软件).步骤2:程序运行后,直接双击需要恢复的物理盘,盘符不见了需要从物理盘恢复资料.步骤3:等待软件扫描完成一般需要几分钟到半个小时,稍微耐心等下即可.步骤

ORACLE 11G RAC ASM磁盘组全部丢失后的恢复

一.环境描述(1)Oracle 11.2.0.3 RAC ON Oracle Linux 6 x86_64,只有一个ASM外部冗余磁盘组--DATA:(2)OCR,VOTEDISK,DATAFILE,CONTROLFILE,SPFILE全部位于这个磁盘组上:二.故障描述(1)存储故障导致ASM磁盘丢失.(2)CRS因为OCR和VOTEDISK的丢失,除了OHAS还联机外,CLUSTERWARE服务都已经停止.三.备份情况(1)RMAN备份:包括controlfile,database,spfil

asm磁盘全部是损坏恢复总结

实验环境: centos6.4 oracle 11.2.0.4 -- 使用的是udev方式映射的raw,然后做的是asm --- 本来想把sdb,sdc这个块磁盘替换掉. sdb => 1g:sdb1,sdb2,sdb3. 2g:sdb5,sdb6,sdb7 sdc => 2g:sdc1,sdc2,sdc3,sdc5,sdc6 做成了2个磁盘组 OCR sdb1,sdb2,sdb3  raw1,raw2,raw3,raw4 DATA sdb5,sdb6,sdb7 sdc1 raw5 ,raw6

硬盘分区丢失后数据怎样恢复

有些时候,在使用电脑的过程中,硬盘分区丢失了,分区数据也消失不见了.那么分区丢失了数据还能恢复吗?硬盘分区丢失想要恢复数据怎么办?鉴于很多人有着相似的问题,今天就关于硬盘丢失分区数据恢复问题给大家分享一些方法. 首先,我们来了解一下分区的概念,硬盘分区实质上是对硬盘的一种格式化,然后才能使用硬盘保存各种信息.简单来说,新买来的硬盘,就像一张面积相当大的白纸,什么也没有,我们可以往上面写各种各样的东西,但是,随意的往上写是不行的,为了方便管理,我们必须把它分成几个区域,这就是分区.硬盘分区有三种,

案例:Oracle非常规恢复 ASM磁盘组diskgroup被删除使用kfed进行完美恢复

Oracle RAC环境ASM磁盘组被强制删除,使用kfed工具完美恢复误删除磁盘组案例 在某些情况下,可能因为误操作,不小先drop diskgroup,这个时候千万别紧张,出现此类故障,可以通过kfed进行完美恢复(数据0丢失).如果进一步损坏了相关asm disk,那后续恢复就很麻烦了,可能需要使用dul扫描磁盘来进行抢救性恢复,而且可能导致数据丢失. 1.创建Oracle环境中的测试磁盘组 [[email protected] ~]$ sqlplus / as sysasm SQL*Pl

分区丢失了如何恢复?

很多时候,因为一些误操作导致分区突然丢失或者无缘无故分区就丢失了.这时候只要采取正确的方法恢复数据就可以完整的找回数据恢复.曙光数据恢复软件中有个分区丢失数据恢复专门恢复分区丢失情况的. 我这里有块硬盘分区全部不见了在磁盘管理中是一块未初始化的2T硬盘.下面用曙光数据恢复软件对这块硬盘进行恢复. 第一步 自然是打开数据恢复软件,选择分区丢失数据恢复 第二步:选择需要恢复的物理磁盘, 第三步:等待扫描完成,由于硬盘有点大所以需要点时间. 等出现下面提示就表示扫描完成了 第四步:双击目录展开 第五步