prmscan 是诗檀软件独立研发的ORACLE数据块碎片扫描合并工具,其适用于以下的场景:
- 误手动删除了文件系统(任意文件系统 NTFS、FAT、EXT、UFS、JFS等)或ASM上的数据文件
- 文件系统损坏,导致数据文件大小变成0 bytes即数据文件被清零
- 文件系统损坏,导致文件系统无法MOUNT加载
- ASM存储元数据损坏,导致diskgroup无法mount加载
- 文件系统或ASM其中的LV或PV被物理破坏或丢失
针对ORACLE ASM diskgroup 磁盘组metadata元数据损坏的问题,一般会先采用prm-dul或amdu等工具将其中的数据文件抽取出来;但如果asm的关键数据例如FILE NUMBER 1的文件指针损坏了,那么amdu和prm-dul也将无法从diskgroup中抽取出数据文件。 此时则需要使用prmscan工具,该工具可以从数据块级别识别镜像image中的数据,并重组合并。
下面是一个ASM 元数据被彻底破坏的例子
- 破坏asm磁盘
[oracle@asm ~]$ dd if=/dev/zero of=/dev/asm-diske bs=1M count=100 100+0 records in 100+0 records out 104857600 bytes (100.0 MB) copied, 0.0987016 seconds, 1.1 GB/s
2. 使用PRMscan扫描asm磁盘
[oracle@asm ~]$ java -jar PRMScan.jar --scan /dev/asm-diske --guess 8k [oracle@asm ~]$ java -jar PRMScan.jar --outputsh ./outputsh.txt [oracle@asm ~]$ sh outputsh.txt
3.使用PRM扫描拼出来的数据文件
以上流程可以看到 例如prmscan 扫描ASM DISK可以成功抽取出完整的oracle datafile数据文件。
实际上对于prmscan 来说扫描ASM diskgroup下的ASM disk和扫描普通的磁盘分区、LV、PV并没有区别。prmscan默认使用最小512字节作为一个step size,每512字节去尝试识别一个block header,如果识别则记录到prmscan内嵌的数据库中,扫描完成后可以自动或手动将数据文件碎片拼起来,实现恢复的目的。只要数据没有被覆盖,且数据块没有断裂,那么一般都可以恢复其数据。
Leave a Reply