2012-08-02 87 views
3

是否有在IBM DB2什么办法让已经改变了表的列表,它已经改变了DB2表的名单(更新/添加/删除的)?获得,因为特定的时间戳,因为一个特定的时间戳说,自从20120801185856时间戳

我面临的问题是,我已经从现场DB服务器一个箱恢复7月25日一个备份和更新了这个恢复的数据库,同时启用功能包。现在数据库服务器已经改变,因为客户正在访问它,我不能恢复最新的备份,因为box1有一些额外的表/数据。

,所以我想知道自上次备份后已经改变了,这样我可以手动更新这些表的表的列表。 请帮忙。

回答

5

如果你在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 

然而,它们都将显示已删除的表,因为它们可以从系统目录中删除时,他们都将被丢弃。

+0

查询工作不正常。我尝试手动更新表,当我执行此查询时,它不显示该表。我试着在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

+0

如果查询是关于表ROWS更新/插入/删除(不基于DML操作时间戳),则此查询不会获取所需的输出。我认为CREATE_TIME,ALTER_TIME列对应于DDL操作或统计集合。我已经运行并在db2 9.7 LUW中进行了验证。 – dbza 2014-08-11 23:12:07

0

我宁愿建议删除触发记录到一个表,在该表的删除操作已发生的细节。