DB2自上次检查以来更新了行

DB2自上次检查以来更新了行,db2,rdbms,Db2,Rdbms,我希望定期从db2导出数据,并将其加载到另一个数据库中进行分析。 为了做到这一点,我需要知道自上次从给定表导出内容以来插入/更新了哪些行 一个简单的解决方案可能是在每个表中添加一个时间戳并将其用作引用,但我目前没有这样的TS,如果可能的话,我希望避免添加它 对于查找在给定时间后添加/更新的行(或解决我的问题的其他方法),是否有其他解决方案 如果没有时间戳列,这是不可能的。通过时间戳,您可以知道哪些是新的行或修改的行 您还可以使用TimeTravel功能来获取新值,但这意味着一个时间戳列 另一种选

我希望定期从db2导出数据,并将其加载到另一个数据库中进行分析。 为了做到这一点,我需要知道自上次从给定表导出内容以来插入/更新了哪些行

一个简单的解决方案可能是在每个表中添加一个时间戳并将其用作引用,但我目前没有这样的TS,如果可能的话,我希望避免添加它


对于查找在给定时间后添加/更新的行(或解决我的问题的其他方法),是否有其他解决方案

如果没有时间戳列,这是不可能的。通过时间戳,您可以知道哪些是新的行或修改的行

您还可以使用TimeTravel功能来获取新值,但这意味着一个时间戳列

另一种选择是将表置于append模式,然后获取给定行之后的行。但是,该选项在reorg后不确定,并影响性能和空间利用率

一种可能的选择是使用SQL复制,但这需要额外的表来进行转移


最后,另一个选项是使用db2ReadLog API读取日志,但这意味着需要进行开发。此外,只需将归档日志应用到新数据库中是可能的,但是数据库将保持前滚挂起状态。

在Db2中有一个简单的时间戳选项(对于LUW),称为

行更改时间戳

这是由Db2管理的,可以定义为隐藏的,因此现有的SELECT*FROM查询不会检索新行,这将导致额外的成本

查看

此功能最初是为乐观锁定而添加的,但也可用于此类情况

DB2z/OS有一个类似的概念——您必须检查一下,因为我还没有尝试过这个概念


当然,还有其他解决方法,如复制等。

对同步表进行更多研究。根据您的Db2服务器平台和版本、目标RDBMS类型、版本和平台以及可用的工具集,存在不同的解决方案。解决方案包括CDC/QREP/SQLREP或用于同步表的第三方工具。或者你可以重新发明一个轮子。听起来不错。我试试看。谢谢在Z/OS上也是如此。LAST_UPDT_TS TIMESTAMP NOT NULL始终为更新为行更改时间戳时的每一行生成