【问题标题】:DB2 AS400/IBM ISeries Triggers/On File ChangeDB2 AS400/IBM ISeries 触发器/文件更改
【发布时间】:2018-04-29 03:04:36
【问题描述】:

随着时间的推移,寻找最佳做法来获取 DELTA 数据。

没有可用的时间戳,无法编程时间戳!

目标:随着时间的推移获取所有字段的所有文件中的差异。只需要主键作为输出。 我还需要 15 分钟间隔的数据更改

示例: 客户文件有 50 列/字段,如果任何字段发生更改,我希望另一个文件记录主键。或任何记录客户档案发生变化的东西。

问题: 我不确定触发器是否可行,因为触发器有很多开销。

任何人都可以在考虑开销和性能的情况下建议 DB2 增量的最佳实践吗?

【问题讨论】:

  • 太糟糕了,没有时间戳可以通过添加三个 32 时间戳和一个历史表来使表成为临时表。方便从sql查询。

标签: db2 oledb ibm-midrange db2-400


【解决方案1】:

我不确定您为什么认为触发器会产生很多开销,根据我的经验,它们的速度非常快,但正如 David 建议的那样,您可以记录要跟踪的文件,然后分析日志接收器。

要开启日记功能,您需要执行三个步骤:

  1. 使用CRTJRNRCV 创建接收器
  2. 使用CRTJRN为接收者创建一个日志
  3. 使用STRJRNPF 开始记录文件。您需要保留 *BEFORE 和 *AFTER 图像以检测更新时的更改,但您可以省略 *OPNCLS 记录以节省一些空间。

完成此操作后,您还可以使用承诺控制来管理事务!但是,您现在必须管理这些接收器,因为它们占用了大量空间。您可以通过在 CRTJRN 命令上使用 MNGRCV(*SYSTEM) 来做到这一点。我怀疑您会想要阻止系统自动删除旧的接收器,因为这可能会导致您在系统更改接收器时错过一些更改。但这意味着您必须在使用完旧接收器后自行删除它们。我建议等待一两天来删除旧的接收器。这可能是一个一夜之间的过程。

要读取日志接收器,您需要使用RTVJRNE(检索日志条目),它可以让您将日志条目检索到变量中,或者使用DSPJRN(显示日志),它可以让您将日志条目返回到显示器,a打印机文件,或 *OUTFILE。然后可以使用 ODBC 或 SQL 或您想要处理的任何方式读取 *OUTFILE。您可以按文件和类型过滤要接收的日记条目。

【讨论】:

  • 最后一个问题,我可以通过 oledb 或 obdc 的 sql 语句读取接收器吗?
  • 不,您必须从接收方将所需数据检索到数据库文件中,然后您可以使用 ODBC 或 SQL 读取。
【解决方案2】:

您是否考虑过记录文件并评估日志接收者?

【讨论】:

  • 我正要建议这个。
  • 这在 15 分钟到 10 分钟的间隔内是否可行?
  • 是的,只需运行带有开始日期和时间的RTVJRNE,将其捕获到文件中,然后调用程序来处理数据。
猜你喜欢
  • 1970-01-01
  • 2012-03-22
  • 1970-01-01
  • 2018-08-03
  • 1970-01-01
  • 2015-06-05
  • 1970-01-01
  • 1970-01-01
  • 2015-11-02
相关资源
最近更新 更多