使用 Load 实用程序在 DB2 中加载文件问题

File loading issues in DB2 using Load utility

我有一个 .csv 文件,以逗号分隔(位于 C:/)。我正在使用 DB2 LOAD 实用程序将 CSV 文件中存在的数据加载到 DB2 table。

LOAD CLIENT FROM C:\Users\somepath\FileName.csv of del 
  MODIFIED BY NOCHARDEL COLDEL, insert into SchemaName.TABLE_NAME;

CSV 文件有 25 行。实用程序完成后,我收到一条关于 NOCHARDEL 的错误消息。我的 table 已正确加载所有 25 行。现在,当我尝试对该架构中存在的任何 table 执行 insert/update/delete 语句时,出现以下错误。

Lookup Error - DB2 Database Error: ERROR [55039] [IBM][DB2/AIX64] SQL0290N Table space access is not allowed.

你能帮我看看我是否犯了任何错误或遗漏了导致 table 锁定的参数。

早些时候加载文件时发生了类似的情况,DBA 确认有问题的 Table space 处于“正在加载”状态

DB2 LOAD 实用程序生成的更改未记录(其高性能的副作用之一)。如果数据库在加载后立即崩溃,将无法通过重放日志记录来恢复加载的 table,因为没有这样的记录。出于这个原因,包含已加载 table 的 table 空间会自动置于 BACKUP PENDING 模式,迫使您对该 table 空间或整个数据库进行备份,以确保它是完全可以恢复的。

您可以为 LOAD 命令指定选项,以帮助您避免将来出现这种情况:

  • NONRECOVERABLE -- 此选项不会将 table 空间置于 BACKUP PENDING 模式,但是,正如其名称所暗示的那样, table 如果发生崩溃,您正在加载的内容将无法恢复,在这种情况下,您唯一的选择是删除并重新创建 table.

  • COPY YES -- 此选项会在加载前创建 table 的副本,可用于将 table 恢复到加载前发生崩溃时的状态。

如果您只加载 25 条记录,我建议您改用 IMPORT 实用程序——它没有这些限制,因为它是完全记录的(以较低的性能为代价,对于 25 条记录没关系)。

你的table卡在LOAD IN PROGRESS状态的原因是在LOAD结束时发生的NOCHARDEL错误。

您尝试过重新启动数据库吗?这应该重新初始化所有 table 空间并删除任何流氓状态。

http://www-01.ibm.com/support/docview.wss?uid=swg1IC65395
http://www-01.ibm.com/support/docview.wss?uid=swg21427102

谢谢@mustaccio。我有 6000 万行要插入。我使用 25 作为样本来检查结果。 再补充一点,我们后来才知道这是一个已知的 DB2 错误,它使加载处于进行中状态(DB2 无法确认加载已完成并且会话无限期保持打开状态)并将 table space 处于备份挂起状态。 一旦 table space 处于挂起状态,恢复是释放它的唯一选择。 根据 DB2 团队(我们尚未部署和测试),此问题已在修复包 10 中得到修复。意思是 NONRECOVERABLE 关键词对我们来说工作正常