暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【DB2】创建重新启动表

538

缺省情况下,如果 INGEST 命令失败,那么可从最后一个落实点重新启动这些命令;但是,您需要先创建重新启动表,此表存储恢复 INGEST 命令所需的信息。


关于此任务

仅需创建重新启动表一次,并且该表将由数据库中的所有 INGEST 命令使用。

INGEST 实用程序将使用此表来存储从最后一个落实点恢复未完成的 INGEST 命令所需的信息。

注: 重新启动表不包含输入行的副本,只包含一些计数器以指示哪些行已落实。


限制

  • 建议您将重新启动表与 INGEST 实用程序所更新的目标表放置在同一表空间中。如果无法放置在同一表空间中,请确保包含重新启动表的表空间与包含目标表的表空间具有相同的级别。例如,如果要复原或前滚其中一个表空间,那么必须将另一个表空间也复原或前滚到相同层次。如果这两个表空间的级别不同并且您运行带 RESTART CONTINUE 选项的 INGEST 命令,那么 INGEST 实用程序可能失败或插入不正确的数据。
  • 如果灾难恢复策略包括复制 INGEST 操作的目标表,那么还必须复制重新启动表以使其与目标表保持同步。


过程

要创建重新启动表,请执行以下操作:

  • 如果您使用的是 V10.1 或 V10.5 服务器,请调用 SYSPROC.SYSINSTALLOBJECTS 存储过程:
  • db2 "CALL SYSPROC.SYSINSTALLOBJECTS('INGEST', 'C', tablespace-name, NULL)"

  • 如果正在使用 V9.5、V9.7 或 V9.8 服务器,请发出以下 SQL 语句:

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 需要先创建重新启动表:

  1. DBA 连接至数据库:
  2. db2 CONNECT TO sample

  3. DBA 调用存储过程:

db2 "CALL SYSPROC.SYSINSTALLOBJECTS('INGEST', 'C', NULL, NULL)"


下一步做什么

确保将修改该重新启动表的任何用户都具有适当权限:

  • 如果 INGEST 命令指定 RESTART NEW,那么用户必须具有对重新启动表的 SELECT、INSERT、UPDATE 和 DELETE 特权。
  • 如果 INGEST 命令指定 RESTART TERMINATE,那么用户必须具有对重新启动表的 SELECT 和 DELETE 特权。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论