如何恢复PF中被误删除的记录?
                                                                                  作成:ITS qingzhou
                                                                                  时间:2006/6/22

日志(Journal)的概念相当于其它关系数据库的日志(LOG),通常如果事务型应用需要提交/回滚(Commit/Roll Back)时,数据库的表是需要日志的。另外,如果表上定义了触发器、参照完整性(Referential Integrity),表也需要日志的。
DB2 for iSeries的表是可以有日志的,也可以无日志的。如果你用来创建的是Library而不是SQLCollection,那么创建于这个Library的表默认是没有日志的。反之,如果你用来创建的是SQLCollection,那么创建于这个Library的表默认是有日志的;默认的日志是QSQJRN,默认的日志接收器是QSQJRN0001,用户可以更改这些默认属性。
以下就是通过日志来恢复误删除PF记录的一个事例,你可以用Navigator方式进行创建日志,如果习惯用5250仿真绿屏方式,也可以使用CL命令来创建日志,以下是以5250绿屏方式。

1、创建日志接收器
===> CRTJRNRCV JRNRCV(LIU/LIUJRNRCV) TEXT('Liu's Journal Receive') 

2、建立日志
===> CRTJRN JRN(LIU/LIUJRN) JRNRCV(LIU/LIUJRNRCV) TEXT('liu's Journal')

3、以LIU/EXECTL这个PF为例,以*BOTH方式启动日志
===> STRJRNPF FILE(LIU/EXECTL) JRN(LIU/LIUJRN) IMAGES(*BOTH)
为了利用JRN进行修改回退,JRN必须启用了参数"Journal images""*BOTH"选项,即除了缺省的"After Images"还要包含"Before Images".

4、先查询目前记录情况,共75条记录。
===> RUNQRY *N LIU/EXECTL

5、测试:通过STRDFU删除LIU/EXECTL记录5条,然后再次查询情况,仅剩下70条记录。


6、利用RMVJRNCHG命令恢复记录
===> RMVJRNCHG JRN(LIU/LIUJRN) FILE((LIU/EXECTL))

7、系统提示:Remove failed. 5 entries removed from *QDDS object.

8、再次查询LIU/EXECTL情况,发觉被删除的记录已经恢复。


如果想删除日志及日志接收器,需要按照如下步骤实施。

1、先解除日志与PF文件的关联
===> ENDJRNPF FILE(LIU/EXECTL) JRN(LIU/LIUJRN)

2、删除日志
===> DLTJRN JRN(LIU/LIUJRN)

3怎样恢复数据、删除日志接收器
===> DLTJRNRCV JRNRCV(LIU/LIUJRNRC

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。