prmscan 是诗檀软件独立研发的ORACLE数据块碎片扫描合并工具,其适用于以下的场景:
  1. 误手动删除了文件系统(任意文件系统 NTFS、FAT、EXT、UFS、JFS等)或ASM上的数据文件
  2. 文件系统损坏,导致数据文件大小变成0 bytes即数据文件被清零
  3. 文件系统损坏,导致文件系统无法MOUNT加载
  4. ASM存储元数据损坏,导致diskgroup无法mount加载
  5. 文件系统或ASM其中的LV或PV被物理破坏或丢失
  针对ORACLE ASM diskgroup 磁盘组metadata元数据损坏的问题,一般会先采用prm-dul或amdu等工具将其中的数据文件抽取出来;但如果asm的关键数据例如FILE NUMBER 1的文件指针损坏了,那么amdu和prm-dul也将无法从diskgroup中抽取出数据文件。 此时则需要使用prmscan工具,该工具可以从数据块级别识别镜像image中的数据,并重组合并。 下面是一个ASM 元数据被彻底破坏的例子  
  1. 破坏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-asm1 prmscan-asm2   prmscan-asm3   prmscan-asm4   prmscan-asm5   以上流程可以看到 例如prmscan 扫描ASM DISK可以成功抽取出完整的oracle datafile数据文件。   实际上对于prmscan 来说扫描ASM diskgroup下的ASM disk和扫描普通的磁盘分区、LV、PV并没有区别。prmscan默认使用最小512字节作为一个step size,每512字节去尝试识别一个block header,如果识别则记录到prmscan内嵌的数据库中,扫描完成后可以自动或手动将数据文件碎片拼起来,实现恢复的目的。只要数据没有被覆盖,且数据块没有断裂,那么一般都可以恢复其数据。