• 如何重新找回物理文件中已经被删除的记录


    序言:
    这是一个允许查看/拷贝/找回物理文件中已经被删除的记录的工具。你可以交互地显示活动的和被删除的
    记录,扫描到被删除的记录,并将它们恢复回来。此外,你还可以通过这个工具将记录拷贝并打印出来,或者
    输出到一个输出文件,或者是在不显示记录的情况下,直接恢复被删除的记录。
    与其他恢复被删除的记录的工具不同,UNDEL并不会把物理文件拷贝到SAVF中,而是直接在物理文件的记录
    上直接操作,这对于有着很多记录的物理文件来说,速度会快很多。
    UNDEL可以运行在RISC系统上:V3R7及以上版本,同时系统安全级别(系统值QSECURITY)设为40或50。

    工作原理:
    当一个应用程序删除了物理文件里的一条记录(例如:通过RPG语言中的DELETE代码),OS/400并不会真正
    从存储介质上将其除去,而仅仅是在记录中设置一个数位来标明记录已经被删除。一旦这个数位被设置,通过
    通常的数据库操作,OS/400将永远不会访问到这些记录。但是,你可以通过提交一个"通过RRN写数据"的操作,
    重新使用这些记录,例如:在RPG程序中一条带RECNO参数的WRITE命令。这时,OS/400将回置标明被删除的哪
    个数位,并且将新的记录覆盖在原来已经删除的这条记录的位置上。
    这就是UNDEL的工作原理,其实它并不是恢复已删除的记录,而是在它之上重新写一个新的记录。重点在
    于:UNDEL首先找回被删除的数据,然后将数据写回新的记录。由于OS/400拒绝回收旧记录中的数据,UNDEL就
    跳过数据库的操作,它找到文件中的记录在数据库中的位置,然后通过简单的数位移动命令将记录恢复。
    请注意,UNDEL并不真正修改物理文件中的内容,更新记录信息的操作是通过应用程序提交一个合法的
    WRITE操作来实现的。(事实上,提交WRITE操作的是一个COBOL程序。)

    内容:
    UNDELRIS.ZIP文件包含以下内容:
    -- README
    -- UNDEL.LIB AS/400上名为UNDEL的库,SAVF格式。
    -- PF528.FDF 528位物理文件RFROMPC的描述文件。
    -- TOSAVF.REX 将物理文件拷贝成SAVF文件的源代码

    UNDEL.LIB包含以下内容:
    -- UNDEL 命令
    -- UNDELR 命令调用的CPP
    -- UNDELM MI层的程序
    -- UNDELCB 写记录的COBOL程序
    -- UNDELC CL功能
    -- UNDELMC CL功能的消息处理
    -- UNDELD 显示文件
    -- UNDELP 打印文件
    -- UNDELMF 信息文件
    -- UNDELA 数据区域
    -- UNDELU UNDEL命令的帮助信息
    -- UNDELDU UNDELD显示文件的帮助信息

    返回

    安装步骤:
    在AS/400上安装:
    最简单的方法是通过FTP(如果你有到AS/400的FTP连接)。
    A. 在AS/400上库mylib下创建一个SAVF -- mysavf;
    B. 在PC端,打开FTP通讯;
    C. 输入以下命令:
    FTP> bin
    FTP> cd mylib
    FTP> put undel.lib mysavf
    FTP> quit
    (其中mysavf是步骤A中创建的SAVF。)
    D. 直接跳到第D步;

    如果你的系统上不能FTP,那么可以通过以下步骤:

    A. 创建一个记录长度为528的物理文件:
    CRTPF MYLIB/PF528 RCDLEN(528) SIZE(*NOMAX)

    B. 将UNDEL.LIB放入长度为528的物理文件:
    一种方法:
    使用Client Access的程序RFROMPC将UNDEL.LIB拷贝到物理文件PF528中(指定PF528.FDF为描述文件);
    另一种方法:
    将UNDEL.LIB拷贝到一个共享文件夹,然后执行命令:
    CPYFRMPCD FROMFLR(MYFLR) TOFILE(MYLIB/PF528)
    FROMDOC(UNDEL.LIB) TRNTBL(*NONE)

    C. 将528位的物理文件拷贝成SAVF:
    一种方法:
    使用QUSRTOOL命令CPYTOSAVF:
    CPYTOSAVF FROMDBF(MYLIB/PF528) TOSAVF(MYLIB/MYSAVF)

    另一种方法:
    将REXX程序TOSAVF装入文件QREXSRC:
    STRREXPRC SRCMBR(TOSAVF) SRCFILE(MYLIB/QREXSRC)
    PARM('pf528 mylib mysavf mylib')

    D. 从SAVF中恢复UNDEL库:
    RSTLIB SAVLIB(UNDEL) DEV(*SAVF) SAVF(MYLIB/MYSAVF)
    如果你愿意,也可以将这些对象恢复到另一个库中:
    RSTLIB SAVLIB(UNDEL) DEV(*SAVF) SAVF(MYLIB/MYSAVF) RSTLIB(NOTHERLIB)
    UNDEL命令中唯一对库有要求的对象是参数PRDLIB,所以你可以将该参数改为自己的库:
    CHGCMD CMD(MYLIB/UNDEL) PRDLIB(NOTHERLIB)

    返回

    5. 执行方法:
    输入UNDEL命令就会交互地进入显示物理文件的画面,记录是用字符表格显示的,你可以用F19或F20扫描
    删除的记录,或者输入你所知道的相对记录号(RRN)。使用F23恢复已经删除的记录,系统会提示你再按一次
    F23键来确认你的选择。
    你还可以使用OUTFILE参数将恢复的记录拷贝到另一个文件中,如果你指定的OUTFILE不存在,命令会自动
    创建,如果OUTFILE已存在,那该文件的记录格式必须与原来的文件相同。
    此外,在显示画面中,还包含UNDEL命令的帮助信息(F1键显示帮助信息)。
  • 相关阅读:
    [CF600E]Lomsat gelral
    [BZOJ3237]连通图
    [CF580D]Kefa and Dishes
    [BZOJ4726]Sabota?
    bzoj2120&&2453 -- 带修改莫队
    bzoj4726 [ POI2017 ] -- 树形DP
    bzoj2809 [ APIO2012 ] -- 主席树
    bzoj4216 -- 分块
    bzoj4173 -- 欧拉函数
    bzoj2982 -- Lucas定理
  • 原文地址:https://www.cnblogs.com/wildfish/p/1032033.html
Copyright © 2020-2023  润新知