获得,因为特定的时间戳,因为一个特定的时间戳说,自从20120801185856时间戳
问题描述:
是否有在IBM DB2什么办法让已经改变了表的列表,它已经改变了DB2表的名单(更新/添加/删除的)?获得,因为特定的时间戳,因为一个特定的时间戳说,自从20120801185856时间戳
我面临的问题是,我已经从现场DB服务器一个箱恢复7月25日一个备份和更新了这个恢复的数据库,同时启用功能包。现在数据库服务器已经改变,因为客户正在访问它,我不能恢复最新的备份,因为box1有一些额外的表/数据。
,所以我想知道自上次备份后已经改变了,这样我可以手动更新这些表的表的列表。 请帮忙。
答
如果你在DB2用于Linux/UNIX/Windows的,这个查询应该得到你所需要的:
SELECT TRIM(TABSCHEMA) || '.' || TRIM(TABNAME),
MAX(CREATE_TIME,ALTER_TIME)
FROM SYSCAT.TABLES
ORDER BY 2 DESC
如果你的主机上,这一项应该做你:
SELECT RTRIM(CREATOR) || '.' || RTRIM(NAME),
MAX(CREATEDTS,ALTEREDTS)
FROM SYSIBM.SYSTABLES
ORDER BY 2 DESC
然而,它们都将显示已删除的表,因为它们可以从系统目录中删除时,他们都将被丢弃。
答
我宁愿建议删除触发记录到一个表,在该表的删除操作已发生的细节。
查询工作不正常。我尝试手动更新表,当我执行此查询时,它不显示该表。我试着在ALTER_TIME>'2012-08-01'中过滤结果,它在ALTER_TIME列中显示旧日期。我的查询是 SELECT TRIM(TABSCHEMA)|| '' || TRIM(TABNAME), CREATE_TIME,ALTER_TIME FROM SYSCAT.TABLES where TABNAME ='STLOC' ORDER BY 2 DESC 请帮忙。 – user1571136 2012-08-06 05:47:10
如果查询是关于表ROWS更新/插入/删除(不基于DML操作时间戳),则此查询不会获取所需的输出。我认为CREATE_TIME,ALTER_TIME列对应于DDL操作或统计集合。我已经运行并在db2 9.7 LUW中进行了验证。 – dbza 2014-08-11 23:12:07