如何恢复包含损坏记录的物理文件
在物理文件在没有激活日志的状态下,如果出现了损坏的记录如何恢复该物理文件。
解答 请按照以下步骤,尽量恢复物理文件中没有损坏的记录:
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)是为了避免运行该命令时,物理文件的访问路径被破坏。
解答 请按照以下步骤,尽量恢复物理文件中没有损坏的记录:
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)是为了避免运行该命令时,物理文件的访问路径被破坏。