删除分区 oracle asm disk 恢复
联系:手机/微信(+86 13429648788) QQ(107644445)
作者:惜分飞版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
接到一个朋友数据库故障请求case.大概操作是这样的:有一个39T的lun,通过parted分了15个分区,给oracle asm使用创建磁盘组data4,然后分了4个分区做成data5(由于ausize写错误了),删除掉磁盘组和这四个分区.然后重新分配了6个分区,并且使用最后5个分区创建了data5磁盘组.使用了一段时间之后,由于oracle空间不足,检查的时候误以为这个lun就前面15个分区使用,人工把后面的6个分区给删除了,并且创建了4个新分区,然后发现数据库crash了,发现误删除了在使用的分区.然后又把新创建的4个分区给删除了.接手该故障的时候,这个39T lun的分区信息如下
[root@node1 linux64]# parted /dev/mapper/36000d31003d39e000000000000000004GNU Parted 2.1Using /dev/mapper/36000d31003d39e000000000000000004Welcome to GNU Parted! Type 'help' to view a list of commands.(parted) print Model: Linux device-mapper (multipath) (dm)Disk /dev/mapper/36000d31003d39e000000000000000004: 39.6TBSector size (logical/physical): 512B/4096BPartition Table: gptNumber Start End Size File system Name Flags 1 2097kB 2000GB 2000GB asmdata4-1 2 2000GB 4000GB 2000GB asmdata4-2 3 4000GB 6000GB 2000GB asmdata4-3 4 6000GB 8000GB 2000GB asmdata4-4 5 8000GB 10.0TB 2000GB asmdata4-5 6 10.0TB 12.0TB 2000GB asmdata4-6 7 12.0TB 14.0TB 2000GB asmdata4-7 8 14.0TB 16.0TB 2000GB asmdata4-8 9 16.0TB 18.0TB 2000GB asmdata4-910 18.0TB 20.0TB 2000GB asmdata4-1011 20.0TB 22.0TB 2000GB asmdata4-1112 22.0TB 24.0TB 2000GB asmdata4-1213 24.0TB 26.0TB 2000GB asmdata4-1314 26.0TB 28.0TB 2000GB asmdata4-1415 28.0TB 30.0TB 2000GB asmdata4-15 |
客户正常使用情况下,这个lun上面相关分区的asm disk信息
SQL> CREATE DISKGROUP DATA4 EXTERNAL REDUNDANCY DISK '/dev/mapper/36000d31003d39e000000000000000004p1' SIZE 1907346M , '/dev/mapper/36000d31003d39e000000000000000004p2' SIZE 1907350M , '/dev/mapper/36000d31003d39e000000000000000004p3' SIZE 1907348M , '/dev/mapper/36000d31003d39e000000000000000004p4' SIZE 1907348M , '/dev/mapper/36000d31003d39e000000000000000004p5' SIZE 1907350M ATTRIBUTE 'compatible.asm'='11.2.0.0.0','au_size'='8M' /* ASMCA */ SQL> ALTER DISKGROUP DATA4 ADD DISK '/dev/mapper/36000d31003d39e000000000000000004p10' SIZE 1907348M ,'/dev/mapper/36000d31003d39e000000000000000004p6' SIZE 1907348M ,'/dev/mapper/36000d31003d39e000000000000000004p7' SIZE 1907348M ,'/dev/mapper/36000d31003d39e000000000000000004p8' SIZE 1907350M ,'/dev/mapper/36000d31003d39e000000000000000004p9' SIZE 1907348M /* ASMCA */ SQL> ALTER DISKGROUP DATA4 ADD DISK '/dev/mapper/36000d31003d39e000000000000000004p11' SIZE 1907348M ,'/dev/mapper/36000d31003d39e000000000000000004p12' SIZE 1907350M ,'/dev/mapper/36000d31003d39e000000000000000004p13' SIZE 1907348M ,'/dev/mapper/36000d31003d39e000000000000000004p14' SIZE 1907348M ,'/dev/mapper/36000d31003d39e000000000000000004p15' SIZE 1907350M /* ASMCA */ SQL> CREATE DISKGROUP DATA5 EXTERNAL REDUNDANCY DISK '/dev/mapper/36000d31003d39e000000000000000004p17' SIZE 1716614M ,'/dev/mapper/36000d31003d39e000000000000000004p18' SIZE 1716614M ,'/dev/mapper/36000d31003d39e000000000000000004p19' SIZE 1716614M ,'/dev/mapper/36000d31003d39e000000000000000004p20' SIZE 1716614M ,'/dev/mapper/36000d31003d39e000000000000000004p21' SIZE 1621246M ATTRIBUTE 'compatible.asm'='11.2.0.0.0','au_size'='4M' /* ASMCA */ |
基于客户现在的情况,data4中的所有分区都正常,主要是要找出来data5中的5个分区的数据.因为客户不确定p16分区大小,导致后续的5个分区起始位置不好定位.从而使得恢复无法进行.通过shell脚本结合kfed尝试定位asm disk header信息
#!/bin/bashj=xxxxxxxxxxxfor ((i=xxxxxx; i<=j; i++))do echo "-----$i--------" >> /home/get_au1.txt kfed read /dev/mapper/36000d31003d39e000000000000000004 aun=$i | > grep "kfdhdb.dskname: DATA" >> /home/get_au.txtdone |
结果发现无法获取到结果,通过分析发现这里由于lun过大,导致aun值过大,从而使得kfed溢出无法读取到正常值.根据parted的特性,人工dd部分block进行分析
[root@node1 bak]# kfed read xifenfei.dd aun=134|morekfbh.endian: 1 ; 0x000: 0x01kfbh.hard: 130 ; 0x001: 0x82kfbh.type: 1 ; 0x002: KFBTYP_DISKHEADkfbh.datfmt: 1 ; 0x003: 0x01kfbh.block.blk: 0 ; 0x004: blk=0kfbh.block.obj: 2147483648 ; 0x008: disk=0kfbh.check: 3357988283 ; 0x00c: 0xc826d5bbkfbh.fcn.base: 0 ; 0x010: 0x00000000kfbh.fcn.wrap: 0 ; 0x014: 0x00000000kfbh.spare1: 0 ; 0x018: 0x00000000kfbh.spare2: 0 ; 0x01c: 0x00000000kfdhdb.driver.provstr: ORCLDISK ; 0x000: length=8kfdhdb.driver.reserved[0]: 0 ; 0x008: 0x00000000kfdhdb.driver.reserved[1]: 0 ; 0x00c: 0x00000000kfdhdb.driver.reserved[2]: 0 ; 0x010: 0x00000000kfdhdb.driver.reserved[3]: 0 ; 0x014: 0x00000000kfdhdb.driver.reserved[4]: 0 ; 0x018: 0x00000000kfdhdb.driver.reserved[5]: 0 ; 0x01c: 0x00000000kfdhdb.compat: 186646528 ; 0x020: 0x0b200000kfdhdb.dsknum: 0 ; 0x024: 0x0000kfdhdb.grptyp: 1 ; 0x026: KFDGTP_EXTERNALkfdhdb.hdrsts: 3 ; 0x027: KFDHDR_MEMBERkfdhdb.dskname: DATA5_0000 ; 0x028: length=10kfdhdb.grpname: DATA5 ; 0x048: length=5kfdhdb.fgname: DATA5_0000 ; 0x068: length=10kfdhdb.capname: ; 0x088: length=0kfdhdb.crestmp.hi: 33116450 ; 0x0a8: HOUR=0x2 DAYS=0x9 MNTH=0x4 YEAR=0x7e5kfdhdb.crestmp.lo: 477378560 ; 0x0ac: USEC=0x0 MSEC=0x10e SECS=0x7 MINS=0x7kfdhdb.mntstmp.hi: 33116450 ; 0x0b0: HOUR=0x2 DAYS=0x9 MNTH=0x4 YEAR=0x7e5kfdhdb.mntstmp.lo: 486256640 ; 0x0b4: USEC=0x0 MSEC=0x2ec SECS=0xf MINS=0x7kfdhdb.secsize: 512 ; 0x0b8: 0x0200kfdhdb.blksize: 4096 ; 0x0ba: 0x1000kfdhdb.ausize: 4194304 ; 0x0bc: 0x00400000kfdhdb.mfact: 454272 ; 0x0c0: 0x0006ee80kfdhdb.dsksize: 429153 ; 0x0c4: 0x00068c61kfdhdb.pmcnt: 2 ; 0x0c8: 0x00000002 |
顺利找到了data5中的第一块磁盘,而且确定了起始位置,然后构造相关的dd语句把分区的数据dd到一个新磁盘中
dd if=/dev/mapper/36000d31003d39e000000000000000004 bs=4M skip=xxxxx count=429153 of=/dev/sdu |
然后通过kfed查看数据
通过类似方法依次处理,最终把5块asm disk全部找到,并且顺利dd到新的磁盘中.尝试启动crs,并mount data5

data5 磁盘组mount成功之后,数据库顺利启动,实现lun中删除分区之后,asm磁盘组数据完美恢复
这次运气还不错,仅仅是对lun的分区使用了parted进行了删除和创建等操作,没有格式化文件系统和做成新的asm disk,不然数据会有一部分丢失.对于有部分破坏的分区,需要通过底层碎片的方法进行最大限度抢救数据.参考类似文档:
asm disk被加入vg恢复
又一例asm格式化文件系统恢复
文件系统损坏导致数据文件异常恢复
一次完美的asm disk被格式化ntfs恢复
Oracle 数据文件大小为0kb或者文件丢失恢复
再一起asm disk被格式化成ext3文件系统故障恢复
oracle asm disk格式化恢复—格式化为ext4文件系统
oracle asm disk格式化恢复—格式化为ntfs文件系统
分享oracleasm createdisk重新创建asm disk后数据0丢失恢复案例
删除分区 oracle asm disk 恢复的更多相关文章
- [置顶] Oracle 11g R2 ASM:了解 Oracle ASM 基本概念
About Oracle ASM Instances About Oracle ASM Disk Groups About Mirroring and Failure Groups About Ora ...
- ASM Disk Discovery 最佳实践
ASM DISK 的Discovery PATH ASM实例的ASM_DISKSTRING初始化参数使用一个逗号分割的字符串限制ASM实例发现的DISK可以用于ASM DISK, 该字符串支持通配符如 ...
- Linux CentOS6.5下安装Oracle ASM
Oracle版本:Oracle 11g 1.确定自己的Linux版本: [root@localhost ~]#uname -r 2.6.32-431.el6.x86_64 2.6.32-431.el6 ...
- Oracle ASM 磁盘组基础知识整理(收藏版)
转至:https://cloud.tencent.com/developer/article/1494403 为什么要写这么一篇基础知识呢?还是有那么一点点原因的,不是胡编乱造还真是有真实存在的事件的 ...
- How to create Oracle ASM devices using device-mapper multipath devices in Red Hat Enterprise Linux 6
How to create Oracle ASM devices using device-mapper multipath devices in Red Hat Enterprise Linux 6 ...
- 几个重要的 ASM Disk Groups 参数
几个重要的Disk group 属性: 1. ACCESS_CONTROL.ENABLED该属性用来控制某个disk group 上ASM FILE Access Control. 该参数有2个值:t ...
- Oracle ASM无法识别扩展分区的磁盘设备
在linux 环境下,我们一般通过udev或者asmlib来绑定磁盘分区作为ASM的候选存储单元.在使用udev的情况下,一般只要我们可以看到被绑定的磁盘的设备,并且这些设备的属主和权限没有问题,AS ...
- Oracle分区表删除分区引发错误ORA-01502: 索引或这类索引的分区处于不可用状态
(一)问题: 最近在做Oracle数据清理,在对分区表进行数据清理时,采用的方法是drop partition,删除的过程中,没有遇到任何问题,大概过了10分钟,开发人员反馈部分分区表上的业务失败.具 ...
- ORACLE删除分区
业务需求:定期删除表中三个月之前的数据 说明:由于表采取一个月一个分区的设计,所以删除三个月之前的数据也就是删除三个月之前的分区.但需要注意的是删除分区后全局索引会失效,而本地local索引不会受到影 ...
- ORACLE ASM 日常管理
ASM概述 Automatic Storage Management(ASM)是Oracle数据库10g中一个非常出色的新特性,它以平台无关的方式提供了文件系统.逻辑卷管理器以及软件RAID等服务.A ...
随机推荐
- Audacity 如何生成单音轨的音频
最近要用到单音轨的音频做测试,使用audacity愣是没有找到如何使用 hello 旁边的三角形看到了. 点击选择 splite stereo to Mono. 分离立体声到单音频,然后把没用的那一个 ...
- Ansys 学习
简介 应力集中 & 应力奇异性 解释 应力集中 应力集中是设计工程师在设计产品过程中不可避免的问题.指受力构件由 于外界因素或自身因素几何形状.外形尺寸发生突变而引起局部范围内应力显著 增大的 ...
- Node.js躬行记(30)——SkyWalking使用和排查分析
公司使用了阿里云的服务,其中可以在项目中使用全链路监测,最近要排查慢响应,所以就在 Node 项目中接了一下 SkyWalking. 本文还会记录在使用时遇到的问题,以及解决思路. 一.初始化 1)参 ...
- 假期充电: 一道并发java面试题的N种解法
疫情居家隔离期间,在网上看了几个技术教学视频,意在查漏补缺,虽然网上这些视频的水平鱼龙混杂,但也有讲得相当不错的,这是昨晚看到的马老师讲的一道面试题,记录一下: 如上图,有2个同时运行的线程,一个输出 ...
- 盈鹏飞嵌入式带你玩转T113系列tina5 SDK(6)-添加心跳灯
SBC-T113产品特性: 采用Allwinner公司Cortex-A7双核T113-i处理器,运行最高速度为1.2GHZ: 内置64-bit XuanTie C906 RISC-V协处理器: 支持J ...
- Spring AOP 切面执行顺序
1. 概述 1.1 术语 Spring AOP 的相关术语: Aspect:切面,由一系列切点.增强和引入组成的模块对象,可定义优先级,从而影响增强和引入的执行顺序.事务管理(Transaction ...
- 会话跟踪技术之Cookie、Session 和 Token三种技术对比
Cookie.Session 和 Token 是解决 HTTP 无状态性的三种核心会话技术,各有其原理.优缺点和适用场景.以下综合分析: 1. Cookie 原理 存储位置:客 ...
- 2025可信数据库发展大会召开,天翼云TeleDB领航核心系统创新实践!
近日,"2025可信数据库发展大会"在北京隆重召开.作为数据库产业的重要建设者,天翼云受邀出席,联合中国信息通信研究院及中国通信标准化协会大数据技术标准推进委员会(CCSA TC6 ...
- linux下RPM软件包管理工具
简介:RPM是"redhat packet manager"的缩写,它是红帽子公司开发的一个软件包格式,以".rpm"作为文件的拓展名,管理rpm软件包的程序 ...
- LInux下redis及nginx安装
参考https://www.cnblogs.com/xiaochongc/p/11532143.html 可能出现编译失败的情况,有能力自己升级gcc,不行的话就降低redis版本 arm架构下安装需 ...