上次访问Netezza表的时间戳?

时间:2015-07-06 20:54:18

标签: sql netezza

有没有人知道一个查询,它提供了上次为任何操作(选择,插入或更新)访问Netezza表的详细信息?

3 个答案:

答案 0 :(得分:2)

根据您的设置,您可能需要尝试以下查询:

 select *
 from _v_qryhist
 where lower(qh_sql) like '%tablename %'

答案 1 :(得分:1)

Netezza不会在目录中跟踪此信息,因此您通常必须从查询历史数据库中挖掘该信息(如果已配置)。

Modern Netezza查询历史信息通常存储在专用数据库中。根据权限,您可以查看是否已启用历史记录收集,以及使用以下命令将其用于哪个数据库。请提前为破屏事包裹道歉。

SYSTEM.ADMIN(ADMIN)=> show history configuration;
 CONFIG_NAME | CONFIG_DBNAME | CONFIG_DBTYPE | CONFIG_TARGETTYPE | CONFIG_LEVEL | CONFIG_HOSTNAME | CONFIG_USER |            CONFIG_PASSWORD            | CONFIG_LOADINTERVAL | CONFIG_LOADMINTHRESHOLD | CONFIG_LOADMAXTHRESHOLD | CONFIG_DISKFULLTHRESHOLD | CONFIG_STORAGELIMIT | CONFIG_LOADRETRY | CONFIG_ENABLEHIST | CONFIG_ENABLESYSTEM | CONFIG_NEXT | CONFIG_CURRENT | CONFIG_VERSION | CONFIG_COLLECTFILTER | CONFIG_KEYSTORE_ID | CONFIG_KEY_ID | KEYSTORE_NAME | KEY_ALIAS | CONFIG_SCHEMANAME | CONFIG_NAME_DELIMITED | CONFIG_DBNAME_DELIMITED | CONFIG_USER_DELIMITED | CONFIG_SCHEMANAME_DELIMITED
-------------+---------------+---------------+-------------------+--------------+-----------------+-------------+---------------------------------------+---------------------+-------------------------+-------------------------+--------------------------+---------------------+------------------+-------------------+---------------------+-------------+----------------+----------------+----------------------+--------------------+---------------+---------------+-----------+-------------------+-----------------------+-------------------------+-----------------------+-----------------------------
 ALL_HIST_V3 | NEWHISTDB     |             1 |                 1 |           20 | localhost       | HISTUSER    | aFkqABhjApzE$flT/vZ7hU0vAflmU2MmPNQ== |                   5 |                       4 |                      20 |                        0 |                 250 |                1 | f                 | f                   | f           | t              |              3 |                    1 |                  0 |             0 |               |           | HISTUSER          | f                     | f                       | f                     | f
(1 row)

还要记下CONFIG_VERSION,因为它在制作以下查询示例时会发挥作用。就我而言,我碰巧使用的是查询历史数据库的第3版格式。

假设已配置历史记录集,并且您可以访问历史记录数据库,则可以从该数据库中的表和视图中获取您要查找的信息。这些是documented here。以下是一个示例,它通过引用“usage”列来报告给定表何时成功插入,更新或删除的目标。在这里,我使用history table helper functions之一解压该列。

SELECT FORMAT_TABLE_ACCESS(usage),
   hq.submittime
FROM "$v_hist_queries" hq
   INNER JOIN "$hist_table_access_3" hta
USING (NPSID, NPSINSTANCEID, OPID, SESSIONID)
WHERE hq.dbname    = 'PROD'
AND hta.schemaname = 'ADMIN'
AND hta.tablename  = 'TEST_1'
AND hq.SUBMITTIME  > '01-01-2015'
AND hq.SUBMITTIME <= '08-06-2015'
AND
   (
      instr(FORMAT_TABLE_ACCESS(usage),'ins') > 0
   OR instr(FORMAT_TABLE_ACCESS(usage),'upd') > 0
   OR instr(FORMAT_TABLE_ACCESS(usage),'del') > 0
   )
AND status=0;

 FORMAT_TABLE_ACCESS |         SUBMITTIME
---------------------+----------------------------
 ins                 | 2015-06-16 18:32:25.728042
 ins                 | 2015-06-16 17:46:14.337105
 ins                 | 2015-06-16 17:47:14.430995
(3 rows)

您需要更改$ v_hist_table_access_3视图末尾的数字,以匹配您的查询历史版本。

答案 2 :(得分:0)

Netezza中有一组code golf应该提供您需要的信息。