prmscan 是诗檀软件独立研发的ORACLE数据块碎片扫描合并工具,其适用于以下的场景:
针对ORACLE ASM diskgroup 磁盘组metadata元数据损坏的问题,一般会先采用prm-dul或amdu等工具将其中的数据文件抽取出来;但如果asm的关键数据例如FILE NUMBER 1的文件指针损坏了,那么amdu和prm-dul也将无法从diskgroup中抽取出数据文件。 此时则需要使用prmscan工具,该工具可以从数据块级别识别镜像image中的数据,并重组合并。
下面是一个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内嵌的数据库中,扫描完成后可以自动或手动将数据文件碎片拼起来,实现恢复的目的。只要数据没有被覆盖,且数据块没有断裂,那么一般都可以恢复其数据。