首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

存储瘫痪抢救Oracle数据库案例

本次分享的案例是关于HP FC MSA2000存储瘫痪抢救Oracle数据库的案例,故障存储整个存储空间由8块硬盘组成,其中7块硬盘组成一个RAID5的阵列,剩余1块做成热备盘使用。由于RAID5阵列中出现2块硬盘损坏,而此时只有一块热备盘成功激活,因此导致RAID5阵列瘫痪,上层LUN无法正常使用。 由于存储是因为RAID阵列中某些磁盘掉线,从而导致整个存储不可用。因此接收到磁盘以后先对所有磁盘做物理检测,检测完后发现没有物理故障。排除物理故障后对数据全部备份后在进行进一步的分析。 【故障分析】 1、分析故障原因 由于前两个步骤并没有检测到磁盘有物理故障或者是坏道,由此推断可能是由于某些磁盘读写不稳定导致故障发生。因为HP MSA2000控制器检查磁盘的策略很严格,一旦某些磁盘性能不稳定,HP MSA2000控制器就认为是坏盘,就将认为是坏盘的磁盘踢出RAID组。而一旦RAID组中掉线的盘到达到RAID级别允许掉盘的极限,那么这个RAID组将变的不可用,上层基于RAID组的LUN也将变的不可用。目前初步了解的情况为基于RAID组的LUN有6个,均分配给HP-Unix小机使用,上层做的LVM逻辑卷,重要数据为Oracle数据库及OA服务端。 2、分析RAID组结构 HP MSA2000存储的LUN都是基于RAID组的,因此需要先分析底层RAID组的信息,然后根据分析的信息重构原始的RAID组。分析每一块数据盘,发现4号盘的数据同其它数据盘不太一样,初步认为可能是hot Spare盘。接着分析其他数据盘,分析Oracle数据库页在每个磁盘中分布的情况,并根据数据分布的情况得出RAID组的条带大小,磁盘顺序及数据走向等RAID组的重要信息。 3、分析RAID组掉线盘 根据上述分析的RAID信息,尝试通过北亚RAID虚拟程序将原始的RAID组虚拟出来。但由于整个RAID组中一共掉线两块盘,因此需要分析这两块硬盘掉线的顺序。仔细分析每一块硬盘中的数据,发现有一块硬盘在同一个条带上的数据和其他硬盘明显不一样,因此初步判断此硬盘可能是最先掉线的,通过北亚RAID校验程序对这个条带做校验,发现除掉刚才分析的那块硬盘得出的数据是最好的,因此可以明确最先掉线的硬盘了。 4、分析RAID组中的LUN信息 由于LUN是基于RAID组的,因此需要根据上述分析的信息将RAID组最新的状态虚拟出来。然后分析LUN在RAID组中的分配情况,以及LUN分配的数据块MAP。由于底层有6个LUN,因此只需要将每一个LUN的数据块分布MAP提取出来。然后针对这些信息编写相应的程序,对所有LUN的数据MAP做解析,然后根据数据MAP并导出所有LUN的数据。 【数据恢复过程】 1、解析修复LVM逻辑卷 分析生成出来的所有LUN,发现所有LUN中均包含HP-Unix的LVM逻辑卷信息。尝试解析每个LUN中的LVM信息,发现其中一共有三套LVM,其中45G的LVM中划分了一个LV,里面存放OA服务器端的数据,190G的LVM中划分了一个LV,里面存放临时备份数据。剩余4个LUN组成一个2.1T左右的LVM,也只划分了一个LV,里面存放Oracle数据库文件。编写解释LVM的程序,尝试将每套LVM中的LV卷都解释出来,但发现解释程序出错。 仔细分析程序报错的原因,安排开发工程师debug程序出错的位置,并同时安排高级文件系统工程师对恢复的LUN做检测,检测LVM信息是否会因存储瘫痪导致LMV逻辑卷的信息损坏。经过仔细检测,发现确实因为存储瘫痪导致LVM信息损坏。尝试人工对损坏的区域进行修复,并同步修改程序,重新解析LVM逻辑卷。 2、解析VXFS文件系统 搭建环境,将解释出来的LV卷映射到搭建好的环境中,并尝试Mount文件系统。结果Mount文件系统出错,尝试使用“fsck –F vxfs” 命令修复vxfs文件系统,但修复结果还是不能挂载,怀疑底层vxfs文件系统的部分元数据可能破坏,需要进行手工修复。 3、修复VXFS文件系统 仔细分析解析出来的LV,并根据VXFS文件系统的底层结构校验此文件系统是否完整。分析发现底层VXFS文件系统果然有问题,原来当时存储瘫痪的同时此文件在系统正在执行IO操作,因此导致部分文件系统元文件没有更新以及损坏。人工对这些损坏的元文件进行手工修复,保证VXFS文件系统能够正常解析。再次将修复好的LV卷挂载到HP-Unix小机上,尝试Mount文件系统,文件系统没有报错,成功挂载。 4、检测Oracle数据库文件并启动数据库 在HP-Unix机器上mount文件系统后,将所有用户数据均备份至指定磁盘空间。所有用户数据大小在1TB左右。 使用Oracle数据库文件检测工具“dbv”检测每个数据库文件是否完整,发现并没有错误。再使用北亚Oracle数据库检测工具,发现有部分数据库文件和日志文件校验不一致,安排北亚工程师对此类文件进行修复

01

Linux后台开发常用工具

pwdx - report current working directory of a process,格式:pwdx pid 内存分析工具 valgrind valgrind辅助工具 qcachegrind 可视化查看valgrind结果 淘宝DBA团队发布的监控脚本,使用perl开发,可以完成对linux系统和MySql相关指标的实时监控 orzdba  取指定进程名的pid pidof 进程名 性能瓶颈查看: perf top -p pid 查看调用栈: pstack pid https://www.percona.com/ 查询程序执行聚合的GDB堆栈跟踪,先进性堆栈跟踪,然后将跟踪信息汇总: pt-pmp -p pid 格式化explain出来的执行计划按照tree方式输出,方便阅读: pt-visual-explain 从log文件中读取插叙语句,并用explain分析他们是如何利用索引,完成分析之后会生成一份关于索引没有被查询使用过的报告: pt-index-usage 其它: vmstat tcpdump 网络数据包分析器   显示包的内容:   tcpdump -i eth1 -n -vv -x -e -s 600 # 仅二进制   tcpdump -i eth1 -n -vv -X -e -s 600 # 二进制和文本   抓包保存到文件供Wireshark分析:   tcpdump -i eth1 -n -vv -X -e -s 600 -w x.cap   抓取192.168.31.1的80端口的包   tcpdump -i eth1 host 192.168.31.1 and port 80   抓取目标IP为192.168.31.1和目标端口为80端口的包   tcpdump -i eth1 dst host 192.168.31.1 and dst port 80 -s 指定显示多少字节的包内容 objdump nm ldd strings iostat 输入/输出统计 ifstat 网络流量实时监控工具 vmstat 虚拟内存统计 sar (System Activity Reporter系统活动情况报告,最为全面的系统性能分析工具之一) iptraf 实时IP局域网监控 iftop 网络带宽监控 htop 进程监控 iotop 磁盘I/O监测工具 fuser 使用文件或文件结构识别进程 lsof 打开文件列表 dmesg slabtop free slurm 查看网络流量 byobu 类似于screen tmux 终端复用工具,类似于screen screen 在多个进程之间多路复用一个物理终端的窗口管理器 dtach 用来模拟screen的detach的功能的小工具 dstat 可以取代vmstat,iostat,netstat和ifstat这些命令的多功能产品 NetHogs 监视每个进程的网络带宽 MultiTail 同时监控多个文档、类似tail Monitorix 系统和网络监控 Arpwatch 以太网活动监控器 Suricata 网络安全监控 Nagios 网络/服务器监控 Collectl 一体化性能检测工具 mtr 网络连通性判断工具,集成了traceroute和ping socat 多功能的网络工具(Socket CAT,netcat加强版) netpipes socket操作 ab wget curl tsung 压力测试工具 siege 压力测试和评测工具 nmon 监控Linux系统性能 psacct 监视用户活动 ncdu 基于ncurses库的磁盘使用分析器 slurm 实时网络流量监控 findmnt 查找已经被挂载的文件系统 saidar 系统数据监控和统计工具 ss 可以替代netstat的网络连接查看工具(socket statistics) ccze 用不同颜色高亮日志协助管理员进行区分和查看分析 netstat 网络统计 ifconfig (ifup ifdown) Linux磁盘相关命令 sfdisk -l sfdisk -s fdisk -l dmesg |grep SCSI dmesg |grep -i raid df -h cat /proc/scsi/scsi hdparm /dev/sda mount 加载一块硬盘 mkfs 创建文件系统 /etc/fstab 文件内容mount命令输出一致 lscpu 查看CPU lspci

02
领券