如何检查从Aginity工作台在IBM Netezza SQL中处理表的数据和时间?

时间:2015-01-28 09:25:54

标签: netezza

我的问题可能很简单,但是,我一直在寻找答案。

如何检查从Aginity工作台在IBM Netezza SQL中处理表的数据和时间?

在MS SQL服务器中很容易找到它,但是,我无法在Netezza中找到它。

任何帮助都将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

不幸的是,系统不会记录上次在目录元数据中修改表内容的时间。

但是,如果您已打开查询历史记录,则可以从查询历史数据库中挖掘此信息。 $ hist_table_access_ n 表中的USAGE列(其中 n 是您查询历史数据库的版本using)包含有关针对该表执行的操作的信息as documented here

您可以在where子句中使用此列来过滤表更新时的情况,还可以使用FORMAT_TABLE_ACCESS()函数以人类可读的格式as documented here显示USAGE信息。

这是我们在给定表上查找插入,更新,删除和截断的示例。在我的情况下,我的历史数据库称为HISTDB,历史数据在HISTUSER模式中收集。

SELECT FORMAT_TABLE_ACCESS(usage),
   submittime
FROM histdb.histuser."$hist_table_access_3" a
   JOIN histdb.HISTUSER."$hist_query_prolog_3" b
   ON a.NPSID          = b.NPSID
   AND a.NPSINSTANCEID = b.NPSINSTANCEID
   AND a.OPID          = b.OPID
   JOIN histdb.HISTUSER."$hist_query_epilog_3" c
   ON a.NPSID                   = c.NPSID
   AND a.NPSINSTANCEID          = c.NPSINSTANCEID
   AND a.OPID                   = c.OPID
WHERE a.DBNAME                  = 'TESTDB'
AND a.SCHEMANAME                = 'ADMIN'
AND a.TABLENAME                 = 'HIST_TEST'
AND c.STATUS                    = 0
AND a.USAGE & (2 + 4 + 8 + 16) <> 0 ;

 FORMAT_TABLE_ACCESS |         SUBMITTIME
---------------------+----------------------------
 ins                 | 2015-01-21 19:00:10.448681
 del                 | 2015-01-21 19:00:30.094608
 upd                 | 2015-01-21 19:00:49.148814
 ins                 | 2015-01-21 19:00:01.106845
(4 rows)

SELECT MAX(submittime)
FROM histdb.histuser."$hist_table_access_3" a
   JOIN histdb.HISTUSER."$hist_query_prolog_3" b
   ON a.NPSID          = b.NPSID
   AND a.NPSINSTANCEID = b.NPSINSTANCEID
   AND a.OPID          = b.OPID
   JOIN histdb.HISTUSER."$hist_query_epilog_3" c
   ON a.NPSID                   = c.NPSID
   AND a.NPSINSTANCEID          = c.NPSINSTANCEID
   AND a.OPID                   = c.OPID
WHERE a.DBNAME                  = 'TESTDB'
AND a.SCHEMANAME                = 'ADMIN'
AND a.TABLENAME                 = 'HIST_TEST'
AND c.STATUS                    = 0
AND a.USAGE & (2 + 4 + 8 + 16) <> 0 ;

            MAX
----------------------------
 2015-01-21 19:00:49.148814
(1 row)

请注意,这仅适用于已在查询历史数据库中加载的数据,因此根据系统的活动和配置,结果不会是实时的。另请注意,如果您要定期执行此操作,并且性能是一个问题,您可能希望更改where子句以过滤对象ID而不是文本值。