如何恢复包含损坏记录的物理文件

 在物理文件在没有激活日志的状态下,如果出现了损坏的记录如何恢复该物理文件。
解答 请按照以下步骤,尽量恢复物理文件中没有损坏的记录:

1、在OS/400命令行键入以下命令:

OVRDBF FILE(LIBA/File) SEQONLY(*YES 1)

注: 该命令确保该物理文件被顺序地处理,同时只有一个记录在处理。

2、接着,执行以下命令:

CPYF FROMFILE(LIBA/File) TOFILE(QTEMP/x) CRTFILE(*YES) +
FROMRCD(1) ERRLVL(999) COMPRESS(*YES)

注: 同时将文件QTEMP/X保存在磁带上。

3、删除包含损坏记录的物理文件:

DLTF FILE(LIBA/File)

注: 如果由于该物理文件有逻辑文件相关,先将相关的逻辑文件更名,
存放在相同的库中。

4、将保存在QTEMP中的文件放回原来的库:

MOVOBJ OBJ(QTEMP/x) OBJTYPE(*FILE) TOLIB(LIBA)

注: 如果由于该物理文件有逻辑文件相关,请在新的物理文件上重建
相应的逻辑文件。

5、删除所有旧的逻辑文件和物理文件:
DLTF FILE(LIBA/all_logicals_over_renamed_physical)
DLTF FILE(LIBA/renamed_physical)

注解:
- 用命令CPYF得到一个包含所有可以访问的记录文件,而损坏的记录将会被写入作业日志(JOBLOG)。
参数ERRLVL将被视为一个可以容忍的最多损坏记录的阀值,超过该阀值时,CPYF命令将停止。 - 命令CPYF执行结束后,您可以比较两个文件(QTEMP/x和LIBA/File)的记录的数量,如果记录数相同,
说明物理文件中的数据没有丢失。如果记录数不同,说明有数据丢失,此时就需要从其他途径来
恢复这些数据,例如:备份的磁带等。

- 当指定命令CPYF中的参数COMPRESS为*NO时,旧文件中被删除的记录也会被拷贝到新的文件中。

- 指定命令CPYF中的参数FROMRCD(1)是为了避免运行该命令时,物理文件的访问路径被破坏。
原文地址:https://www.cnblogs.com/wildfish/p/1032030.html