是否可以强制删除另一个作业/用户使用的 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 包?

在 VSAM 文件上打印报告

当GraphQL遇到VSAM

是否可以强制忽略 iPhone/iPad 用户的 :hover 伪类?

使用 PHP 创建、编辑和删除 crontab 作业?

目录文件的浏览管理及维护.作业