如何将Journal传输至另一台IBM i?操作方法及数据异常咨询
IBM i Journal 相关问题解答
问题1:是否仅发送Journal/Receiver即可将日志传输至另一台IBM i,还是需同时发送对应表?
必须同时传输对应的数据表。Journal记录依赖数据表的对象标识(OBJID)建立关联,目标机若无原表,Journal记录无法被正确解析和映射,甚至无法访问。
问题2:传输Journal及被日志记录表的正确方式是什么?
- 先确认源机上Journal与表的关联状态正常,无未完成事务。
- 备份时需包含数据表(*FILE)、Journal(*JRN)、所有关联的Journal Receiver(*JRNRCV):
- 若对象都在同一库,用
SAVLIB LIB(LIB_Name)备份整个库; - 若分散在不同库,用
SAVOBJ OBJ(Table_Name JRN_Name JRNRCV_*) LIB(LIB_Name) OBJTYPE(*FILE *JRN *JRNRCV),注意通配符JRNRCV_*要覆盖所有历史Receiver。
- 若对象都在同一库,用
- 传输备份介质到目标机后,按表 → Journal Receiver → Journal的顺序恢复:
- 用
RSTLIB LIB(LIB_Name)恢复整个库,或RSTOBJ分别指定对象类型恢复。
- 用
- 恢复完成后,执行
DSPJRN JRN(LIB_Name/JRN_Name)验证Journal与表的关联是否正常。
问题3:使用SAVOBJ备份Journal并在目标机执行RSTOBJ后,Journal内无数据?
Journal本身仅存储配置信息,**实际日志数据全部保存在Journal Receiver(*JRNRCV)**中。单独备份Journal对象只备份了它的定义,没有包含日志数据。
解决方法:备份时必须同时选中对应的Journal Receiver对象,命令示例:
SAVOBJ OBJ(JRN_Name JRNRCV_Name) LIB(LIB_Name) OBJTYPE(*JRN *JRNRCV)
恢复时同步恢复Journal和Receiver即可看到日志数据。
问题4:备份整个库并在目标机恢复后,Journal数据不完整,且表中无数据,但原IBM i执行DSPJRN命令可正常查看数据?
常见原因及解决:
- 备份未包含所有Journal Receiver:源机上Journal可能关联了历史Receiver(已被移出当前库或未被纳入备份范围)。执行
DSPJRN JRN(LIB_Name/JRN_Name)查看所有关联的Receiver,确认这些Receiver都被备份。 - 备份时库处于活动状态:备份过程中表有写入操作,导致表数据与Journal记录不一致。建议备份前暂停业务写入,或使用
SAVLIB的ALWOBJDIF(*ALL)参数保证一致性。 - 恢复顺序错误:需先恢复所有Receiver,再恢复Journal和表。
- 验证命令未指定完整Receiver范围:目标机执行DSPJRN时需指定
JRNRCV(*ALL)来查看所有关联Receiver的日志,命令示例:
DSPJRN JRN(LIB_Name/JRN_Name) OBJ((LIB_Name/Table_Name *FILE)) ENTTYP(*RCD) OUTPUT(*OUTFILE) OUTFILE(QTEMP/Temp_table) OUTMBR(*FIRST *ADD) JRNRCV(*ALL)
内容的提问来源于stack exchange,提问作者Flow
相关产品推荐
相关产品推荐

