是否可以强制删除另一个作业/用户使用的 VSAM 文件?
Posted
技术标签:
【中文标题】是否可以强制删除另一个作业/用户使用的 VSAM 文件?【英文标题】:Is it possible to force delete VSAM file used by another Job/User? 【发布时间】:2013-01-26 06:34:10 【问题描述】:我们有一个作业,它需要 VSAM 文件的备份,然后是同一 VSAM 文件的标准删除-定义-复制。为了处理尝试删除不存在文件的情况,我们遵循标准做法,如果 Delete 返回非零返回代码,则将 MAXCC/LASTCC 设置为 0,然后继续该过程,就好像没有错误一样。
但有时我们会面临删除无法正常工作的情况,因为文件已被某个用户打开或正在其他作业中读取。在这种情况下,作业失败是因为在定义新的 VSAM 文件时,因为文件已经存在(删除无法清除它)。
对于这种情况有什么解决方法吗?或者我们可以强制删除一个文件,即使它被其他进程/用户持有?
感谢阅读!
【问题讨论】:
我可以理解备份文件,然后删除/重新创建它。但是在另一个进程持有它的同时备份它并删除/重新创建很难理解 - 你几乎必须崩溃任何持有文件的进程 - 对我来说听起来不是很有礼貌!我认为有必要对这种情况进行更多分析。 我同意你的看法,对这种情况也有同样的感觉,但是我的一位朋友问了这个问题,他想无论如何都要强制删除文件!无论如何,感谢您的帮助! 【参考方案1】:您应该能够发现,当 VSAM 文件(或任何其他文件)正被“其他人”使用时,删除它不是一个好主意。
您为什么不测试 DELETE 中的特定值?
如果您要进行备份,然后删除/定义,那么获得文件的独占控制权将是一个非常非常好的主意,否则某些事情会变得一团糟。
您可以将 DSN 的 DD 设置为有问题的 VSAM 文件,并设置 DISP=OLD,这样只有在没有人使用该文件时才会选择您的作业。
您如何进行备份?为什么其他作业同时访问该文件?这是在“测试”环境中吗?它是什么类型的 VSAM 文件?你为什么要做 REPRO,你觉得那是最好的方法吗?
如果不知道所有这些等等,实际的答案是很困难的。
【讨论】:
对不起,我没有所有这些细节,因为这个问题是我的一个朋友问的,我想不出解决方案,所以想在这里寻求帮助。谢谢! DISP=OLD 技巧是这种情况下的最佳答案。我投了一票。以上是关于是否可以强制删除另一个作业/用户使用的 VSAM 文件?的主要内容,如果未能解决你的问题,请参考以下文章
是否有将 VSAM 文件作为 tbble 或数据框导入的 R 包?