IBM Support

从作业中拆离假脱机文件

Technical Blog Post


Abstract

从作业中拆离假脱机文件

Body

从作业中拆离假脱机文件

原文地址:

http://ibmsystemsmag.blogs.com/i_can/2011/01/detach-spooled-files-from-a-job.html

我要感谢凯文帮助写作和校对本周的文章。凯文在IBM i开发实验室的打印和输出项目团队工作。

很多规模庞大的IBM i环境需要各种复杂而精细的方法去管理系统中作业的数量。如果系统中作业达到了最大绝对值--正如在最大作业数量(QMAXJOB)系统值中定义的那样,将会对系统有一些消极的影响,比如说:

l        由于达到了系统作业的最大值而导致意外宕机

l        由于系统中巨大的作业数量,使得意外宕机后IPL的时间很长

l        对于作业表资源的消耗

许多客户系统中的作业数量达到或接近最大值,不是由于活动作业的数量,而是那些在状态是在OUTQ里的作业的数量。换句话说,有些作业结束了,但是至少还有一个假脱机文件,也许仅仅是作业日志。

系统里的作业如果有假脱机输出,即使这个作业终止了,也会有控制结构与之相关联。控制结构既可以是作业表中的一个记录,也可以是用来储存作业信息的永久的作业结构。

IBM提供了一个系统值 - 假脱机文件处理(QSPLFACN)和一个作业属性(SPLFACN),可以帮助减少系统中作业的数量。假脱机文件处理系统值包括*KEEP(缺省值)-保留作业的假脱机文件;“*DETACH”,允许作业和假脱机文件分离。分离假脱机文件,作业的控制结构可以被释放,并且当作业输出仍然可用的时候被该作业重用。拆离假脱机文件可以使系统中的作业数更少,这是件很好的事情。

如果有已经结束但是保留着假脱机文件的作业,你可以使用CHGJOB命令,将参数SPLFACN指定为*DETACH,拆离其假脱机文件,从而将作业从系统中清除。

将假脱机文件从作业中拆离可能会引起一些操作上的差异,因为这些拆离了的假脱机文件将不能通过WRKJOBCHGJOB等等找到。然而,他们却可以通过WRKJOBLOG(作业日志操作)或者WRKSPLF(使用JOB参数)命令找到。所有的常规的假脱机文件命令,例如DLTSPLF,都将跟假脱机文件没有被拆离的时候一样工作正常。

关于*DETACH支持,有一点需要注意,虽然未必会发生,但是如果假脱机文件被允许在作业结束后在系统中保留很长一段时间,这期间可能生成另一个与其相同的文件名,作业名,作业用户,作业号,假脱机文件号的假脱机文件。有许多应用程序仅仅使用这些参数或者这些参数中的一部分去定位某个假脱机文件。这样就很可能应用程序由于找到了不唯一的假脱机文件而导致程序错误。所有的假脱机接口都加上了一些额外的参数,比如系统名(该作业运行并创建假脱机文件的系统),创建日期和时间,使得应用程序能正确地找到假脱机文件。但是,旧的应用程序可能需要更新之后才能使用它们。

关于拆离假脱机文件和管理IBM i系统作业的更多信息,请参阅IBM红皮书《管理IBM i作业和输出的最佳实践》

一个简单的例子:   

在这个例子当中,我有一个作业,与之关联的有两个假脱机文件。作业日志已经不存在了因为系统已经自动清除了这些老的作业日志。为了释放作业结构,我从该作业中拆离了这两个假脱机文件。例如,你可以看到,当假脱机文件被拆离之后,WRKJOB命令已经找不到这个作业,但是WRKSPLF命令可以。

WRKJOB JOB(453851/DMMAY/QPADEV000D)   系统中查找453851/DMMAY/QPADEV000D 作业

option 4 to work with spooled files:  找到作业,使用选项4,对假脱机文件进行操作

CHGJOB JOB(453851/DMMAY/QPADEV000D) SPLFACN(*DETACH)   将假脱机文件拆离

WRKJOB JOB(453851/DMMAY/QPADEV000D)  系统中再次查找453851/DMMAY/QPADEV000D 作业

Job 453851/DMMAY/QPADEV000D not found.  作业没有找到 

WRKSPLF SELECT(*ALL) JOB(453851/DMMAY/QPADEV000D) 使用WRKSPLF命令,却可以找到。

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SWG60","label":"IBM i"},"Component":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"","Edition":"","Line of Business":{"code":"LOB57","label":"Power"}}]

UID

ibm11146166