db2 import export 到相同的 ixf 但不同的进程
Posted
技术标签:
【中文标题】db2 import export 到相同的 ixf 但不同的进程【英文标题】:db2 import export to same ixf but different processes 【发布时间】:2018-12-30 07:14:44 【问题描述】:运行 db2 import/export
命令时,db2 是否检查文件锁?
我有 2 个进程,一个运行导出到 ixf
,另一个进程导入 ixf
。两者每天运行多次,导出过程是可变时间的,如果当前正在写入 ixf
,我不想导入它。
【问题讨论】:
我一定误会了你:你实际上是在运行数据库导出而不将数据库切换到只读模式吗? 是的,数据库导出运行时没有运行 db2 set write suspend for database 【参考方案1】:这可能是特定于实现细节的,因此请考虑一个更安全的设计,以便仅在成功完成导出后处理导入的开始,可能通过更智能的调度或不同的脚本编写。
如果您从 IXF 开始 Db2 导入,然后开始将 Db2 导出到同一个 IXF,那么当前支持的 Db2-LUW 客户端版本应该会导致导出失败,并显示本地的 SQL3001c(打开输出文件的 i/O 错误)文件系统。
如果您开始导出到 IXF,然后在导出完成之前从同一个 IXF 开始导入,那么当前支持的 Db2-LUW 客户端版本应该会再次导致导入失败并显示 SQL3030C(打开输入时出现 i/o 错误文件)至少对于本地文件系统。
但是,行为可能会因操作系统、托管输入/输出文件的文件系统、文件系统挂载选项等而有所不同,当然错误是不可避免的。出于这些原因,请考虑更稳健的设计。
【讨论】:
如果 db2 尝试导入从另一台服务器复制的 csv 文件,它会在导入时抛出错误吗?你有没有推荐任何关于 db2 和文件读/写冲突的书籍 您不应该使用 cmets 进行后续问题。我不知道任何 Db2 书籍会提供有关每个命令的文件打开模式的实现细节。一些网络复制工具使用临时文件名,只有在成功复制所有数据后才重命名。如果脚本能够提取内容,脚本也可以等待网络复制完成,并且只处理零返回码的文件。将内容推送到目标服务器的脚本可以在成功复制时推送标志文件,而在目标上运行的其他脚本只能在存在标志文件时执行。【参考方案2】:我认为这取决于导出查询中使用的隔离级别,以及为导入获取的锁。如果导入具有插入类型,则锁定在行上。如果导入具有替换类型,则锁定将在表级别。
但是,我没有任何引用来支持上一段。
【讨论】:
以上是关于db2 import export 到相同的 ixf 但不同的进程的主要内容,如果未能解决你的问题,请参考以下文章