缺省情况下,如果 INGEST 命令失败,那么可从最后一个落实点重新启动这些命令;但是,您需要先创建重新启动表,此表存储恢复 INGEST 命令所需的信息。
关于此任务
仅需创建重新启动表一次,并且该表将由数据库中的所有 INGEST 命令使用。
INGEST 实用程序将使用此表来存储从最后一个落实点恢复未完成的 INGEST 命令所需的信息。
注: 重新启动表不包含输入行的副本,只包含一些计数器以指示哪些行已落实。
限制
- 建议您将重新启动表与 INGEST 实用程序所更新的目标表放置在同一表空间中。如果无法放置在同一表空间中,请确保包含重新启动表的表空间与包含目标表的表空间具有相同的级别。例如,如果要复原或前滚其中一个表空间,那么必须将另一个表空间也复原或前滚到相同层次。如果这两个表空间的级别不同并且您运行带 RESTART CONTINUE 选项的 INGEST 命令,那么 INGEST 实用程序可能失败或插入不正确的数据。
- 如果灾难恢复策略包括复制 INGEST 操作的目标表,那么还必须复制重新启动表以使其与目标表保持同步。
过程
要创建重新启动表,请执行以下操作:
- 如果您使用的是 V10.1 或 V10.5 服务器,请调用 SYSPROC.SYSINSTALLOBJECTS 存储过程:
- 如果正在使用 V9.5、V9.7 或 V9.8 服务器,请发出以下 SQL 语句:
db2 "CALL SYSPROC.SYSINSTALLOBJECTS('INGEST', 'C', tablespace-name, NULL)"
CREATE TABLE SYSTOOLS.INGESTRESTART (
JOBID VARCHAR(256) NOT NULL,
APPLICATIONID VARCHAR(256) NOT NULL,
FLUSHERID INT NOT NULL,
FLUSHERDISTID INT NOT NULL,
TRANSPORTERID INT NOT NULL,
BUFFERID BIGINT NOT NULL,
BYTEPOS BIGINT NOT NULL,
ROWSPROCESSED INT NOT NULL,
PRIMARY KEY (JOBID, FLUSHERID, TRANSPORTERID, FLUSHERDISTID))
IN <tablespace-name>
DISTRIBUTE BY (FLUSHERDISTID);
GRANT SELECT, INSERT, UPDATE, DELETE
ON TABLE SYSTOOLS.INGESTRESTART TO PUBLIC;
结果
现在应在指定表空间中创建重新启动表 SYSTOOLS.INGESTRESTART,并且您现在可运行可重新启动的 INGEST 命令。
示例
DBA 计划将所有 INGEST 命令作为可重新启动的命令运行,所以该 DBA 需要先创建重新启动表:
- DBA 连接至数据库:
- DBA 调用存储过程:
db2 CONNECT TO sample
db2 "CALL SYSPROC.SYSINSTALLOBJECTS('INGEST', 'C', NULL, NULL)"
下一步做什么
确保将修改该重新启动表的任何用户都具有适当权限:
- 如果 INGEST 命令指定 RESTART NEW,那么用户必须具有对重新启动表的 SELECT、INSERT、UPDATE 和 DELETE 特权。
- 如果 INGEST 命令指定 RESTART TERMINATE,那么用户必须具有对重新启动表的 SELECT 和 DELETE 特权。




